# gopikrishna7733/pmm-3-bidding-interface architecture

> Architecture diagram of the GitHub repository gopikrishna7733/pmm-3-bidding-interface, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gopikrishna7733/pmm-3-bidding-interface
- Repository: https://github.com/gopikrishna7733/pmm-3-bidding-interface

## Overview

PMM 3 is a browser-based quiz auction and evaluation platform: a quiz master prepares and releases questions, teams bid for the right to answer, and a projector page displays the live auction and results. Shared state computes question phases, bid commitments, and scoring; browser storage is synchronized to Firestore when cloud sync is enabled. The sampled excerpts support the state and sync relationships shown, but not all page wiring or storage implementation details.

Main entry points: [`index.html`](https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/index.html) (Team page), [`store.js`](https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/store.js) (Auction state and rules), [`sync.js`](https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/sync.js) (Cloud synchronization), [`teamfx.js`](https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/teamfx.js) (Lens and leader effects)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_auction["Quiz workflow"]
  node_admin["Quiz master<br/>[admin.js]"]
  node_admin_page["Admin page<br/>[admin.html]"]
  node_team_page["Team page<br/>[index.html]"]
  node_bidder["Team bidding<br/>[bidder.js]"]
end

subgraph group_state["State and sync"]
  node_state_rules["Auction state and rules<br/>[store.js]"]
  node_browser_storage[("Browser state")]
  node_cloud_sync["Cloud synchronization<br/>[sync.js]"]
  node_firestore[("Firestore event")]
  node_firebase_config["Firebase configuration<br/>[firebase-config.js]"]
end

subgraph group_presentation["Live presentation"]
  node_live_page["Projector page<br/>[live.html]"]
  node_projector["Live display<br/>[live.js]"]
  node_teamfx["Lens and leader effects<br/>[teamfx.js]"]
  node_particles["Particle effects<br/>[particles.js]"]
  node_spotlight["Spotlight effect<br/>[spotlight.js]"]
end

node_quiz_master(("Quiz master"))
node_teams(("Teams"))

node_quiz_master -.->|"manages questions"| node_admin_page
node_teams -.->|"joins and bids"| node_team_page
node_admin_page -.->|"runs"| node_admin
node_team_page -.->|"runs"| node_bidder
node_live_page -.->|"runs"| node_projector
node_admin -.->|"loads and saves"| node_state_rules
node_bidder -.->|"reads and saves"| node_state_rules
node_projector -.->|"reads"| node_state_rules
node_state_rules -.->|"persists state"| node_browser_storage
node_cloud_sync -->|"updates local copy"| node_browser_storage
node_cloud_sync -->|"syncs transactions"| node_firestore
node_cloud_sync -->|"uses load and save"| node_state_rules
node_firebase_config -.->|"configures Firebase"| node_cloud_sync
node_teamfx -.->|"adds page effects"| node_team_page
node_teamfx -.->|"adds page effects"| node_admin_page
node_teamfx -.->|"adds page effects"| node_live_page
node_particles -.->|"animates controls"| node_team_page
node_spotlight -.->|"highlights controls"| node_team_page

click node_admin "https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/admin.js"
click node_admin_page "https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/admin.html"
click node_team_page "https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/index.html"
click node_bidder "https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/bidder.js"
click node_live_page "https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/live.html"
click node_projector "https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/live.js"
click node_state_rules "https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/store.js"
click node_cloud_sync "https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/sync.js"
click node_firebase_config "https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/firebase-config.js"
click node_teamfx "https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/teamfx.js"
click node_particles "https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/particles.js"
click node_spotlight "https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/spotlight.js"

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_admin,node_admin_page,node_team_page,node_bidder toneBlue
class node_state_rules,node_browser_storage,node_cloud_sync,node_firestore,node_firebase_config toneAmber
class node_live_page,node_projector,node_teamfx,node_particles,node_spotlight toneMint
class node_quiz_master,node_teams toneIndigo
```

## Components

### Quiz workflow

- [Quiz master](https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/admin.js): `admin.js`
- [Admin page](https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/admin.html): `admin.html`
- [Team page](https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/index.html): `index.html`
- [Team bidding](https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/bidder.js): `bidder.js`

### State and sync

- [Auction state and rules](https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/store.js): `store.js`
- **Browser state**
- [Cloud synchronization](https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/sync.js): `sync.js`
- **Firestore event**
- [Firebase configuration](https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/firebase-config.js): `firebase-config.js`

### Live presentation

- [Projector page](https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/live.html): `live.html`
- [Live display](https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/live.js): `live.js`
- [Lens and leader effects](https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/teamfx.js): `teamfx.js`
- [Particle effects](https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/particles.js): `particles.js`
- [Spotlight effect](https://github.com/gopikrishna7733/pmm-3-bidding-interface/blob/main/spotlight.js): `spotlight.js`

### Other components

- **Quiz master**
- **Teams**

## Connections

- Quiz master → Admin page: manages questions
- Teams → Team page: joins and bids
- Admin page → Quiz master: runs
- Team page → Team bidding: runs
- Projector page → Live display: runs
- Quiz master → Auction state and rules: loads and saves
- Team bidding → Auction state and rules: reads and saves
- Live display → Auction state and rules: reads
- Auction state and rules → Browser state: persists state
- Cloud synchronization → Browser state: updates local copy (evidence: `sync.js`)
- Cloud synchronization → Firestore event: syncs transactions (evidence: `sync.js`)
- Cloud synchronization → Auction state and rules: uses load and save (evidence: `sync.js`)
- Firebase configuration → Cloud synchronization: configures Firebase
- Lens and leader effects → Team page: adds page effects
- Lens and leader effects → Admin page: adds page effects
- Lens and leader effects → Projector page: adds page effects
- Particle effects → Team page: animates controls
- Spotlight effect → Team page: highlights controls
