# sans-richard/scoreboard architecture

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

- Interactive diagram: https://gitdiagram.com/sans-richard/scoreboard
- Repository: https://github.com/sans-richard/scoreboard

## Overview

This small repository contains scoreboard data, an HTML entry point, and a script that sanitizes source data before committing and pushing it to a separate GitHub repository for Vercel deployment. The script’s read, sanitize, write, and Git operations are explicit in sampled source. The README and available excerpts do not establish how index.html uses data.json, so that connection is omitted.

Main entry points: [`sanitize_and_push.py`](https://github.com/sans-richard/scoreboard/blob/main/sanitize_and_push.py) (Sanitize and push), [`data.json`](https://github.com/sans-richard/scoreboard/blob/main/data.json) (Scoreboard data)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_publishing["Scoreboard publishing"]
  node_source_data["Scoreboard data<br/>[data.json]"]
  node_sanitizer["Sanitize and push"]
  node_target_data["Published data file"]
end

node_github["GitHub repository"]
node_vercel["Vercel deployment"]
node_scoreboard_page["Scoreboard page<br/>[index.html]"]

node_sanitizer -->|"reads"| node_source_data
node_sanitizer -->|"sanitizes"| node_sanitizer
node_sanitizer -->|"writes"| node_target_data
node_sanitizer -->|"commits and pushes"| node_github
node_github -.->|"deploys"| node_vercel

click node_source_data "https://github.com/sans-richard/scoreboard/blob/main/data.json"
click node_sanitizer "https://github.com/sans-richard/scoreboard/blob/main/sanitize_and_push.py"
click node_scoreboard_page "https://github.com/sans-richard/scoreboard/blob/main/index.html"

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_source_data,node_sanitizer,node_target_data toneBlue
class node_github,node_vercel toneIndigo
class node_scoreboard_page toneTeal
```

## Components

### Scoreboard publishing

- [Scoreboard data](https://github.com/sans-richard/scoreboard/blob/main/data.json): `data.json`
- [Sanitize and push](https://github.com/sans-richard/scoreboard/blob/main/sanitize_and_push.py): `sanitize_and_push.py`
- **Published data file**

### Other components

- **GitHub repository**
- **Vercel deployment**
- [Scoreboard page](https://github.com/sans-richard/scoreboard/blob/main/index.html): `index.html`

## Connections

- Sanitize and push → Scoreboard data: reads
- Sanitize and push → Sanitize and push: sanitizes
- Sanitize and push → Published data file: writes
- Sanitize and push → GitHub repository: commits and pushes
- GitHub repository → Vercel deployment: deploys
