← Back to projects

Learn the World

Active

An interactive geography learning game with multiple quiz modes, progressive difficulty, and a focus on genuinely learning a subject rather than just being tested on it.

Learn the World

An interactive learning game built around the belief that there is a meaningful difference between being tested on something and actually learning it. Browse categories, pick a game mode, and work through challenges that get progressively harder as your knowledge builds. Geography is the starting point; the platform is designed to work for any category of knowledge worth knowing deeply.

The Idea

I have always enjoyed knowing things about the world. The kind of knowledge that has no practical value but that I find genuinely satisfying — where Burkina Faso is, what the flag of Bhutan looks like, which European country has the smallest population. Years ago I found an app on the App Store called Flags for Fun that I played on my commute every day until I knew every flag in the world. It seems to have quietly disappeared.

When I went looking for something to fill that gap, nothing quite did it. The existing landscape splits between trivia platforms that are really about speed-run completion and map drills that repeat the same four facts indefinitely. Neither approach is particularly memorable. I wanted something with more editorial depth per category — not just "what is this flag?" but enough context that the answer actually sticks.

Why not just use Sporcle or Seterra?

Both are worth knowing about, and both have real shortcomings.

Sporcle is the dominant general-knowledge quiz platform and its geography section is genuinely popular. But its learning model is speed-run recognition: you have a timer, you type answers, you watch them fill in. That works for people who already know the material. For people trying to learn, there's little scaffolding when you get something wrong and no mechanism to surface the things you consistently miss. The mobile app has also deteriorated badly — mid-game subscription prompts, ads that freeze the app, and a Trustpilot score of 2.0/5 that reflects the experience of anyone not paying.

Seterra is cleaner and more educationally coherent — click a country on the map and it teaches spatial memory in a way that actually works. But it has always stopped at the location. There is no context for why a flag looks the way it does, no connection between geography and history, nothing that makes the knowledge sticky beyond the location itself. It also degraded after its acquisition by GeoGuessr in 2022, with the long-term user consensus settling on "slower and glitchier than before."

The broader category — StudyGe, World Quiz, Flags of the World, Lizard Point — covers the same four topics (countries, capitals, flags, map location) without meaningful differentiation. A Hacker News discussion on spaced repetition geography apps surfaced exactly this frustration: users wanted something that stopped drilling countries they had already mastered, surfaced weak spots more intelligently, and gave them a reason why an answer was correct rather than just confirming it was.

SporcleSeterraStudyGeLearn the World
Multiple distinct game modes~
Progressive difficulty system~
Surfaces your weak spots
Editorial depth / context
Designed for mobile~~
Ad-free~~

~ = partial or inconsistent

Four Ways to Learn the Same Thing

The core idea is that a single game mode only gives you one angle on a subject. Being able to recognise a flag in a grid is a different skill from spelling a country name from scratch, which is different again from understanding how it ranks by population. Learn the World offers four modes for any category, each targeting a different kind of memory:

  • Grid Select — a grid of cards cycles through as you pick the correct match. Fast and visual, good for building initial recognition
  • Pick Answer — multiple choice with 3–5 options. Lower stakes, useful for early exposure before pushing to harder modes
  • Type Answer — spell the answer character by character with per-letter feedback. The hardest mode and closest to genuine recall
  • Put in Order — drag and drop to rank entries by a numeric field (population, area, or anything orderable). Teaches relative scale, a dimension the other modes don't touch

Grid select mode showing flags quiz in progress

Difficulty controls both the size of the question set and the scaffolding available. Easy mode might show a hint overlay on each card — the capital name beneath a flag, for instance. Medium removes that. Hard runs the full entry set with no assistance. Importantly, Easy entries are always a proper subset of Hard ones, so you are building on the same foundations rather than switching tracks. The intention is that a new category feels approachable on first visit and genuinely challenging once you think you know it.

A Few Things Worth Noting

Type Answer actually handles the world's names

Typing "Côte d'Ivoire" or "São Tomé and Príncipe" in a quiz should not require a separate mental challenge. The type-answer mode normalises Unicode, strips diacritics for comparison, and auto-fills punctuation characters (apostrophes, hyphens, spaces) so you only need to type the letters. Each character gets colour-coded feedback based on how many attempts it took — grey on first try, yellow after one miss, orange after two. Getting a long name mostly right but stumbling on one letter is a different signal than getting it completely wrong, and the feedback reflects that.

Type answer mode with per-character feedback

Nothing is lost between sessions

Game results sync to Supabase for authenticated users, but not immediately and not as a hard requirement. Every completed session is queued locally first using an outbox pattern backed by IndexedDB. The sync happens in the background when connectivity is available. If it fails, the record stays in the outbox and retries. Medals, best times, and completion history are all tracked locally in parallel, so the experience is identical whether you are online or not.

Adding a new category requires no code changes

Each category is a folder with a category.json, an entries.json, and a set of game manifests. A game manifest specifies which field from an entry is the target answer, which field to display as the prompt, what overlays to show at which difficulties, and what time thresholds earn each medal. The game engine reads the manifest and does the rest. Adding a "World Capitals" game that quizzes on flags but asks for the capital instead is a new manifest file, not a code change.

Medal thresholds are calibrated, not arbitrary

Gold, silver, and bronze time thresholds are set per game at the manifest level. A flags grid-select hard run gives you 90 seconds for gold. A capitals typing game on hard gives more time — typing is slower than clicking. The thresholds are tuned per game to make gold genuinely difficult to achieve but not demoralising on a first run.

Built With

  • React 18 with TypeScript — component architecture, game session state
  • Vite — build tooling, import.meta.glob for content loading
  • Supabase — auth, session telemetry, leaderboard data
  • Zustand — local progress tracking and offline outbox
  • Framer Motion — game animations, reduced-motion aware
  • @dnd-kit — drag-and-drop for the Put in Order mode, keyboard accessible
  • Zod — content schema validation at build time

Status

Active development. Countries category published with five games across the four modes. A second category (fish) is in progress. The content pipeline is designed so that adding a new category — whatever the subject — requires no code changes, just a folder of JSON files and images.