A modern, full-stack event management platform built with Next.js 14 and React 18, featuring real-time updates and interactive features.
-
Frontend:
- Next.js 14
- React 18
- TailwindCSS
- Shadcn UI
- Server-Sent Events (SSE) for real-time updates
-
Backend:
- Next.js API Routes
- Server-Sent Events (SSE)
- MongoDB with Mongoose
- JWT Authentication
- Cloudinary Integration
-
🔐 Advanced Authentication
- JWT-based authentication
- Regular user registration/login
- Guest user access with limited permissions
- Protected routes and API endpoints
-
📅 Event Management
- Create, edit, and delete events
- Rich event details with image upload
- Category-based organization
- Attendee management with capacity limits
- Real-time event updates using SSE
-
⚡ Real-time Features
- Live updates for event changes
- Real-time attendee list updates
- Server-Sent Events for efficient real-time communication
- Instant notifications
-
🎨 Modern UI/UX
- Responsive design
- Dark/light mode support
- Toast notifications
- Loading states and animations
- Form validation
- Interactive date picker
- Node.js >= 18
- MongoDB Atlas Account
- Cloudinary Account
Create a .env.local
file with:
MONGODB_URI=your_mongodb_uri
JWT_SECRET=your_jwt_secret
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
-
Clone the repository:
git clone <repository-url> cd event-management-platform
-
Install dependencies:
npm install --legacy-peer-deps
-
Run the development server:
npm run dev
-
Regular Users
- Full access to all features
- Create and manage events
- Register for events
- Real-time updates
-
Guest Users
- Limited access
- Can view events
- Can register for events
- Cannot create/edit events
-
Authentication
- `POST /api/auth/register` - Register new user
- `POST /api/auth/login` - User login
- `POST /api/auth/guest` - Guest login
-
Events
- `GET /api/events` - List events with filters
- `POST /api/events` - Create event
- `GET /api/events/[id]` - Get event details
- `PUT /api/events/[id]` - Update event
- `DELETE /api/events/[id]` - Delete event
- `POST /api/events/[id]/attend` - Register/unregister attendance