# kstruck/mmpoolsv3 architecture

> Architecture diagram of the GitHub repository kstruck/mmpoolsv3, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kstruck/mmpoolsv3
- Repository: https://github.com/kstruck/mmpoolsv3
- Video tour (about a minute): https://gitdiagram.com/kstruck/mmpoolsv3/video

## Overview

MMPoolsV3 is a Firebase-backed sports pool platform. Users enter through the React app, create or join a pool, submit picks or entries, then follow standings and payouts; commissioners configure rules and manage participants. The main product branches are NFL season pools, college brackets and playoff challenges, Squares, and prop bets, with shared account, billing, and administration capabilities. README claims establish the product stages and automated NFL scoring behavior; sampled files provide only selective implementation evidence, so uncertain frontend-to-backend wiring is omitted.

Main entry points: [`functions/src`](https://github.com/kstruck/mmpoolsv3/tree/main/functions/src) (Score and Lock Jobs), [`src/App.tsx`](https://github.com/kstruck/mmpoolsv3/blob/main/src/App.tsx) (Web App and Routes), [`src/components/PlayoffPool/PlayoffResultsManager.tsx`](https://github.com/kstruck/mmpoolsv3/blob/main/src/components/PlayoffPool/PlayoffResultsManager.tsx) (Global Playoff Results), [`src/services/authService.ts`](https://github.com/kstruck/mmpoolsv3/blob/main/src/services/authService.ts) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App and Accounts"]
  node_app["Web App and Routes<br/>[App.tsx]"]
  node_auth["Authentication<br/>[authService.ts]"]
  node_userstore[("User Records")]
end

subgraph group_pool["Pool Experiences"]
  node_wizard["Pool Setup Wizard"]
  node_join["Browse and Join<br/>[JoinPool.tsx]"]
  node_nfl["NFL Pools"]
  node_bracket["Bracket Pools"]
  node_playoff["Playoff Challenge"]
  node_squares["Squares Pools<br/>[Grid.tsx]"]
  node_props["Prop Bets<br/>[PropsManager.tsx]"]
  node_manager["Manager Dashboard"]
end

subgraph group_scoring["Scoring and Results"]
  node_nflengine["NFL Scoring Engine"]
  node_scorejobs["Score and Lock Jobs"]
  node_feed[("Feed Replay and Snapshots")]
  node_standings["Standings and Awards<br/>[NFLStandings.tsx]"]
end

subgraph group_operations["Platform Operations"]
  node_tourneyadmin["Tournament Management"]
  node_playoffresults["Global Playoff Results"]
  node_admin["Admin Operations<br/>[AdminPanel.tsx]"]
  node_billing["Billing and Quotes<br/>[quoteEngine.ts]"]
end

node_user(("Player or Commissioner"))
node_firebase[("Firebase Services<br/>[firebase.ts]")]
node_espn["ESPN Feeds"]

node_user -->|"uses"| node_app
node_app -->|"authenticates"| node_auth
node_auth -->|"reads and writes"| node_userstore
node_wizard -->|"configures pools"| node_user
node_user -->|"joins pools"| node_join
node_user -->|"submits picks"| node_nfl
node_user -->|"fills brackets"| node_bracket
node_user -->|"ranks teams"| node_playoff
node_user -->|"claims squares"| node_squares
node_user -->|"enters picks"| node_props
node_user -->|"manages pools"| node_manager
node_scorejobs -->|"grades picks"| node_nflengine
node_scorejobs -->|"records snapshots"| node_feed
node_espn -.->|"supplies scores"| node_scorejobs
node_nflengine -->|"produces scoring"| node_standings
node_tourneyadmin -.->|"imports tournament data"| node_espn
node_playoffresults -->|"reads results"| node_firebase
node_playoffresults -->|"calls updateGlobalPlayoffResults"| node_app
node_admin -->|"administers pools"| node_manager
node_billing -->|"quotes pool pricing"| node_user

click node_app "https://github.com/kstruck/mmpoolsv3/blob/main/src/App.tsx"
click node_auth "https://github.com/kstruck/mmpoolsv3/blob/main/src/services/authService.ts"
click node_wizard "https://github.com/kstruck/mmpoolsv3/tree/main/src/components/wizard"
click node_join "https://github.com/kstruck/mmpoolsv3/blob/main/src/components/JoinPool.tsx"
click node_nfl "https://github.com/kstruck/mmpoolsv3/tree/main/src/components/NFLPoolDashboard"
click node_bracket "https://github.com/kstruck/mmpoolsv3/tree/main/src/components/BracketPoolDashboard"
click node_playoff "https://github.com/kstruck/mmpoolsv3/tree/main/src/components/PlayoffPool"
click node_squares "https://github.com/kstruck/mmpoolsv3/blob/main/src/components/Grid.tsx"
click node_props "https://github.com/kstruck/mmpoolsv3/blob/main/src/components/Props/PropsManager.tsx"
click node_manager "https://github.com/kstruck/mmpoolsv3/blob/main/src/components/ManagerDashboard.tsx"
click node_nflengine "https://github.com/kstruck/mmpoolsv3/blob/main/functions/src/nflScoringEngine.ts"
click node_scorejobs "https://github.com/kstruck/mmpoolsv3/tree/main/functions/src"
click node_feed "https://github.com/kstruck/mmpoolsv3/blob/main/functions/src/feedSnapshotStore.ts"
click node_standings "https://github.com/kstruck/mmpoolsv3/blob/main/src/components/NFLPoolDashboard/NFLStandings.tsx"
click node_tourneyadmin "https://github.com/kstruck/mmpoolsv3/blob/main/src/components/admin/TournamentManager.tsx"
click node_playoffresults "https://github.com/kstruck/mmpoolsv3/blob/main/src/components/PlayoffPool/PlayoffResultsManager.tsx"
click node_admin "https://github.com/kstruck/mmpoolsv3/blob/main/src/components/AdminPanel.tsx"
click node_billing "https://github.com/kstruck/mmpoolsv3/blob/main/functions/src/lib/quoteEngine.ts"
click node_firebase "https://github.com/kstruck/mmpoolsv3/blob/main/src/firebase.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_auth,node_userstore toneBlue
class node_wizard,node_join,node_nfl,node_bracket,node_playoff,node_squares,node_props,node_manager,node_firebase toneAmber
class node_nflengine,node_scorejobs,node_feed,node_standings toneMint
class node_tourneyadmin,node_playoffresults,node_admin,node_billing toneRose
class node_user,node_espn toneIndigo
```

## Components

### App and Accounts

- [Web App and Routes](https://github.com/kstruck/mmpoolsv3/blob/main/src/App.tsx): `src/App.tsx`
- [Authentication](https://github.com/kstruck/mmpoolsv3/blob/main/src/services/authService.ts): `src/services/authService.ts`
- **User Records**

### Pool Experiences

- [Pool Setup Wizard](https://github.com/kstruck/mmpoolsv3/tree/main/src/components/wizard): `src/components/wizard`
- [Browse and Join](https://github.com/kstruck/mmpoolsv3/blob/main/src/components/JoinPool.tsx): `src/components/JoinPool.tsx`
- [NFL Pools](https://github.com/kstruck/mmpoolsv3/tree/main/src/components/NFLPoolDashboard): `src/components/NFLPoolDashboard`
- [Bracket Pools](https://github.com/kstruck/mmpoolsv3/tree/main/src/components/BracketPoolDashboard): `src/components/BracketPoolDashboard`
- [Playoff Challenge](https://github.com/kstruck/mmpoolsv3/tree/main/src/components/PlayoffPool): `src/components/PlayoffPool`
- [Squares Pools](https://github.com/kstruck/mmpoolsv3/blob/main/src/components/Grid.tsx): `src/components/Grid.tsx`
- [Prop Bets](https://github.com/kstruck/mmpoolsv3/blob/main/src/components/Props/PropsManager.tsx): `src/components/Props/PropsManager.tsx`
- [Manager Dashboard](https://github.com/kstruck/mmpoolsv3/blob/main/src/components/ManagerDashboard.tsx): `src/components/ManagerDashboard.tsx`

### Scoring and Results

- [NFL Scoring Engine](https://github.com/kstruck/mmpoolsv3/blob/main/functions/src/nflScoringEngine.ts): `functions/src/nflScoringEngine.ts`
- [Score and Lock Jobs](https://github.com/kstruck/mmpoolsv3/tree/main/functions/src): `functions/src`
- [Feed Replay and Snapshots](https://github.com/kstruck/mmpoolsv3/blob/main/functions/src/feedSnapshotStore.ts): `functions/src/feedSnapshotStore.ts`
- [Standings and Awards](https://github.com/kstruck/mmpoolsv3/blob/main/src/components/NFLPoolDashboard/NFLStandings.tsx): `src/components/NFLPoolDashboard/NFLStandings.tsx`

### Platform Operations

- [Tournament Management](https://github.com/kstruck/mmpoolsv3/blob/main/src/components/admin/TournamentManager.tsx): `src/components/admin/TournamentManager.tsx`
- [Global Playoff Results](https://github.com/kstruck/mmpoolsv3/blob/main/src/components/PlayoffPool/PlayoffResultsManager.tsx): `src/components/PlayoffPool/PlayoffResultsManager.tsx`
- [Admin Operations](https://github.com/kstruck/mmpoolsv3/blob/main/src/components/AdminPanel.tsx): `src/components/AdminPanel.tsx`
- [Billing and Quotes](https://github.com/kstruck/mmpoolsv3/blob/main/functions/src/lib/quoteEngine.ts): `functions/src/lib/quoteEngine.ts`

### Other components

- **Player or Commissioner**
- [Firebase Services](https://github.com/kstruck/mmpoolsv3/blob/main/src/firebase.ts): `src/firebase.ts`
- **ESPN Feeds**

## Connections

- Player or Commissioner → Web App and Routes: uses
- Web App and Routes → Authentication: authenticates
- Authentication → User Records: reads and writes
- Pool Setup Wizard → Player or Commissioner: configures pools
- Player or Commissioner → Browse and Join: joins pools
- Player or Commissioner → NFL Pools: submits picks
- Player or Commissioner → Bracket Pools: fills brackets
- Player or Commissioner → Playoff Challenge: ranks teams
- Player or Commissioner → Squares Pools: claims squares
- Player or Commissioner → Prop Bets: enters picks
- Player or Commissioner → Manager Dashboard: manages pools
- Score and Lock Jobs → NFL Scoring Engine: grades picks
- Score and Lock Jobs → Feed Replay and Snapshots: records snapshots
- ESPN Feeds → Score and Lock Jobs: supplies scores
- NFL Scoring Engine → Standings and Awards: produces scoring
- Tournament Management → ESPN Feeds: imports tournament data
- Global Playoff Results → Firebase Services: reads results
- Global Playoff Results → Web App and Routes: calls updateGlobalPlayoffResults
- Admin Operations → Manager Dashboard: administers pools
- Billing and Quotes → Player or Commissioner: quotes pool pricing
