# david-fear/david-fear.github.io architecture

> Architecture diagram of the GitHub repository david-fear/david-fear.github.io, 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/david-fear/david-fear.github.io
- Repository: https://github.com/david-fear/david-fear.github.io

## Overview

This repository is a collection of standalone web pages and tools, plus a Cloudflare-backed live meeting-bingo room. The sampled runtime evidence exposes the room service: a browser client connects, updates progress, polls room state, or disconnects; the Worker validates requests and operates on persistent player records. The tree also shows independent product areas for utilities, personal projects, hair portfolio examples, and mixed-reality demos. With no README and no excerpts for those pages, their internal behavior and connections are not asserted.

Main entry points: [`tools/meeting-bingo.html`](https://github.com/david-fear/david-fear.github.io/blob/main/tools/meeting-bingo.html) (Bingo interface), [`cloudflare/meeting-bingo-worker.js`](https://github.com/david-fear/david-fear.github.io/blob/main/cloudflare/meeting-bingo-worker.js) (Room API Worker), [`hairbychallen/index.html`](https://github.com/david-fear/david-fear.github.io/blob/main/hairbychallen/index.html) (Hair portfolio), [`cloudflare/meeting-bingo-schema.sql`](https://github.com/david-fear/david-fear.github.io/blob/main/cloudflare/meeting-bingo-schema.sql) (Live player records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_bingo["Live Bingo"]
  node_bingo_ui["Bingo interface<br/>[meeting-bingo.html]"]
  node_worker["Room API Worker"]
  node_db[("Live player records")]
end

subgraph group_tools["Web Tools"]
  node_tools_pages["Browser utilities"]
end

subgraph group_personal["Personal Projects"]
  node_personal_pages["Personal applications"]
end

subgraph group_portfolio["Web Portfolio"]
  node_hair_site["Hair portfolio<br/>[index.html]"]
  node_hair_examples["Example gallery"]
end

subgraph group_xr["Mixed Reality"]
  node_xr_demos["Interactive demos"]
end

node_player(("Bingo player"))

node_player -->|"plays"| node_bingo_ui
node_bingo_ui -.->|"room requests"| node_worker
node_worker -->|"reads and writes"| node_db
node_hair_site -.->|"links examples"| node_hair_examples

click node_bingo_ui "https://github.com/david-fear/david-fear.github.io/blob/main/tools/meeting-bingo.html"
click node_worker "https://github.com/david-fear/david-fear.github.io/blob/main/cloudflare/meeting-bingo-worker.js"
click node_db "https://github.com/david-fear/david-fear.github.io/blob/main/cloudflare/meeting-bingo-schema.sql"
click node_tools_pages "https://github.com/david-fear/david-fear.github.io/tree/main/tools"
click node_personal_pages "https://github.com/david-fear/david-fear.github.io/tree/main/personal"
click node_hair_site "https://github.com/david-fear/david-fear.github.io/blob/main/hairbychallen/index.html"
click node_hair_examples "https://github.com/david-fear/david-fear.github.io/tree/main/hairbychallen"
click node_xr_demos "https://github.com/david-fear/david-fear.github.io/tree/main/mixed-reality"

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_bingo_ui,node_worker,node_db toneBlue
class node_tools_pages toneAmber
class node_personal_pages toneMint
class node_hair_site,node_hair_examples toneRose
class node_xr_demos,node_player toneIndigo
```

## Components

### Live Bingo

- [Bingo interface](https://github.com/david-fear/david-fear.github.io/blob/main/tools/meeting-bingo.html): `tools/meeting-bingo.html`
- [Room API Worker](https://github.com/david-fear/david-fear.github.io/blob/main/cloudflare/meeting-bingo-worker.js): `cloudflare/meeting-bingo-worker.js`
- [Live player records](https://github.com/david-fear/david-fear.github.io/blob/main/cloudflare/meeting-bingo-schema.sql): `cloudflare/meeting-bingo-schema.sql`

### Web Tools

- [Browser utilities](https://github.com/david-fear/david-fear.github.io/tree/main/tools): `tools`

### Personal Projects

- [Personal applications](https://github.com/david-fear/david-fear.github.io/tree/main/personal): `personal`

### Web Portfolio

- [Hair portfolio](https://github.com/david-fear/david-fear.github.io/blob/main/hairbychallen/index.html): `hairbychallen/index.html`
- [Example gallery](https://github.com/david-fear/david-fear.github.io/tree/main/hairbychallen): `hairbychallen`

### Mixed Reality

- [Interactive demos](https://github.com/david-fear/david-fear.github.io/tree/main/mixed-reality): `mixed-reality`

### Other components

- **Bingo player**

## Connections

- Bingo player → Bingo interface: plays
- Bingo interface → Room API Worker: room requests
- Room API Worker → Live player records: reads and writes (evidence: `cloudflare/meeting-bingo-worker.js`)
- Hair portfolio → Example gallery: links examples
