Geography Nerd is a browser game that tests directional geography: given two cities, decide whether one is north, south, east, or west of the other.
The app is intentionally simple:
- No accounts
- No app-level analytics
- No quiz/session/answer tracking
- No ads
- City data is bundled locally and ships with the build
- React 19 + TypeScript
- Vite
- Tailwind CSS
- React Leaflet + CARTO raster tiles
- Vitest for unit tests
Requirements:
- Node.js 20+
- npm
npm install
npm run dev:webThe app runs at http://localhost:5173 and requires no environment variables.
npm run dev:web # start the Vite dev server
npm run build:web # type-check + production build
npm run lint # lint the frontend
npm run test # run Vitest unit tests
npm run generate:local-cities # rebuild web/src/data/localCities.ts
npm run import-cities # refresh data/cities-import.sql from GeoNamesThe bundled city list lives in web/src/data/localCities.ts. It is generated from data/cities-import.sql (top ~1000 cities from GeoNames with regional weighting) and the country lookup in data/countries.sql. See CONTRIBUTING.md for how to refresh it.
The application does not create user accounts, persist quiz state, store answers, or include app-level tracking/ads. See PRIVACY.md for external service notes.
City data is derived from GeoNames. Maps use OpenStreetMap-derived tiles through CARTO. The logo was generated with Google's Nano Banana AI. See ATTRIBUTION.md for the full list of sources.
Code is licensed under MIT. Data and map sources retain their own licenses and attribution requirements.
See CONTRIBUTING.md for development setup and CODE_OF_CONDUCT.md for community expectations. Security issues should be reported via the process in SECURITY.md.
