Architecture · LikeC4

Wheel Practice App

Seeded, offline Wheel of Fortune trainer: ingest puzzle packs, then play them on iOS or web

built evolving planned research risk

The whole picture

System landscape

The system in context, then opened up into its containers.

Wheel Practice App — system landscape

Wheel Practice App — system landscape

index
Wheel Practice App — containers (shipped vs planned)

Wheel Practice App — containers (shipped vs planned)

wofSystem

Seeded, offline Wheel of Fortune trainer: ingest puzzle packs, then play them on iOS or web

Risks & open questions

Risks & open questions

risks
Planned work — shared engine extraction

Planned work — shared engine extraction

planned

Inside each box

Containers & components

Each part decomposed into the components that implement it. Every box links to its source in the interactive explorer.

Puzzle pipeline (pipeline/) — components

Puzzle pipeline (pipeline/) — components

pipelineContainer

pipeline/ — ingest raw sources → normalize → dedupe → score → validated pack JSON

Game engine (duplicated) — components

Game engine (duplicated) — components

engineContainer

Pure-functional seeded logic. RISK: lives twice (ios/src/engine + app/src/engine), kept byte-identical only by an interim sha256 drift guard; extraction to /shared/engine/ is still planned

Web app (app/) — components

Web app (app/) — components

webContainer

app/ — React + Vite + Tailwind. The migration target: iOS Standard-mode improvements ported here, kid-mode extras preserved

iOS app (ios/) — components

iOS app (ios/) — components

iosContainer

ios/ — React Native + Expo. The improvement source-of-truth being ported to web; still the originally-shipped target

How it runs

Walkthrough flows

Dynamic views — the narrative spine of the system, step by step.

Walkthrough — building a puzzle pack

Walkthrough — building a puzzle pack

buildPack

Deterministic by design: the same inputs + --seed always produce byte-identical pack JSON, so dedupe ids and pack stats are reproducible. Hand-editing data/packs breaks the content-hash ids.

Walkthrough — a Standard-mode round (web)

Walkthrough — a Standard-mode round (web)

standardRound

The whole round runs through the seeded reducer: spin, guess consonants, buy vowels (gated by mustSpin), then solve. Determinism means the same seed replays the same wheel and reveal order.

Walkthrough — a Kid-mode session

Walkthrough — a Kid-mode session

kidSession

Kid mode never penalizes: every wheel outcome is positive (stars, hints, money, free letters). Phonics and letter-suggestion helpers plus TTS scaffold early readers; progress and treasure persist across sessions.

Where it runs

Deployment

What runs where, and the process & data boundaries between the pieces.

Deployment — where each piece runs

Deployment — where each piece runs

deployment

Explore it live

The figures above are static exports. The interactive explorer lets you pan, zoom, follow relationships, and jump from any box to the source.