Event Management System

What is an Event Management System?

An Event Management System is a full-stack MERN web application that allows users to discover and register for events online.

Users can securely create an account, login, view available events, search and filter events, view complete event details, and join events.

Admins can create, update, delete, and manage events and view the users who have registered for each event.

The application uses JWT Authentication to protect user and admin accounts and private APIs.

The system also manages event capacity and available seats, so users can see how many seats are available before joining an event.

Features of Event Management System

User Features

Feature Description
User Registration Create a new account
User Login Login securely using email and password
JWT Authentication Protect user accounts and private APIs
User Dashboard View and manage user activities
View Events View all available events
Search Events Search events by title or keyword
Filter Events Filter events by category, location, etc.
Event Details View complete information about an event
Event Image Display event image
Event Date Display event date
Event Time Display event start and end time
Event Location Display event location
Event Category Display event category
Event Capacity Display maximum number of attendees
Available Seats Display remaining seats
Join Event Register for an available event
My Events View events joined by the user
Event Status Display event status such as Full or Completed
Logout Securely logout from the application


Admin Features

Feature Description
Admin Login Login using an admin account
Admin Dashboard Manage the complete event system
Create Event Create a new event
Update Event Edit existing event information
Delete Event Remove an event
View Events View all created events
Manage Events Manage event information
View Attendees View users registered for an event
Manage Attendees View attendee information
Event Capacity Set maximum number of attendees
Event Status Monitor event availability


Event Management Flow

Admin
   |
   | Create Event
   ↓
Event Created
   |
   ↓
Event Appears on Events Page
   |
   ↓
User Views Event
   |
   ↓
User Opens Event Details
   |
   ↓
User Checks
   |
   ├── Date
   ├── Time
   ├── Location
   ├── Category
   ├── Capacity
   └── Available Seats
   |
   ↓
User Login Required
   |
   ↓
User Logs In / Registers
   |
   ↓
User Clicks "Join Event"
   |
   ↓
Registration Created
   |
   ↓
Available Seats Updated
   |
   ↓
Event Appears in My Events

Technologies Used

Frontend

Technology Purpose
React.js User interface
Vite React development setup
JSX Component structure
CSS Styling and responsive design
Axios API communication
React Router DOM Page navigation
Context API Authentication/user state management
JavaScript Frontend functionality


Backend

Technology Purpose
Node.js JavaScript runtime
Express.js Backend API framework
MongoDB Stores users and events
Mongoose MongoDB connection and schemas
JWT Secure authentication
bcryptjs Password hashing
CORS Frontend-backend communication
dotenv Environment variable management

Event Management System File Structure

Backend Files

backend/
├── server.js
├── .env
├── package.json
│
├── config/
│   └── db.js
│
├── models/
│   ├── User.js
│   └── Event.js
│
├── controllers/
│   ├── authController.js
│   └── eventController.js
│
├── routes/
│   ├── authRoutes.js
│   └── eventRoutes.js
│
└── middleware/
    └── authMiddleware.js


Frontend Files

frontend/
├── src/
│   ├── App.jsx
│   ├── main.jsx
│   │
│   ├── services/
│   │   └── api.js
│   │
│   ├── components/
│   │   ├── Navbar.jsx
│   │   └── EventCard.jsx
│   │
│   ├── context/
│   │   └── AuthContext.jsx
│   │
│   ├── pages/
│   │   ├── Login.jsx
│   │   ├── Register.jsx
│   │   ├── Home.jsx
│   │   ├── Events.jsx
│   │   ├── EventDetails.jsx
│   │   ├── UserDashboard.jsx
│   │   ├── AdminDashboard.jsx
│   │   ├── CreateEvent.jsx
│   │   ├── ManageEvents.jsx
│   │   └── ManageAttendees.jsx
│   │
│   └── styles/
│       ├── global.css
│       ├── login.css
│       ├── register.css
│       ├── home.css
│       ├── events.css
│       ├── EventDetails.css
│       ├── dashboard.css
│       ├── admin.css
│       └── event-form.css
│
├── public/
├── package.json
└── vite.config.js

Backend Installation Commands

Create the backend:

mkdir backend

cd backend

npm init -y


Install required packages:

npm install express mongoose cors dotenv bcryptjs jsonwebtoken


Install Nodemon:

npm install nodemon --save-dev


Create folders:

mkdir models routes controllers middleware config

Frontend Installation Commands

Create the frontend:

mkdir frontend

cd frontend

npm create vite@latest .


Select:

React
JavaScript


Then install packages:

npm install

Install required frontend packages:

npm install axios react-router-dom


Security Features

The Event Management System includes:

  • JWT Authentication
  • Password Hashing using bcryptjs
  • Protected API Routes
  • Authentication Middleware
  • Admin Access Control
  • User Access Control
  • CORS Configuration
  • MongoDB Data Storage
  • Event Capacity Validation
  • Protected Event Registration

Complete Project Architecture

                  EVENT MANAGEMENT SYSTEM
                           |
              ┌────────────┴────────────┐
              ↓                         ↓
          FRONTEND                    BACKEND
              |                         |
          React.js                  Node.js
              |                         |
            Vite                   Express.js
              |                         |
          Axios API                REST API
              |                         |
      React Router DOM            Routes
              |                         |
        Context API             Controllers
              |                         |
              |                  Middleware
              |                         |
              └────────────┬────────────┘
                           ↓
                        MongoDB
                           |
                ┌──────────┴──────────┐
                ↓                     ↓
              Users                 Events
                                       |
                                ┌──────┴──────┐
                                ↓             ↓
                            Attendees      Event Details


Output Screens of Chat Application


























Extra Task: Stripe Payment Integration

Stripe Payment Integration can be added as an extra feature to the Event Management System for paid events.

How it works

User selects an event
        ↓
User selects ticket
        ↓
User clicks "Book / Pay"
        ↓
Stripe Payment Page
        ↓
User enters card details
        ↓
Payment successful
        ↓
Booking is confirmed
        ↓
Ticket/Booking details are saved
        ↓
User can view booking in Dashboard

What we need to add

Backend

  • Stripe package
  • Payment controller
  • Payment route
  • Stripe secret key in .env
  • Payment verification
  • Booking/payment status

Frontend

  • Payment button
  • Checkout page
  • Stripe payment form
  • Payment success page
  • Payment failure message

Simple Example

For a paid event, the user cannot directly join the event.

Instead:

Event → Select Ticket → Pay with Stripe → Payment Successful → Booking Confirmed → Event Joined

For a free event, the existing Join Event flow can remain unchanged.

Important

This is an extra task and is not part of the current version of your Event Management System. It can be added later without changing the main event, user, and admin functionality.

Summary

The Event Management System is a full-stack MERN application that helps users discover and register for events.

Users can:

  • Register
  • Login
  • View events
  • Search events
  • Filter events
  • View event details
  • Check available seats
  • Join events
  • View their joined events
  • Logout

Admins can:

  • Login
  • Create events
  • Update events
  • Delete events
  • Manage events
  • View registered attendees
  • Manage event capacity

The application uses React.js and Vite for the frontend, Node.js and Express.js for the backend, MongoDB and Mongoose for database management, and JWT with bcryptjs for authentication and security.

Previous Topic Chat Application