Skip to content

Repository files navigation

GitTogether

A comprehensive event management platform designed for educational institutions to manage events, workshops, gym sessions, vendor applications, and user engagement through a unified system.

Table of Contents

Features

Event Management

  • 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 Management

  • 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)

User Management

  • Multi-role support (Admin, Event Office, Student, Professor, Staff, TA)
  • User authentication and authorization
  • Profile management
  • Account blocking/unblocking capabilities
  • Company registration requests

Payment & Wallet System

  • Integrated Stripe payment processing
  • Digital wallet for users
  • Transaction history
  • Refund management
  • Fee payment for vendor applications

Analytics & Reports

  • Attendee reports with filtering and export
  • Sales reports and revenue analytics
  • Event performance metrics
  • User engagement statistics

Loyalty Programs

  • Point-based reward system
  • Loyalty program management
  • User points tracking

Notifications

  • Real-time notifications using Socket.IO
  • Email notifications using Nodemailer
  • In-app notification center

Additional Features

  • Workshop proposals and approvals
  • Gym session booking system
  • Court reservation system
  • Vendor polling
  • Document management with file uploads

Tech Stack

Frontend

  • 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

Backend

  • 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

Project Structure

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

Prerequisites

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

Installation

  1. Clone the repository

    git clone https://github.com/Advanced-Computer-Lab-2025/GitTogether.git
    cd GitTogether
  2. Install root dependencies

    npm install
  3. Install client dependencies

    cd client
    npm install
    cd ..
  4. Install server dependencies

    cd server
    npm install
    cd ..

Environment Variables

Server Environment Variables

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:5173

Client Environment Variables

Create 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

Running the Application

Development Mode

  1. Start MongoDB

    # Using mongod
    mongod
    
    # Or if using MongoDB as a service
    # It should already be running
  2. Start Redis

    redis-server
  3. Seed Admin Account (First Time Only)

    cd server
    npm run seed:admin
    cd ..
  4. Start the backend server

    cd server
    npm run dev
    # Server runs on http://localhost:5000
  5. Start the frontend (in a new terminal)

    cd client
    npm run dev
    # Client runs on http://localhost:5173
  6. Access the application

    • Open your browser and navigate to http://localhost:5173

Production Mode

  1. Build the client

    cd client
    npm run build
    cd ..
  2. Start the server

    cd server
    npm start

User Roles

The platform supports multiple user roles with different permissions:

1. Admin

  • 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

2. Event Office

  • Create and manage events
  • Manage workshops and gym sessions
  • Review vendor applications
  • Access attendance and sales reports
  • Manage vendor polls

3. Student

  • Browse and register for events
  • Participate in workshops
  • Book gym sessions and courts
  • Earn and spend loyalty points
  • View personal event history

4. Professor

  • Create workshop proposals
  • Register for events
  • View student attendance
  • Access academic event features

5. Staff

  • Register for events
  • Limited administrative access
  • View departmental events

6. TA (Teaching Assistant)

  • Similar to student with additional permissions
  • Assist in workshop management

7. Vendor

  • Submit booth applications
  • Manage vendor profile
  • View application status
  • Process payments

Key Features

Event Registration

  • Users can browse upcoming events
  • One-click registration with email confirmation
  • QR code generation for event check-in
  • Waitlist management for full events

Vendor Application System

  • 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 Management

  • Workshop proposal submission
  • Review and approval workflow
  • Attendance tracking
  • Rating and feedback system

Gym & Court Booking

  • Schedule gym sessions
  • Book sports courts
  • Capacity management
  • Cancellation and rescheduling

Loyalty Program

  • Earn points for event participation
  • Redeem points for rewards
  • Tier-based benefits
  • Points transaction history

Reports & Analytics

  • Attendee Reports: Detailed attendance data with filters
  • Sales Reports: Revenue tracking and payment analytics
  • Export to Excel/CSV
  • Visualization with charts and graphs

Notification System

  • Real-time notifications for:
    • Event registration confirmations
    • Application status updates
    • Payment confirmations
    • Event reminders
    • System announcements

API Documentation

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

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

This project is part of the Advanced Computer Lab course (2025).

Contact

For questions or support, please contact the development team.


GitTogether - Bringing campus events together, one platform at a time.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages