<<<<<<< HEAD
A comprehensive event management platform built with the MERN stack (MongoDB, Express.js, React, Node.js). This application allows users to create, manage, and book events with a professional and modern interface.
- Browse Events: Search and filter events by category, location, date, and more
- Event Details: View comprehensive event information including venue, pricing, and organizer details
- Booking System: Book tickets with secure payment processing
- User Dashboard: Manage bookings, view event history, and update profile
- Responsive Design: Works seamlessly on desktop, tablet, and mobile devices
- Event Creation: Create and manage events with detailed information
- Dashboard: View event analytics, manage bookings, and track revenue
- Event Management: Edit, update, and manage event details
- Booking Management: Handle attendee check-ins and booking management
- User Management: Manage user accounts, roles, and permissions
- Event Oversight: Monitor all events and manage content
- Analytics: View system-wide statistics and performance metrics
- Category Management: Create and manage event categories
- Node.js - Runtime environment
- Express.js - Web framework
- MongoDB - Database
- Mongoose - ODM for MongoDB
- JWT - Authentication
- bcryptjs - Password hashing
- Express Validator - Input validation
- React 18 - UI library
- TypeScript - Type safety
- Material-UI (MUI) - Component library
- React Router - Client-side routing
- React Hook Form - Form management
- TanStack Query - Data fetching and caching
- Axios - HTTP client
Before running this application, make sure you have the following installed:
- Node.js (v16 or higher)
- MongoDB (v4.4 or higher)
- npm or yarn
git clone <repository-url>
cd event-management-systemnpm installcd client
npm install --legacy-peer-deps
cd ..Create a .env file in the root directory with the following variables:
MONGODB_URI=mongodb://localhost:27017/eventmanagement
JWT_SECRET=your_jwt_secret_key_here
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
STRIPE_SECRET_KEY=your_stripe_secret_key
STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_email_password
NODE_ENV=developmentMake sure MongoDB is running on your system, then seed the database with initial data:
node seedData.js# Start backend server
npm run dev
# In a new terminal, start frontend
npm run client# Build frontend
npm run build
# Start production server
npm startThe application will be available at:
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
The seed data includes demo accounts for testing:
| Role | Password | |
|---|---|---|
| Admin | admin@example.com | admin123 |
| Organizer | organizer@example.com | organizer123 |
| User | user@example.com | user123 |
event-management-system/
โโโ client/ # React frontend
โ โโโ public/
โ โโโ src/
โ โ โโโ components/ # Reusable components
โ โ โโโ contexts/ # React contexts
โ โ โโโ pages/ # Page components
โ โ โโโ services/ # API services
โ โ โโโ types/ # TypeScript types
โ โ โโโ App.tsx
โ โโโ package.json
โโโ models/ # MongoDB models
โโโ routes/ # Express routes
โโโ middleware/ # Custom middleware
โโโ server.js # Main server file
โโโ seedData.js # Database seeding script
โโโ package.json
POST /api/auth/register- User registrationPOST /api/auth/login- User loginGET /api/auth/me- Get current userPUT /api/auth/profile- Update profilePUT /api/auth/change-password- Change password
GET /api/events- Get all events (with filtering)GET /api/events/featured- Get featured eventsGET /api/events/:id- Get single eventPOST /api/events- Create event (Organizer/Admin)PUT /api/events/:id- Update event (Organizer/Admin)DELETE /api/events/:id- Delete event (Organizer/Admin)
GET /api/bookings- Get user's bookingsGET /api/bookings/:id- Get single bookingPOST /api/bookings- Create bookingPUT /api/bookings/:id/confirm- Confirm bookingPUT /api/bookings/:id/cancel- Cancel booking
GET /api/categories- Get all categoriesPOST /api/categories- Create category (Admin)PUT /api/categories/:id- Update category (Admin)DELETE /api/categories/:id- Delete category (Admin)
GET /api/users- Get all users (Admin)GET /api/users/:id- Get user by IDPUT /api/users/:id/role- Update user role (Admin)DELETE /api/users/:id- Delete user (Admin)
- Rich Event Creation: Detailed event forms with venue, pricing, and scheduling
- Image Upload: Support for multiple event images with primary image selection
- Pricing Tiers: Flexible pricing structure with multiple ticket types
- Capacity Management: Track ticket sales and availability
- Event Status: Draft, published, cancelled, and completed states
- Secure Booking: JWT-based authentication for secure transactions
- Payment Integration: Ready for Stripe payment processing
- QR Code Support: Generate QR codes for event check-ins
- Booking Management: View, cancel, and manage bookings
- Attendee Information: Collect and manage attendee details
- Responsive Design: Mobile-first approach with Material-UI
- Search & Filter: Advanced filtering by category, location, date, and price
- Real-time Updates: Live data updates with React Query
- Professional UI: Modern, clean interface with smooth animations
- Accessibility: WCAG compliant components
- Create new routes in the
routes/directory - Add corresponding models in the
models/directory - Create API services in
client/src/services/ - Build UI components in
client/src/components/ - Add new pages in
client/src/pages/
The application uses Material-UI theming. Customize the theme in client/src/App.tsx:
const theme = createTheme({
palette: {
primary: { main: '#1976d2' },
secondary: { main: '#dc004e' },
// ... other theme options
},
});- Create a Heroku app
- Set environment variables in Heroku dashboard
- Connect your GitHub repository
- Deploy the main branch
- Build the React app:
npm run build - Deploy the
client/builddirectory - Set environment variables for API URL
- Create a MongoDB Atlas cluster
- Update
MONGODB_URIin environment variables - Configure network access and database user
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Commit changes:
git commit -am 'Add feature' - Push to branch:
git push origin feature-name - Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue in the GitHub repository
- Check the documentation
- Review the demo accounts for testing
- Real-time notifications
- Advanced analytics dashboard
- Mobile app (React Native)
- Payment gateway integration
- Email marketing integration
- Multi-language support
- Advanced reporting features
- Social media integration
- Event recommendation system
- Advanced search with AI
Built with โค๏ธ using the MERN stack
=======
0c4d50e6c2d73d277e1e5f317a5d4c7ce6d9ed73