EventPulse is a robust, production-ready Event Registration and Management System. Designed with a secure Node.js & Express REST API backend and a lightweight, dynamic vanilla JavaScript frontend, EventPulse provides organizers and attendees with a seamless workflow for discovering, hosting, reviewing, and registering for premium events.
Experience the live application deployed on Render:
๐ EventPulse Live Demo
- Role-Based Access Control (RBAC): Distinct permissions for
user,organizer, andadminroles. - Secure Authentication: JWT-based stateless authentication with password hashing powered by
bcrypt. - Profile Customization: Support for user avatars, phone numbers, and profile details.
- Full CRUD Operations: Organizers can create, edit, publish, and delete events.
- Lifecycle States: Events transition smoothly through
draft,published,cancelled, andcompletedstates. - Categorization: Events are grouped dynamically under specific categories (e.g., Tech, Music, Business).
- Capacity Tracking: Real-time seat availability tracking to prevent overbooking.
- One-Click Registrations: Attendees can register for events and receive unique ticket codes.
- Status Tracking: Ticket lifecycle states including
pending,confirmed,cancelled, andattended. - Flexible Payments: Support for tracking
free,paid, andrefundedtransactions.
- Event Reviews & Ratings: Registered attendees can rate events (1-5 stars) and write comments.
- Notification System: Instant alerts for registrations, reminders, event cancellations, and reviews.
- Runtime Environment: Node.js (v18+)
- Framework: Express.js (v5)
- ORM: Sequelize (v6)
- Database: PostgreSQL (Production/Config), SQLite (Local/Development testing)
- Security: Helmet, Express Rate Limit (DDoS mitigation), CORS middleware
- Markup & Structure: Semantic HTML5
- Styling: Vanilla CSS (Glassmorphism design, responsive layouts)
- Client-side Logic: Vanilla JavaScript (ES6 Fetch API)
CodeAlpha_EventRegistrationSystem/
โโโ public/ # Static assets served by Express
โ โโโ css/
โ โ โโโ style.css # Core design system & modern UI styling
โ โโโ js/
โ โโโ auth.js # Authentication helpers
โ โโโ dashboard.js # Attendee & Organizer dashboard actions
โ โโโ event-details.js# Single event interactions & reviews
โ โโโ events.js # Event listing and category filtering
โ โโโ main.js # Core fetch wrappers & navigation controller
โโโ src/ # Backend application source code
โ โโโ config/
โ โ โโโ database.js # Sequelize database connection setup
โ โ โโโ seed.js # Database seeding script (default categories & test data)
โ โโโ controllers/ # Business logic for all modules
โ โ โโโ authController.js
โ โ โโโ eventController.js
โ โ โโโ notificationController.js
โ โ โโโ registrationController.js
โ โ โโโ reviewController.js
โ โโโ middleware/ # Custom Express middlewares
โ โ โโโ auth.js # JWT verification & user session payload injector
โ โ โโโ validation/ # Request body and parameter schema validator
โ โ โโโ helpers.js # Validation utility helpers
โ โ โโโ index.js # Validation middleware initialization
โ โ โโโ schemas.js # Joi/custom schemas for API requests
โ โโโ models/ # Sequelize database schemas & associations
โ โ โโโ index.js
โ โ โโโ Category.js
โ โ โโโ Event.js
โ โ โโโ Notification.js
โ โ โโโ Registration.js
โ โ โโโ Review.js
โ โ โโโ User.js
โ โโโ routes/ # RESTful API route endpoints
โ โ โโโ auth.js
โ โ โโโ events.js
โ โ โโโ notifications.js
โ โ โโโ registrations.js
โ โ โโโ reviews.js
โ โโโ app.js # Express app setup & middleware stacking
โ โโโ server.js # Server listener & database synchronization
โโโ views/ # Static frontend page templates
โ โโโ admin.html # Organizer/Admin management view
โ โโโ dashboard.html # Attendee personalized space
โ โโโ event-details.html # Event details, reviews, and sign-ups
โ โโโ events.html # Browse & filter published events
โ โโโ index.html # Landing page
โ โโโ login.html # User login
โ โโโ register.html # User registration
โโโ .env.example # Sample configuration file
โโโ database.sqlite # Local development SQLite database
โโโ package.json # Scripts & project dependencies
โโโ test_api.js # API test automation script
Ensure you have the following installed on your local machine:
- Node.js (v18 or higher)
- npm (bundled with Node.js)
- PostgreSQL (or use the SQLite file for quick local testing)
-
Clone the Repository
git clone https://github.com/mohammedabusamra04/CodeAlpha_EventRegistrationSystem.git cd CodeAlpha_EventRegistrationSystem -
Install Dependencies
npm install -
Configure Environment Variables
Duplicate.env.exampleto create a.envfile:Opencp .env.example .env.envand fill in your credentials:PORT=5000 DB_HOST=localhost DB_PORT=5432 DB_USER=your_db_user DB_PASSWORD=your_db_password DB_NAME=event_registration_db JWT_SECRET=your_jwt_secret_key JWT_EXPIRES_IN=1d
-
Start in Development Mode (with automatic reload):
npm run dev -
Start in Production Mode:
npm start
Once running, access the landing page at: http://localhost:5000
The REST API exposes the following endpoints (all requests/responses use JSON format):
๐ Authentication Endpoints (/api/auth)
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
POST |
/register |
Register a new user account | โ |
POST |
/login |
Authenticate user and return a JWT | โ |
๐
Event Endpoints (/api/events)
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
POST |
/ |
Create a new event | ๐ (Admin/Organizer) |
GET |
/ |
Retrieve list of all events | โ |
GET |
/:id |
Retrieve details of a single event | โ |
PUT |
/:id |
Update an existing event | ๐ (Admin/Organizer) |
DELETE |
/:id |
Delete/cancel an event | ๐ (Admin/Organizer) |
๐๏ธ Registration Endpoints (/api/registrations)
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
POST |
/:eventId |
Register current user for an event | ๐ |
GET |
/ |
Get current user's registrations | ๐ |
DELETE |
/:id |
Cancel a registration | ๐ |
๐ฌ Review Endpoints (/api/reviews)
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
POST |
/:eventId |
Submit rating & review for an event | ๐ |
GET |
/:eventId |
Get all reviews for an event | โ |
DELETE |
/:id |
Delete a review | ๐ |
๐ Notification Endpoints (/api/notifications)
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
GET |
/user |
Get all notifications for current user | ๐ |
PATCH |
/mark-as-read/:id |
Mark notification as read | ๐ |
GET |
/event/:eventId |
Get notifications for a specific event | ๐ |
- Helmet.js is integrated to set secure HTTP headers and protect the application from common web vulnerabilities.
- Express Rate Limit protects the API from brute-force attempts and DDoS attacks by limiting requests to
100per 15-minute window per IP. - ORM Protection: Database interactions are mediated through Sequelize, preventing SQL injection vulnerabilities.
- Payment Integration: Implement Stripe or PayPal SDKs for paid event ticket purchases.
- Interactive Seating Charts: Allow organizers to define maps and users to select seats.
- PDF Ticket Generator: Auto-email a styled PDF ticket with a QR code upon registration.
- WebSockets Integration: Live notifications for event changes or seat availability counts.