A comprehensive event management platform built with Node.js/Express backend and React frontend.
- User Authentication: Register and login with JWT tokens
- Role-based Access: Attendee, Organizer, and Admin roles
- Event Management: Create, edit, and manage events
- Event Registration: Register for events with capacity management
- Private Events: Access control with codes and domain restrictions
- Email Notifications: Registration confirmations and reminders
- Search & Filter: Find events by category, type, and text search
- Responsive Design: Mobile-friendly interface with Tailwind CSS
- Node.js & Express.js
- MongoDB with Mongoose
- JWT Authentication
- bcryptjs for password hashing
- Nodemailer for email notifications
- Express Validator for input validation
- Multer for file uploads
- React 18 with TypeScript
- Wouter for routing
- Tailwind CSS for styling
- Axios for API calls
- React Query for state management
- Radix UI components
- Node.js (v16 or higher)
- MongoDB (local or cloud instance)
- npm or yarn package manager
git clone <repository-url>
cd event-management-systemcd server
npm installCreate a .env file in the server directory (copy from .env.example):
NODE_ENV=development
PORT=5000
MONGO_URI=mongodb://localhost:27017/eventhive
JWT_SECRET=your_jwt_secret_key_here_make_it_long_and_secure
EMAIL_USER=[email protected]
EMAIL_PASS=your_email_password_or_app_passwordcd ../client
npm installStart the backend server:
cd server
npm run devStart the frontend (in a new terminal):
cd client
npm run devThe application will be available at:
- Frontend: http://localhost:5173
- Backend API: http://localhost:3001
Register a new user
{
"name": "John Doe",
"email": "[email protected]",
"password": "password123",
"role": "attendee", // "attendee", "organizer", "admin"
"organizationType": "individual", // required if role is "organizer"
"company": "Company Name" // optional
}Login user
{
"email": "[email protected]",
"password": "password123"
}Get current user details (requires Bearer token)
Get all events with optional filtering
Query parameters:
- search: text search in title/description
- category: filter by category
- eventType: "public" or "corporate"
- status: "draft", "published", "cancelled", "completed"
Create new event (protected)
{
"title": "Tech Conference 2024",
"description": "Annual technology conference",
"category": "Technology",
"eventType": "public",
"date": "2024-12-01",
"time": "09:00 AM",
"location": "Convention Center",
"isVirtual": false,
"capacity": 100,
"tags": ["tech", "conference"],
"status": "published",
"accessControl": {
"isPrivate": false,
"accessCode": "CODE123",
"allowedDomains": ["company.com"]
}
}Update event (organizer only)
Delete event (organizer only)
Get organizer's events (protected)
Register for an event (protected)
{
"accessCode": "CODE123" // optional, required for private events
}Cancel registration (protected)
Get user's registrations (protected)
Query parameters:
- status: "confirmed", "cancelled", "waitlist"
Get event attendees (organizer only)
- Register/Login to the platform
- Browse available events
- Search and filter events by category, type, etc.
- Register for events
- View registered events in dashboard
- Cancel registrations if needed
- Register as an organizer
- Create and manage events
- Set event details, capacity, and access controls
- View event attendees
- Edit or delete events
- Monitor registration counts
MONGO_URI- MongoDB connection stringJWT_SECRET- Secret key for JWT tokensPORT- Server port (default: 3001)EMAIL_USER- Email address for notificationsEMAIL_PASS- Email password/app password
cd server
npm run dev # Uses nodemon for auto-restartcd client
npm run dev # Vite dev server with hot reloadMake sure MongoDB is running locally or update the MONGO_URI to point to your MongoDB instance.
cd server
npm startcd client
npm run build
npm run preview- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
MIT License - see LICENSE file for details