ποΈ SportsPlex - University Sports Complex Management System
SportsPlex is a comprehensive sports complex management system designed for university campuses (specifically CHARUSAT). It provides a complete solution for managing sports equipment, clubs, matches, events, and announcements with role-based access control.
User Authentication - Email/Password and Google Sign-In with Firebase
Role-Based Access Control - Three user roles: Student, Student Head, Admin
Equipment Management - Track, allocate, and request sports equipment
Club Management - Create and manage sports clubs with member tracking
Match Management - Schedule matches with live scoring functionality
Event Management - Create and manage sports events and tournaments
Announcements - Broadcast important updates to users
Profile Management - User profiles with certificate uploads
π₯ Role-Specific Features
View and request sports equipment
Browse and join sports clubs
View upcoming matches and events
Access announcements
Request Student Head role promotion
All student features
Manage club activities
Update live match scores
Create club-specific announcements
Full system access
User management and role assignment
Equipment inventory management
Approve/reject student head requests
Create and manage all clubs, matches, and events
System-wide announcements
Analytics dashboard
Technology
Purpose
React 19
UI Framework
React Router DOM 7
Navigation
Material UI
Component Library
Tailwind CSS
Styling
Axios
HTTP Client
Firebase
Authentication
Lucide React
Icons
React Hook Form + Zod
Form Handling & Validation
Frontend (Mobile - Flutter)
Technology
Purpose
Flutter 3.8+
Cross-platform Mobile Framework
HTTP
API Requests
Table Calendar
Calendar Widget
Font Awesome
Icons
Technology
Purpose
Express 5
Web Framework
MongoDB Atlas
Database
Mongoose
ODM
JWT
Authentication
Bcrypt.js
Password Hashing
Multer
File Uploads
Firebase Admin
Google Auth Verification
SportsPlex2/
βββ π backend/ # Node.js Express Backend
β βββ π controllers/ # Request handlers
β β βββ announcementController.js
β β βββ authController.js
β β βββ equipmentController.js
β β βββ matchController.js
β βββ π middleware/ # Express middleware
β β βββ authMiddleware.js
β β βββ equipmentUpload.js
β βββ π models/ # Mongoose schemas
β β βββ announcement.js
β β βββ club.js
β β βββ equipment.js
β β βββ event.js
β β βββ match.js
β β βββ user.js
β βββ π routes/ # API routes
β βββ π services/ # Business logic
β βββ π uploads/ # File storage
β βββ server.js # Entry point
β
βββ π src/ # React Web Frontend
β βββ π components/ # Reusable components
β β βββ π Bookings/
β β βββ π Layout/
β β βββ π Matches/
β β βββ π Modals/
β β βββ π StudentHead/
β βββ π pages/ # Page components
β β βββ AdminDashboard.js
β β βββ UserDashboard.js
β β βββ Login.js
β β βββ Register.js
β β βββ ... (40+ pages)
β βββ π context/ # React Context
β βββ π services/ # API services
β βββ π hooks/ # Custom hooks
β
βββ π sportsplex/ # Flutter Mobile App
β βββ π lib/ # Dart source files
β β βββ main.dart
β β βββ AdminDashboard.dart
β β βββ StudentDashboard.dart
β β βββ ... (20+ screens)
β βββ π android/ # Android config
β βββ π ios/ # iOS config
β βββ π assets/ # Images & icons
β
βββ π Firebase/ # Firebase configuration
βββ π public/ # Static assets
Node.js 18+
npm or yarn
MongoDB Atlas account
Firebase project
Flutter SDK (for mobile app)
# Navigate to backend directory
cd backend
# Install dependencies
npm install
# Start the server
node server.js
The backend will run on http://localhost:5000
Frontend (React Web) Setup
# From project root
npm install
# Start development server
npm start
The web app will run on http://localhost:3000
Mobile App (Flutter) Setup
# Navigate to Flutter directory
cd sportsplex
# Get dependencies
flutter pub get
# Run on connected device/emulator
flutter run
Register - Create an account with email or Google Sign-In
Complete Profile - Fill in required details (Roll No, College, Department)
Explore - Browse equipment, clubs, matches, and events
Request Equipment - Submit equipment requests for approval
Join Clubs - Become a member of sports clubs
Admins can:
Access the admin dashboard at /admin
Manage all system resources
Approve pending requests
View analytics
Method
Endpoint
Description
POST
/api/auth/register
Register new user
POST
/api/auth/login
User login
POST
/api/auth/google
Google Sign-In
Method
Endpoint
Description
GET
/api/equipment
Get all equipment
POST
/api/equipment
Add equipment (Admin)
PUT
/api/equipment/:id
Update equipment
DELETE
/api/equipment/:id
Delete equipment
Method
Endpoint
Description
GET
/api/clubs
Get all clubs
POST
/api/clubs
Create club (Admin)
PUT
/api/clubs/:id
Update club
POST
/api/clubs/:id/join
Join club
Method
Endpoint
Description
GET
/api/matches
Get all matches
POST
/api/matches
Create match
PUT
/api/matches/:id/score
Update live score
Method
Endpoint
Description
GET
/api/events
Get all events
POST
/api/events
Create event
Method
Endpoint
Description
GET
/api/announcements
Get announcements
POST
/api/announcements
Create announcement
Role
Permissions
Student
View equipment, clubs, matches, events; Request equipment; Join clubs; Request Student Head role
Student Head
All student permissions + Manage club activities; Update live scores; Create club announcements
Admin
Full system access; User management; All CRUD operations; Analytics access
π§ Environment Variables
Create a .env file in the backend directory:
MONGODB_URI = your_mongodb_connection_string
JWT_SECRET = your_jwt_secret
FIREBASE_PROJECT_ID = your_firebase_project_id
PORT = 5000
Login/Register - Authentication with email or Google
User Dashboard - Quick access to all features
Admin Dashboard - System overview with statistics
Equipment Management - Inventory tracking
Club Management - Club creation and member management
Match Center - Live scoring and match schedules
Events Calendar - Upcoming sports events
Announcements - Important updates feed
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
This project is developed for educational purposes as part of a university semester project.
Ansh Gajera - Developer
Yash Khare - Developer
CHARUSAT University for project guidance
Firebase for authentication services
MongoDB Atlas for database hosting
Made with β€οΈ for CHARUSAT Sports Complex