# hd-games-world/bingo-dash architecture

> Architecture diagram of the GitHub repository hd-games-world/bingo-dash, 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/hd-games-world/bingo-dash
- Repository: https://github.com/hd-games-world/bingo-dash

## Overview

This is a small HTTP dashboard for browsing and editing daily challenge data and managing player records. Users reach the challenge and player pages through the server; its API reads and updates challenge files, compiles player data into a cached JSON file, and writes player edits back to challenge files. The server source shows these routes and storage operations; the page contents were not sampled, so UI-to-API interactions are not asserted.

Main entry points: [`server.js`](https://github.com/hd-games-world/bingo-dash/blob/main/server.js) (HTTP server and API), [`daily_challenges`](https://github.com/hd-games-world/bingo-dash/tree/main/daily_challenges) (Daily challenge files), [`compiled_players.json`](https://github.com/hd-games-world/bingo-dash/blob/main/compiled_players.json) (Compiled player data), [`public/challenges.html`](https://github.com/hd-games-world/bingo-dash/blob/main/public/challenges.html) (Challenge editor page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Dashboard"]
  node_challenge_ui["Challenge editor page<br/>[challenges.html]"]
  node_players_ui["Player management page<br/>[players.html]"]
end

subgraph group_runtime["Server Runtime"]
  node_server["HTTP server and API<br/>[server.js]"]
  node_player_compile["Player compiler<br/>[server.js]"]
  node_player_edits["Player edit writer<br/>[server.js]"]
end

subgraph group_data["Challenge And Player Data"]
  node_challenge_files[("Daily challenge files")]
  node_compiled_players[("Compiled player data")]
end

node_user(("Dashboard user"))

node_user -->|"sends requests"| node_server
node_server -->|"serves page"| node_challenge_ui
node_server -->|"serves page"| node_players_ui
node_server -->|"lists and reads"| node_challenge_files
node_server -->|"saves challenge"| node_challenge_files
node_server -->|"compiles players"| node_player_compile
node_player_compile -->|"reads challenges"| node_challenge_files
node_player_compile -->|"writes compiled data"| node_compiled_players
node_server -->|"loads cached data"| node_compiled_players
node_server -->|"applies edits"| node_player_edits
node_player_edits -->|"updates player records"| node_challenge_files
node_player_edits -->|"recompiles data"| node_player_compile

click node_server "https://github.com/hd-games-world/bingo-dash/blob/main/server.js"
click node_challenge_ui "https://github.com/hd-games-world/bingo-dash/blob/main/public/challenges.html"
click node_players_ui "https://github.com/hd-games-world/bingo-dash/blob/main/public/players.html"
click node_player_compile "https://github.com/hd-games-world/bingo-dash/blob/main/server.js"
click node_player_edits "https://github.com/hd-games-world/bingo-dash/blob/main/server.js"
click node_challenge_files "https://github.com/hd-games-world/bingo-dash/tree/main/daily_challenges"
click node_compiled_players "https://github.com/hd-games-world/bingo-dash/blob/main/compiled_players.json"

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_challenge_ui,node_players_ui,node_user toneBlue
class node_server,node_player_compile,node_player_edits toneAmber
class node_challenge_files,node_compiled_players toneMint
```

## Components

### Dashboard

- [Challenge editor page](https://github.com/hd-games-world/bingo-dash/blob/main/public/challenges.html): `public/challenges.html`
- [Player management page](https://github.com/hd-games-world/bingo-dash/blob/main/public/players.html): `public/players.html`

### Server Runtime

- [HTTP server and API](https://github.com/hd-games-world/bingo-dash/blob/main/server.js): `server.js`
- [Player compiler](https://github.com/hd-games-world/bingo-dash/blob/main/server.js): `server.js`
- [Player edit writer](https://github.com/hd-games-world/bingo-dash/blob/main/server.js): `server.js`

### Challenge And Player Data

- [Daily challenge files](https://github.com/hd-games-world/bingo-dash/tree/main/daily_challenges): `daily_challenges`
- [Compiled player data](https://github.com/hd-games-world/bingo-dash/blob/main/compiled_players.json): `compiled_players.json`

### Other components

- **Dashboard user**

## Connections

- Dashboard user → HTTP server and API: sends requests (evidence: `server.js`)
- HTTP server and API → Challenge editor page: serves page (evidence: `server.js`)
- HTTP server and API → Player management page: serves page (evidence: `server.js`)
- HTTP server and API → Daily challenge files: lists and reads (evidence: `server.js`)
- HTTP server and API → Daily challenge files: saves challenge (evidence: `server.js`)
- HTTP server and API → Player compiler: compiles players (evidence: `server.js`)
- Player compiler → Daily challenge files: reads challenges (evidence: `server.js`)
- Player compiler → Compiled player data: writes compiled data (evidence: `server.js`)
- HTTP server and API → Compiled player data: loads cached data (evidence: `server.js`)
- HTTP server and API → Player edit writer: applies edits (evidence: `server.js`)
- Player edit writer → Daily challenge files: updates player records (evidence: `server.js`)
- Player edit writer → Player compiler: recompiles data (evidence: `server.js`)
