Skip to content

Inital Design & Development Plan

Provide a clear, structured roadmap of development milestones, including timeline, design artifacts, and responsibilities.


WeekFocus AreaTasks / Deliverables
1Setup & Design- Set up GitHub repo & CI/CD
- Project scaffolding (React + Node + DB)
- UI wireframes (Figma)
- Architecture diagram
2Authentication- Implement sign-up/login/logout
- Role-based access (admin, user)
- Connect to DB for user storage
3Core Features- Live score input (admin)
- Real-time updates (WebSocket)
- Dashboard for viewers
4Testing & Feedback- Unit & integration tests
- Usability testing session
- Sprint Review demo
- Collect & apply feedback

Tools: GitHub, Notion, Figma, Draw.io, Clerk/Auth0, Firebase, Express.js, React, Jest


  • Wireframes → UI mockups for core pages (Login, Dashboard, Match Input, Viewer)
  • Architecture Diagram → High-level system overview (Frontend ↔ Backend ↔ Firebase)
  • UML Diagrams → Use Case Diagram + Component Diagram

Wireframes


Shows how admins, viewers, and guests interact with the system.

Use Case Diagram

Main Use Cases:

Admin → Add/Edit/Remove Matches, Manage Users, Push Updates

Viewer → View Live Scores, Follow Teams, Receive Notifications


High-level breakdown of frontend, backend, and Firebase integration.

Component Diagram

Components:

  • Pages (Login, Dashboard, Viewer)
  • Reusable Components (MatchCard, ScoreBoard)
  • Talks to backend via REST APIs and WebSockets
  • Auth Service
  • Match Service
  • Database (Firebase)
  • Firestore: Matches, Users, Events

Example: Admin adds a goal → Viewers see it live.

Sequence Diagram


Entities: User, Team, Match, Event, Player.

ER Model


Local dev, Azure hosting, Firebase integration.

Deployment Diagram



  • Displays live match data, timelines, and match setup forms
  • Pages: Login, Dashboard, Preferences
  • Talks to backend via REST APIs and WebSockets
  • Handles API requests from frontend
  • Manages authentication, CRUD for matches, events
  • Pushes live updates via WebSockets
  • Stores matches, events, players, teams, and user preferences

  • POST /auth/login → User login
  • POST /auth/signup → Create new user
  • POST /auth/logout → End session
  • POST /matches → Create new match
  • GET /matches → Get all matches
  • GET /matches/:id → Get single match
  • PUT /matches/:id → Update match info
  • DELETE /matches/:id → Delete match
  • POST /matches/:id/events → Add event (goal, foul, substitution, etc.)
  • PUT /matches/:id/events/:eventId → Edit event
  • DELETE /matches/:id/events/:eventId → Remove event
  • GET /matches/:id/feed → Get current match state
  • GET /matches/:id/timeline → Get chronological list of events
  • GET /users/:id/preferences → Get user preferences
  • PUT /users/:id/preferences → Update preferences

Users

  • user_id (PK)
  • email
  • password_hash
  • favorite_teams

Teams

  • team_id (PK)
  • name
  • logo_url

Players

  • player_id (PK)
  • name
  • team_id (FK)

Matches

  • match_id (PK)
  • home_team_id (FK)
  • away_team_id (FK)
  • start_time
  • venue
  • status (scheduled, live, paused, ended)

Events

  • event_id (PK)
  • match_id (FK)
  • timestamp
  • event_type (goal, foul, substitution, etc.)
  • description
  • team_id (FK, optional)
  • player_id (FK, optional)

  1. LoginPage

    • Inputs: Email, Password
    • Buttons: Sign In, Forgot Password, Sign Up
  2. Dashboard

    • TopNav: Logo, User Profile, Logout button
    • Sidebar: Links to Live Matches, Match Setup, Event Timeline, Preferences
    • Main Area:
      • LiveScoreboard: Teams, logos, score, timer, possession
      • EventTimeline: Vertical list of events
      • MatchControlPanel: Pause/Resume, Add Event form
  3. PreferencesPage

    • Select favorite teams
    • Choose default layout
    • Toggle notifications
  • MatchCard
  • EventItem
  • TeamSelector
  • TimeDisplay
  • FormModal (add/edit matches/events)

  1. Admin/Operator creates a match via /matches
  2. Operator adds live events manually via /matches/:id/events
  3. Backend stores the event in Events table
  4. Backend updates Matches table with new score/time
  5. Frontend fetches state via /matches/:id/feed
  6. WebSocket pushes live updates instantly
  7. Preferences API customizes what each user sees

This guide covers the development process for the Sports Live application.

Mock Data Mode (Recommended for Development)

Terminal window
npm start
  • Uses mock sports data
  • No API costs
  • Fast development

Live Data Mode (For Testing)

Terminal window
npx vercel dev
  • Uses real Football-Data.org API
  • Requires API token setup
  • Live sports data

Create a .env.local file:

Terminal window
REACT_APP_CLERK_PUBLISHABLE_KEY=your_clerk_key
FOOTBALL_API_TOKEN=your_football_api_token

Run the test suite:

Terminal window
npm test

Create production build:

Terminal window
npm run build