Skip to content

Latest commit

 

History

History
98 lines (71 loc) · 4.19 KB

README.md

File metadata and controls

98 lines (71 loc) · 4.19 KB

CrossFit Competition Leaderboard

Project Overview

This project is aimed at building a web application to manage and display the leaderboard for CrossFit competitions. The application will allow administrators to manage multiple competitions, dynamically update scores from different devices, and maintain athlete profiles.

Tech Stack

JavaScript HTML5 CSS3 Bootstrap Next.js React Node.js Express.js MongoDB Git GitHub Jest

Features

  1. User Authentication and Authorization:

    • Users can log in to submit scores.
    • Admin roles for managing competitions and leaderboards.
  2. Multiple Competitions Management:

    • Create, update, and delete different competitions.
    • Separate leaderboards for each competition.
  3. Real-time Score Updates:

    • Display leaderboard on a TV screen.
    • Submit scores from another device (e.g., an iPad).
  4. Athlete Accounts and Tracking:

    • Athlete profiles to track performance across multiple competitions.
    • Athlete portal for personal stats and scores.

General Plan

Phase 1: Setup and Initial Development

  1. Initialize the Project:

    • Set up a new repository on GitHub.
    • Initialize a Next.js project with React.
    • Configure ESLint and Prettier for code quality and consistency.
  2. Setup Authentication:

    • Implement user authentication using Passport.js with JWT.
    • Create login, registration, and dashboard pages.
  3. Database Design:

    • Define schemas for users, competitions, leaderboards, and scores in MongoDB.
    • Set up Mongoose for schema validation and querying.

Phase 2: Core Features Development

  1. Competition Management:

    • Build admin dashboards for creating, updating, and deleting competitions.
    • Develop APIs to manage competition data.
  2. Real-time Score Updates:

    • Implement WebSocket (Socket.io) for real-time communication.
    • Develop a frontend component for live leaderboard updates.
  3. Athlete Profiles:

    • Create user profiles with fields for personal information, competition history, and scores.
    • Develop a user dashboard for athletes to view their stats.

Phase 3: Testing and Deployment

  1. Testing:

    • Write unit tests using Jest for both frontend and backend.
    • Perform integration and end-to-end testing.
  2. Deployment:

    • Containerize the application using Docker.
    • Set up deployment pipelines using GitHub Actions.

Future Enhancements

  • Notifications:

    • Implement real-time notifications for score updates and new competitions.
  • Analytics Dashboard:

    • Add visualizations for performance trends and competition statistics using Chart.js.
  • Offline Capabilities:

    • Use service workers to enable offline functionality.

Contributing

If you'd like to contribute, please fork the repository and use a feature branch. Pull requests are warmly welcome.


Contact

Feel free to reach out if you have any questions or suggestions!