10211CS224 - Full Stack Application Development
A full-stack web application for managing events from creation to ticket delivery. EventPro supports three user roles — Attendees, Organizers, and Admins — each with their own dedicated dashboard and feature set.
- Browse and search published events by category, city, and date
- Book tickets with seat-type selection (e.g. VIP, General, Student)
- View and download personal tickets with unique ticket codes
- Manage bookings and cancel if needed
- Create, edit, and publish events with banner image uploads
- Define multiple seat types with individual pricing
- Track bookings and revenue per event
- Cancel events and manage event lifecycle (Draft → Published → Completed)
- View all users, organizers, and events platform-wide
- Promote users to organizer or admin roles
- Monitor overall platform statistics
| Layer | Technology |
|---|---|
| Runtime | Node.js |
| Framework | Express.js v5 |
| View Engine | EJS (Embedded JavaScript Templates) |
| Database | MySQL 8 via mysql2 |
| Auth | express-session + bcryptjs |
| File Upload | multer |
| IDs | uuid |
| Config | dotenv |
git clone https://github.com/your-username/End-to-end-Event-Lifecycle.git
cd End-to-end-Event-Lifecyclenpm installCreate a .env file in the project root (or rename the existing one):
PORT=3000
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_mysql_password
DB_NAME=event_lifecycle
SESSION_SECRET=your_super_secret_key
NODE_ENV=developmentOpen MySQL Workbench (or any MySQL client) and run the following scripts in order:
- Create tables:
source database/schema.sql- Load sample data (optional):
source database/seed.sqlOr paste the contents of database/schema.sql and database/seed.sql directly into MySQL Workbench and execute.
# Production
npm start
# Development (auto-restart on file changes)
npm run devOpen your browser and navigate to:
http://localhost:3000
After running seed.sql, the following test accounts are available:
| Role | Password | |
|---|---|---|
| Admin | admin@eventpro.com |
admin123 |
| Organizer | organizer@eventpro.com |
org123 |
| Attendee | user@eventpro.com |
user123 |
⚠️ Note: Change all passwords before deploying to production.
| Method | Route | Description |
|---|---|---|
| GET | /events |
Browse all published events |
| GET | /events/:id |
Event detail page |
| POST | /bookings |
Book tickets for an event |
| GET | /tickets |
View my tickets |
| GET | /dashboard |
User / Organizer dashboard |
| GET | /admin |
Admin control panel |
| POST | /auth/register |
Register a new account |
| POST | /auth/login |
Login |
| GET | /auth/logout |
Logout |
- Passwords are hashed with bcryptjs before storage.
- All protected routes use session-based authentication middleware.
- Role-based access control prevents unauthorized access to organizer and admin areas.
- For production: set
cookie.secure: trueand use HTTPS.
