Appearance
Geography Game — Hinata Studio Learning Tab
owner: shikamaru + trunks
first_touched: 2026-05-26
last_touched: 2026-05-26
Geography App Build
source: documentation/activities/geography-app.md
Spawned from a missed inbox signal: 3 Telegram photos (2026-05-26 00:17:37) showing Worldle.teuteuf.fr's 3 game modes. Captured via process-inbox-silent-drops doctrine fix.
Architecture decisions
Separate application:
Sandpit/hinata/applications/shikamaru-geography/with context.md, data/, scripts/. Studio consumes static data frompublic/data/geography/Africa scope for v1 — 59 countries via REST Countries /region/africa. UN scope (~195) deferred
Real country shapes — Natural Earth 110m TopoJSON via world-atlas (107KB file, CC0), rendered with d3-geo Mercator projection
Hard constraint: zero runtime fetches to AI / Worker / webhook. All static, baked into Pages bundle
Persistence: localStorage per-mode stats for v1. No jimmy-vps sync until app proves itself
Mastery integration: geography added to KNOWN_CATEGORIES; ELO ready when first event lands
Build delivered
applications/shikamaru-geography/scripts/build-countries-json.pyapplications/hinata-studio/public/data/geography/{countries,world-110m}.jsonsrc/geography/{types.ts, distance.ts, shapes.ts}— Haversine + Mercator + path generatorssrc/components/Geography.tsx(570 lines) — 3 modes: Country (silhouette + 6-guess), Languages (2-from-8 grid), Capital (2-step name + click-on-shape with coloured dots)
Studio wiring
* Tab geography (Option+G); owner Shikamaru; surface ownership: Brook
* Renamed Mastery music category label to "Music"; geography category added
Open follow-ups
* Phrase sub-round inside Languages mode (deferred to v2)
* jimmy-vps event persistence (cross-device sync)
* GDP/Population data — World Bank API timed out; rerun with longer timeout
* UN scope expansion beyond Africa
◆ hinata · geography-game · folded from documentation/activities/ phase-19