Terravel gives you one geography question each day. After answering, you place the location on a real world map and see how far your pin landed from the truth. The place and its story are then saved to your Passport. The daily challenge is free, while Terravel+ opens the archive, extra expeditions, mistake review, and deeper statistics.

Inspiration

I enjoy geography games, but I often finish a round knowing whether I was right without remembering much about the place. I wanted to make something slower and more useful: one place a day, one question, and enough context to make that place stick.

The map round came from a simple observation. Recognizing a name and knowing where it belongs are different skills. Asking both questions made the reveal much more satisfying and gave Terravel its main game loop.

What it does

Each day starts with a multiple-choice geography question about one real place. Once the answer is revealed, the player continues to the map and drops a pin where they think the place is. Terravel draws the route between the guess and the actual location, shows the distance, and calculates a score out of 1,200 points. The score combines the answer, map accuracy, and time.

Completing the round earns XP, continues a streak, and adds the place to the player's Passport. The Passport tracks countries and continents, assigns rarity levels, and keeps the story behind each discovery. Terravel also includes practice rounds, weekly expeditions, mistake review, archive replay, and private Terravel Circles where friends can compare daily scores.

Players can share a challenge card without revealing the day's answer. Free cards include the Terravel name; Terravel+ removes that branding while keeping the required photography credit.

The daily challenge is free. Terravel+ unlocks unlimited expeditions, the full playable archive, personalized mistake review, advanced Passport statistics, Streak Shields, bonus places, and additional customization.

How I built it

Terravel is an iPhone app built with Flutter and Dart. The maps use flutter_map with CARTO tiles and an OpenStreetMap fallback. Tiles are cached, and attribution is always shown. The same map system is used for the daily pin round, place pages, and map questions inside the mastery modes.

RevenueCat handles the Terravel Pro entitlement and the annual, monthly, and lifetime packages. I use RevenueCat placements for the onboarding offer, archive gate, post-challenge offer, bonus place, global Terravel+ button, and other locked features. Prices and available packages come from the store instead of being hard-coded in the interface.

The paywall appears when it makes sense: after the first completed discovery, after every third later completion, or when someone taps a locked feature. It is not shown at random on launch. The app also makes sure a paywall, reminder request, and rating request are never stacked in the same session.

Terravel Circles use an AWS Lambda service for private leaderboards. Place data and quiz content live in the app, and the photographs come from Wikimedia Commons with their creator and license information attached.

Challenges I ran into

The scoring system took the most tuning. A wrong answer still needed to leave room for a good map guess, while a correct answer could not make the map round feel pointless. The final score uses 500 points for the answer, 500 for map distance, and 200 for speed.

Maps were another source of edge cases. I needed the map to look consistent in light and dark mode, keep working when the preferred provider was unavailable, cache tiles responsibly, and preserve attribution without covering the controls.

The paywall also went through several versions. The first designs explained too much and appeared in places where the player had not yet seen the value of the app. The current version waits until after a completed challenge or a clear feature gate, and keeps the daily game available for free.

Accomplishments that I am proud of

I am happiest with the handoff from the quiz to the map. The player first works out what the place is, then has to prove they know where it is. Watching the map travel from the guess to the correct location makes the result easy to understand without adding another explanation screen.

I am also proud that the app now feels like one product in both themes. The editorial type, warm paper colors, dark atlas palette, photography, maps, cards, and paywall all use the same visual language.

What I learned

Small pieces of friction matter a lot in a daily game. If the question is hard to read, the map is too dark, or the next action is unclear, the whole routine feels longer than it is. Testing on a real phone exposed problems that were easy to miss in a simulator, especially contrast, safe areas, share sheets, and store products.

I also learned that a paid offer works better when it answers an immediate need. Someone opening a locked archive understands why Terravel+ is there. Someone who has just launched the app for the first time does not.

What's next

Next I want to add more places and improve the question set without making the daily round longer. I also want to build better weekly summaries for Terravel Circles and test the current paywall placements with real conversion data. The short-form quiz tools I built for social posts will continue to bring individual places from the app to Reels, TikTok, Shorts, and Threads.

Built With

Share this project:

Updates

Submission history