This project is a web application for managing and tracking Yale's intramural sports events. The app provides users with features such as viewing profiles, checking leaderboards, accessing scores, and reviewing game schedules. It is built with a modern tech stack to ensure ease of use, scalability, and maintainability.
- Frontend: Next.js, React, Tailwind CSS
- Backend: Express.js, Firebase Firestore, Firebase Cloud Functions
- Authentication: Yale CAS Login
- Database: Firebase Firestore
- Deployment:
- Profile Pages: View personal profiles with information such as netid, name, college, role (player, referee, secretary, or admin), and personal points.
- Leaderboard: Check the overall rankings and points of colleges participating in intramural sports.
- Scores: View detailed scores and match results, with a filterable table highlighting winners, losers, and tied games.
- Schedule: See upcoming and past matches in both list and calendar views, with options to sign up for games.
- Node.js (v16+)
- Firebase account
- Yale CAS setup for authentication
-
Clone the repository:
git clone https://github.com/your-username/YaleComputerSociety/yaleims.git cd backend
-
Install the dependencies:
npm install
-
Set up Firebase:
- Create a Firebase project and enable Firestore.
- Add your Firebase credentials in a
.env
file:FIREBASE_API_KEY=your_firebase_api_key FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain FIREBASE_PROJECT_ID=your_project_id
-
Start the backend server:
- Then, start the backend server:
npm run start
- Then, start the backend server:
-
Navigate to the frontend folder:
cd ../frontend
-
Install the dependencies:
npm install
-
Set up environment variables in
.env.local
for the frontend (you can skip this for now!):NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
-
Run the development server:
npm run dev
- Users can log in via Yale CAS.
- Once logged in, users can view their profile, check their college's leaderboard standings, and browse match schedules and results.
- Admins, secretaries, and referees can score matches and manage data related to intramural sports.
- Anna Xu ('24.5)
- Daniel Morales ('27)
- Ephraim Akai-Nettey ('27)
- Kaitlyn Oikle ('27)
- Sam Meddin ('27)