EasyEvent is a comprehensive event management platform built with React and Node.js, designed to streamline the process of creating, managing, and attending events.
- System Overview
- Technology Stack
- Architecture
- Installation and Setup
- Key Features
- API Documentation
- Security Features
- Error Handling
- Performance Optimization
- Testing
- Deployment
- Contributing
- Support
- License
EasyEvent supports three user roles:
- Admin: Full system control and user management
- Organizer: Event creation and management
- Attendee: Event participation and enrollment
- React.js 18+ with Vite
- React Router v6
- Axios for API calls
- CSS Modules
- Context API for state management
- JWT for authentication
- Node.js
- Express.js
- MySQL Database
- JWT Authentication
- Bcrypt for password hashing
- Multer for file uploads
โโโ src/
โ โโโ components/ Reusable UI components
โ โโโ contexts/ React context providers
โ โโโ pages/ Page components
โ โโโ services/ API service layers
โ โโโ styles/ CSS and style modules
โ โโโ utils/ Utility functions
โ โโโ assets/ Static files and images
โโโ src/
โ โโโ config/ Configuration files
โ โโโ controllers/ Request handlers
โ โโโ middleware/ Custom middleware
โ โโโ routes/ API routes
โ โโโ services/ Business logic
โ โโโ utils/ Utility functions
- Node.js (v14+)
- MySQL (v8.0+)
- npm or yarn
- git
git clone https://github.com/devops-dtc/eventmanagement.git
cd eventmanagementcd frontend
npm installCreate aย .envย file in the frontend directory:
VITE_API_URL=http://localhost:3000/apicd backend
npm installCreate aย .envย file in the backend directory:
# Server Configuration
PORT=3000
NODE_ENV=development
FRONTEND_URL=http://localhost:5173
# Database Configuration
DB_HOST=localhost
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=easyevent_db
DB_PORT=3306
# JWT Configuration
JWT_SECRET=your_jwt_secret_key
JWT_EXPIRES_IN=24h
CREATE DATABASE easyevent_db;Run the sql queries to create a the Database Schema from backend/src/database/DatabaseSetup.sql
Note
To Populate the Database with Mock Data run the Query file in backend/src/database/MockData.sql
Frontend:
cd frontend
npm run devBackend:
cd backend
npm run dev- Secure JWT-based authentication
- Role-based access control
- Password hashing with bcrypt
- Session management
- Create, read, update, and delete events
- Event categorization
- Image upload functionality
- Event status tracking
- Search and filtering
- User registration and login
- Profile management
- Role assignment
- Account suspension system
- Event registration
- Attendance tracking
- Capacity management
- Waitlist functionality
POST /api/auth/register # Register new user
POST /api/auth/login # User login
POST /api/auth/logout # User logout
GET /api/auth/profile # Get user profile
PUT /api/auth/profile # Update user profileGET /api/events # Get all events
POST /api/events # Create new event
GET /api/events/:id # Get specific event
PUT /api/events/:id # Update event
DELETE /api/events/:id # Delete event
GET /api/events/featured # Get featured events
GET /api/events/categories # Get event categoriesPOST /api/enrollments/:eventId # Enroll in event
GET /api/enrollments/my # Get user enrollments
DELETE /api/enrollments/:id # Cancel enrollment
PUT /api/enrollments/:id/status # Update enrollment statusGET /api/admin/users # Get all users
PUT /api/admin/users/:id # Update user
DELETE /api/admin/users/:id # Delete user- JWT-based authentication
- Role-based access control (RBAC)
- Password hashing using bcrypt
- Token refresh mechanism
- Input validation and sanitization
- XSS protection
- CSRF protection
- SQL injection prevention
- Rate limiting
- CORS configuration
- Secure headers
- Request validation
- Toast notifications for user feedback
- Error boundary implementation
- Form validation feedback
- Loading states
- Standardized error responses
- Error logging
- Custom error classes
- Validation middleware
- Code splitting
- Lazy loading
- Image optimization
- Caching strategies
- Memoization
- Database indexing
- Query optimization
- Connection pooling
- Response caching
- Compression
cd frontend
npm run test # Run unit tests
npm run test:e2e # Run E2E testscd backend
npm run test # Run unit tests
npm run test:integration # Run integration tests- Build the production version:
cd frontend
npm run build- Prepare for production:
cd backend
npm run build- Set up proper environment variables
- Configure database connections
- Set up SSL certificates
- Configure server security
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- GitHub Issues:ย Create an issue
This project is licensed under the MIT License - see theย LICENSEย file for details.
Made with โค๏ธ by the EasyEvent Team
Live Demoย |ย Report Bug

