Information management system for the Event Department of Coc Sai Gon Communications Club (CSG).
Event Department Web is a comprehensive web application for managing Event Department operations at CSG. It provides tools for vendor management, member management, inventory tracking, event guidance, and other internal utilities.
- Two login roles:
- Admin: requires password
eventleader - Member: no password required
- Admin: requires password
- Route protection based on user role
- System overview
- Quick access to important stats and data
- Manage vendor directory
- Create, update, and delete vendor records
- Search and filter vendors
- Manage Event Department members
- Import member lists from Excel
- Track member scores by semester
- View member history and statistics
- Manage event inventory
- Import data from CSV/XLSX
- Search and filter by type and item
- Track available quantities
- Inventory CRUD (Admin only)
- Firestore synchronization
- Event operations handbook
- Guides for Planning, Event Production, and Paperwork teams
- Templates and checklists
- Linked documentation resources
- Lookup business tax IDs
- Validate company information
- Background removal tool for images
- Fast image processing workflow
- Download YouTube and Facebook videos as MP4 or MP3
- Quality selection (up to 4K)
- Fallback to Invidious API when yt-dlp fails
- Supports cookie authentication for YouTube bot-check bypass
- Stage lighting layout designer
- Export to MagicQ and grandMA3 CSV formats
- Push patch data to MagicQ via UDP
- React 18.2.0 - UI framework
- Material-UI (MUI) 5.14.18 - Component library
- Ant Design - Additional UI components
- React Router 6.20.0 - Routing
- Framer Motion - Animations
- XLSX - Excel file processing
- Express.js - API server
- yt-dlp - YouTube/Facebook video downloading
- ffmpeg - Audio/video merging and re-encoding
- MagicQ UDP - Push lighting patch data to ChamSys MagicQ
- Firebase/Firestore - Database and backend services
- @xenova/transformers - AI/ML processing
- docxtemplater - Word document generation
- React Scripts 5.0.1
- ESLint
- cross-env
- concurrently
- Node.js 14+
- npm or yarn
-
Clone the repository
git clone <repository-url> cd EventDepartmentWeb
-
Install dependencies
npm install
-
Configure Firebase
- See
FIREBASE_SETUP.mdfor setup instructions - Create
src/backend/firebase/config.jswith your Firebase project credentials
- See
-
Run the application
# Run frontend + backend together (recommended) npm run dev # Run frontend only npm start # Unix/Mac frontend start npm run start:unix
-
Build for production
npm run build
- Select Admin on the login page
- Enter password:
eventleader - Full access to all features (including member management)
- Select Member on the login page
- No password required
- Access to non-admin features only
src/
βββ frontend/
β βββ components/ # React components
β β βββ Common/ # Shared components
β β βββ Layout/ # Layout components
β β βββ Vendor/ # Vendor-related components
β β βββ Weather/ # Weather widget
β βββ contexts/ # React contexts (Auth)
β βββ pages/ # Page components
β βββ styles/ # Global styles
β βββ theme/ # Theme configuration
βββ backend/
β βββ firebase/ # Firebase configuration
β βββ services/ # Service layer
βββ image/ # Static images
| Route | Page | Access |
|---|---|---|
/ |
Dashboard | All users |
/vendors |
Vendor Management | All users |
/inventory |
Inventory | All users |
/members |
Members Management | Admin only |
/members/import |
Import Members | Admin only |
/members/:semester |
Member Scores | Admin only |
/event-guide |
Event Guide | All users |
/tax-lookup |
Tax Lookup | All users |
/remove-bg |
Remove Background | All users |
/login |
Login | Public |
npm run dev- Run frontend (3000) and backend API (3002) togethernpm start- Start frontend dev server (Windows)npm run start:frontend- Start frontend (auto-reuses existing instance on port 3000)npm run start:backend- Start backend API server (auto-reuses existing instance on port 3002)npm run start:unix- Start frontend dev server (Unix/Mac)npm run build- Build for productionnpm test- Run tests
- Admin password is hardcoded for development/demo use only
- Admin routes are protected by
AdminProtectedRoute - Auth state is managed by
AuthContext
- The app uses Firebase Firestore as its primary database
- Firebase must be configured before running the app
- Some features require admin role
- CSV/XLSX import files must follow the expected format
The backend uses yt-dlp + ffmpeg for video downloading. On cloud deployments (Railway, etc.), YouTube often blocks datacenter IPs with a bot-check. To bypass this:
Configure one of these environment variables:
| Variable | Description |
|---|---|
YTDLP_COOKIES_CONTENT |
Full cookies.txt content (Netscape format) |
YTDLP_COOKIES_B64 |
Base64-encoded cookies.txt content |
YTDLP_COOKIES_PATH |
Absolute path to cookies.txt on the server |
YTDLP_COOKIES_FROM_BROWSER |
Browser names, e.g. chrome,edge,firefox (local only) |
How to get cookies: Install Get cookies.txt LOCALLY, visit youtube.com while logged in, export cookies for
youtube.comonly, and paste the content intoYTDLP_COOKIES_CONTENT.
When yt-dlp fails, the server falls back to public Invidious instances for video info and streaming. The instance list is maintained in server/server.js.
- Copy
server/.env.exampletoserver/.env.local - Keep
YTDLP_COOKIES_FROM_BROWSER=chrome,edge,firefoxor set your own value - Run
npm run dev, backend auto-loadsserver/.env.local
This project belongs to Coc Sai Gon Media Club (CSG). Suggestions and contributions are welcome.
Private project - All rights reserved
Version: 1.0.0
Maintained by: Event Department - CSG