A comprehensive event management platform designed for educational institutions to manage events, workshops, gym sessions, vendor applications, and user engagement through a unified system.
- Features
- Tech Stack
- Project Structure
- Prerequisites
- Installation
- Environment Variables
- Running the Application
- User Roles
- Key Features
- Create and manage various types of events (workshops, bazaars, gym sessions)
- Event registration with QR code generation
- Real-time event updates and notifications
- Event attendance tracking and analytics
- Calendar view for scheduled events
- Vendor booth applications (platform booths and bazaar booths)
- Application review and approval workflow
- Payment processing for approved vendors
- Attendee management for vendor applications
- Document upload and verification (ID images)
- Multi-role support (Admin, Event Office, Student, Professor, Staff, TA)
- User authentication and authorization
- Profile management
- Account blocking/unblocking capabilities
- Company registration requests
- Integrated Stripe payment processing
- Digital wallet for users
- Transaction history
- Refund management
- Fee payment for vendor applications
- Attendee reports with filtering and export
- Sales reports and revenue analytics
- Event performance metrics
- User engagement statistics
- Point-based reward system
- Loyalty program management
- User points tracking
- Real-time notifications using Socket.IO
- Email notifications using Nodemailer
- In-app notification center
- Workshop proposals and approvals
- Gym session booking system
- Court reservation system
- Vendor polling
- Document management with file uploads
- Framework: React 19
- Build Tool: Vite
- Styling: Tailwind CSS
- Routing: React Router DOM v7
- State Management: React Hooks & Context API
- UI Components: Lucide React (icons)
- HTTP Client: Axios
- Real-time: Socket.IO Client
- Maps: React Leaflet, Google Maps
- Payments: Stripe React
- Animations: Lottie React
- Notifications: React Hot Toast, React Toastify
- Date Handling: date-fns, React DatePicker
- Runtime: Node.js
- Framework: Express.js 5
- Database: MongoDB with Mongoose
- Authentication: JWT (jsonwebtoken)
- Password Hashing: bcrypt/bcryptjs
- File Upload: Multer
- Email: Nodemailer
- Payment Processing: Stripe
- Job Queue: Bull with Redis
- Real-time: Socket.IO
- Validation: Joi
- QR Code: qrcode
- Scheduling: node-cron
- Excel Export: xlsx
GitTogether/
├── client/ # Frontend React application
│ ├── src/
│ │ ├── components/ # Reusable React components
│ │ ├── contexts/ # React Context providers
│ │ ├── hooks/ # Custom React hooks
│ │ ├── pages/ # Page components
│ │ ├── lib/ # Utility libraries
│ │ └── App.jsx # Main app component
│ ├── public/ # Static assets
│ └── package.json
│
├── server/ # Backend Node.js application
│ ├── src/
│ │ ├── config/ # Configuration files
│ │ ├── controllers/ # Route controllers
│ │ ├── middleware/ # Custom middleware
│ │ ├── models/ # Mongoose models
│ │ ├── routes/ # API routes
│ │ ├── utils/ # Utility functions
│ │ ├── workers/ # Background job workers
│ │ └── server.js # Main server file
│ └── package.json
│
└── package.json # Root package.json
Before running this project, make sure you have the following installed:
- Node.js (v16 or higher)
- MongoDB (v5 or higher)
- Redis (for job queue management)
- npm or yarn
-
Clone the repository
git clone https://github.com/Advanced-Computer-Lab-2025/GitTogether.git cd GitTogether -
Install root dependencies
npm install
-
Install client dependencies
cd client npm install cd ..
-
Install server dependencies
cd server npm install cd ..
Create a .env file in the server directory with the following variables:
# Server Configuration
PORT=5000
NODE_ENV=development
# Database
MONGODB_URI=mongodb://localhost:27017/gittogether
MONGODB_TEST_URI=mongodb://localhost:27017/gittogether-test
# JWT
JWT_SECRET=your_jwt_secret_key_here
JWT_EXPIRE=7d
# Redis (for job queue)
REDIS_HOST=localhost
REDIS_PORT=6379
# Stripe
STRIPE_SECRET_KEY=your_stripe_secret_key
STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key
# Email Configuration (Nodemailer)
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=your_email@gmail.com
EMAIL_PASSWORD=your_email_app_password
# Google APIs (if using)
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
# Client URL
CLIENT_URL=http://localhost:5173Create a .env file in the client directory:
VITE_API_URL=http://localhost:5000
VITE_STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key
VITE_GOOGLE_MAPS_API_KEY=your_google_maps_api_key-
Start MongoDB
# Using mongod mongod # Or if using MongoDB as a service # It should already be running
-
Start Redis
redis-server
-
Seed Admin Account (First Time Only)
cd server npm run seed:admin cd ..
-
Start the backend server
cd server npm run dev # Server runs on http://localhost:5000
-
Start the frontend (in a new terminal)
cd client npm run dev # Client runs on http://localhost:5173
-
Access the application
- Open your browser and navigate to
http://localhost:5173
- Open your browser and navigate to
-
Build the client
cd client npm run build cd ..
-
Start the server
cd server npm start
The platform supports multiple user roles with different permissions:
- Full system access
- Manage all events and users
- Approve/reject vendor applications
- Manage company registration requests
- Create admin and event office accounts
- Access to all reports and analytics
- Manage loyalty programs
- Create and manage events
- Manage workshops and gym sessions
- Review vendor applications
- Access attendance and sales reports
- Manage vendor polls
- Browse and register for events
- Participate in workshops
- Book gym sessions and courts
- Earn and spend loyalty points
- View personal event history
- Create workshop proposals
- Register for events
- View student attendance
- Access academic event features
- Register for events
- Limited administrative access
- View departmental events
- Similar to student with additional permissions
- Assist in workshop management
- Submit booth applications
- Manage vendor profile
- View application status
- Process payments
- Users can browse upcoming events
- One-click registration with email confirmation
- QR code generation for event check-in
- Waitlist management for full events
- Platform Booths: Permanent booth locations
- Bazaar Booths: Event-specific vendor spaces
- Multi-attendee support with ID verification
- Payment integration after approval
- Application status tracking
- Workshop proposal submission
- Review and approval workflow
- Attendance tracking
- Rating and feedback system
- Schedule gym sessions
- Book sports courts
- Capacity management
- Cancellation and rescheduling
- Earn points for event participation
- Redeem points for rewards
- Tier-based benefits
- Points transaction history
- Attendee Reports: Detailed attendance data with filters
- Sales Reports: Revenue tracking and payment analytics
- Export to Excel/CSV
- Visualization with charts and graphs
- Real-time notifications for:
- Event registration confirmations
- Application status updates
- Payment confirmations
- Event reminders
- System announcements
The backend API follows RESTful conventions. Main endpoints include:
/api/auth- Authentication and authorization/api/users- User management/api/events- Event operations/api/workshops- Workshop management/api/vendor- Vendor applications/api/payments- Payment processing/api/admin- Administrative functions/api/reports- Analytics and reports
- Fork the repository
- Create a 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
This project is part of the Advanced Computer Lab course (2025).
For questions or support, please contact the development team.
GitTogether - Bringing campus events together, one platform at a time.