Home

Event Registration System API

A robust backend API for a full-featured event registration platform. This system allows administrators to manage events and enables users to register for them, with secure authentication and role-based access control.

Features ✨

  • User Authentication: Secure user registration and login system using JSON Web Tokens (JWT).
  • Password Hashing: Passwords are encrypted using bcrypt.js before being stored.
  • Role-Based Access Control: Differentiates between regular users and admins to protect sensitive routes.
  • Event Management (Admin): Admins have full CRUD (Create, Read, Update, Delete) capabilities for events.
  • Event Discovery (Public): Anyone can view a list of all available events and see the details for a specific event.
  • User Registration: Authenticated users can register for events and cancel their registrations.
  • Personalized Dashboard: Users can view a list of all events they have registered for.
  • Scalable Architecture: Organized into a clean structure of models, views, and controllers for easy maintenance.

Tech Stack 💻

  • Backend: Node.js, Express.js
  • Database: MongoDB with Mongoose ODM
  • Authentication: JSON Web Tokens (JWT)
  • Password Hashing: bcrypt.js
  • Environment Variables: Dotenv

API Endpoints 📍

The base URL for all endpoints is /api. All Private and Admin routes require a Bearer Token in the Authorization header.

Authentication Routes

HTTP Method Endpoint Access Description
POST /users/register Public Register a new user.
POST /users/login Public Log in a user to get a token.

Event Routes

HTTP Method Endpoint Access Description
GET /events Public Get a list of all events.
POST /events Private/Admin Create a new event.
GET /events/:id Public Get details of a single event.
PUT /events/:id Private/Admin Update an existing event.
DELETE /events/:id Private/Admin Delete an event.

Registration Routes

HTTP Method Endpoint Access Description
POST /registrations/events/:eventId/register Private Register the logged-in user for an event.
GET /registrations/my Private Get all registrations for the logged-in user.
DELETE /registrations/:id Private Cancel a specific registration by its ID.

app.js

Sets up the Express server, connects to the database, configures middleware, and mounts the application routes.

Source:

Requires

  • module:express
  • module:dotenv
  • module:cors
  • module:./config/db
  • module:./routes/userRoutes
  • module:./routes/eventRoutes
  • module:./routes/registrationRoutes