Skip to content

Repository files navigation

Geopoto illustration

Geopoto

A fully offline mobile app for learning flags, capitals, countries and map positions through daily challenges, adaptive training and an interactive geography atlas.

Download on the App Store Get it on Google Play

Screenshots

Home Adaptive training Interactive map Encyclopedia

About

Geopoto is built for people who want geographic knowledge to stick. It keeps the full learning experience offline, including generated country data, maps, flags, localized names and capitals.

The app combines quick practice sessions with a daily habit loop. Users can train on country names, capitals, flags and map positions, browse a learning encyclopedia, inspect an interactive world map and come back each day for a fresh challenge.

Features

  • Offline geography data: learn from 197 countries and flags without relying on a network connection.
  • Daily Challenge: one shared geography puzzle per day with streak tracking and optional local reminders.
  • Adaptive training: practice history stays on device and helps prioritize questions the user misses more often.
  • Custom quiz sessions: choose regions, question formats, answer formats, flag answer difficulty, question limits and infinite mode.
  • Interactive map explorer: pan, zoom, select countries and connect names with real map positions.
  • Learning encyclopedia: browse countries, capitals and flags, with search and flag color filters.
  • Localized experience: app UI and geographic names support English, French, German, Spanish, Italian and Portuguese.
  • Mobile native feel: haptics, local notifications, dark mode, keyboard-aware layouts and smooth map rendering.

Tech Stack

  • Expo SDK 55
  • React Native 0.83
  • Expo Router
  • TypeScript
  • React Native Skia for map rendering
  • MMKV and SQLite for local storage
  • i18next for localization
  • pnpm workspaces and Turborepo

Repository Structure

.
├── apps
│   └── mobile          # Expo React Native app
├── packages
│   └── geo-data        # Generated country, flag and map data
├── stores
│   ├── content         # Localized store listing copy
│   ├── icons           # App and store icons
│   ├── images          # Marketing images
│   └── screenshots     # Store screenshots
└── tooling             # Shared tooling packages

Requirements

  • Node.js 22
  • pnpm 10.26.1
  • Xcode for iOS development
  • Android Studio for Android development

For native setup details, follow the Expo environment guide for custom development builds.

Getting Started

Install dependencies from the repository root:

pnpm install

Start the Expo dev server:

pnpm start

Use the local or LAN variants when needed:

pnpm start:local
pnpm start:lan

Native Builds

Geopoto uses expo-dev-client, so the first run on a simulator or device needs a native build.

Run iOS:

pnpm -C apps/mobile build:ios

Run Android:

pnpm -C apps/mobile build:android

After the first build, everyday JavaScript and TypeScript changes can usually use the dev server:

pnpm start

Rebuild the native app after changing native dependencies, Expo config, notification settings, app icons or build properties.

Quality Checks

Run the full project check:

pnpm check

Run individual checks:

pnpm lint
pnpm format
pnpm typecheck
pnpm test

Apply formatting fixes:

pnpm format:fix

Store Listing

Localized App Store and Google Play copy lives in stores/content, with marketing assets in stores/icons, stores/images and stores/screenshots.

Links

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages