How blchen10203/chrichu works
Reachdle is a UFC-fighter stats guessing game with a Python data pipeline and a Next.js web app. The pipeline fetches UFCStats CSVs, parses and derives fighter metrics, then emits data consumed by the site. The app exposes Daily, Infinite, and Survival routes, but the sampled Infinite and How-to-Play pages are placeholders; the other game routes were not sampled, so their internals are not inferred. The graph preserves documented routes and pipeline stages while omitting unverified runtime wiring among engine, display, and storage modules.
Main entry points: build.py Data builder · page.tsx Home navigation · draft_roster.py Roster drafting · derive.py Fight metrics
Components 30
Data pipeline
- Data builder
pipeline/build.py - Field parsing
pipeline/parse.py - Fight metrics
pipeline/derive.py - Metric definitions
pipeline/metrics.py - Roster drafting
pipeline/draft_roster.py - Fighter data
web/data/fighters.json - Metric data
web/data/metrics.json
Web experience
- Home navigation
web/app/page.tsx - Daily mode route
web/app/daily/page.tsx - Infinite mode route
web/app/infinite/page.tsx - Survival mode route
web/app/survival/page.tsx - How-to-play page
web/app/how-to-play/page.tsx - FAQ page
web/app/faq/page.tsx
Game engine
- Round generation
web/lib/engine/rounds.ts - Seeded randomness
web/lib/engine/rng.ts - Guess scoring
web/lib/engine/scoring.ts - Metric scaling
web/lib/engine/scale.ts - Result sharing
web/lib/engine/share.ts - Game state
web/lib/storage/index.ts
Game presentation
- Round displays
web/components/RoundShell.tsx - Bar stage
web/components/BarStage.tsx - Silhouette stage
web/components/SilhouetteStage.tsx - Results display
web/components/Results.tsx - Answer reveal
web/components/Reveal.tsx - Round timer
web/components/Timer.tsx - Health bar
web/components/HpBar.tsx - Share control
web/components/ShareButton.tsx
Other components
- Player
- UFCStats CSV source
- Browser storage
Connections 18
- Player → Home navigation: opens
web/app/page.tsx - Home navigation → Daily mode route: links to
web/app/page.tsx - Home navigation → Infinite mode route: links to
web/app/page.tsx - Home navigation → Survival mode route: links to
web/app/page.tsx - Home navigation → How-to-play page: links to
web/app/page.tsx - Home navigation → FAQ page: links to
web/app/page.tsx - UFCStats CSV source → Data builder: provides CSVs
pipeline/build.py - Data builder → Field parsing: parses fields
pipeline/build.py - Data builder → Fight metrics: derives metrics
pipeline/build.py - Data builder → Metric definitions: summarizes metrics
pipeline/build.py - Fight metrics → Field parsing: uses parsers
pipeline/derive.py - Data builder → Fighter data: writes
pipeline/build.py - Data builder → Metric data: writes
pipeline/build.py - Roster drafting → Data builder: loads source data
pipeline/draft_roster.py - Roster drafting → Fight metrics: ranks fights
pipeline/draft_roster.py - Roster drafting → Field parsing: extracts IDs
pipeline/draft_roster.py - Round generation → Seeded randomness: uses
web/lib/engine/rounds.ts - Game state → Browser storage: reads and writes
web/lib/storage/index.ts