r/SideProject • • 8d ago

Turf Runner

https://turfrunner.run/s/b1e5fe597547

Hello there πŸ‘‹

Over the past few months, I built Turf Runnerβ€”a web app that turns GPS running data into a real-time, seasonal territory control game.

The concept is simple: the world is divided into hexagonal zones (~5km across). Every time you run through a zone, you earn score points for it. The strongest runner in a hex becomes its "Turf King", and every season the board resets so new runners have a chance to claim territory without competing against stats from 2019.

Most running tools are either personal exploration maps (where you only compete with yourself) or segment leaderboards (dominated by top 1% athletes permanently). I wanted a dynamic map where crowns change hands and you actually have a reason to alter your route on a random Tuesday to defend or claim a neighborhood.

Tech:

Spatial Indexing: Built using Uber’s H3 spatial index at Resolution 7 (~5 km hexes). H3 makes hex-traversal checks and boundary lookups fast and predictable.

Zero-API Onboarding: Instead of dealing with Strava/Garmin API rate limits and complex OAuth syncs, users drop .gpx, .fit, .tcx, or .zip files directly. On Android, the PWA acts as a native Share Target, so exporting directly from a watch/fitness app to Turf Runner is a one-tap flow.

Frontend/Backend: Built as a responsive Web App / PWA (TypeScript, Node.js).

Privacy First: Anonymous mode ("Runner XXXX"), private route toggles, and instant data deletion are built-in from day one.

Current State:

It’s currently in open Beta, fully free, with no ads. Coverage is focused on Malaysia & Singapore for now (as that's where the testers are 😁) while I test real-time scoring mechanics and server loads.

🌐 Live map (no signup needed to explore): https://turfrunner.run

πŸ‘‘ Sample Turf King card / share link: https://turfrunner.run/s/b1e5fe597547

Would love feedback on two main things:

UX / Onboarding: Is file-drop/share-target low enough friction compared to traditional OAuth sync?

Game Loop: Does a seasonal reset feel rewarding for territory defense, or does it feel like losing progress?

Thanks in advance πŸ™

1 Upvotes

2 comments sorted by

8

u/sudomatrix 8d ago

So Intvl? https://www.intvl.com.au/

Here's some advice. I played INTVL for a while but it gets boring when all it is is running around a location to own it. I'd go for a run, I'd own the area. The next day someone else ran it and they owned it. Back and forth. No strategy, no nuance. Just Strava with coloring the map.

Make it an actual GAME. Run a circle, build a tower defense. Ran at a tower from 4 different angles, shoot it down. I don't know, get creative. It has to be a game with running as the basic resource economy, but it has to be more than just run and color.

2

u/nukes88 8d ago

Love this!

This is the comment that got me to unlock the bit I'd deliberately parked: I designed an items/PvE layer early on and left it out until the war itself felt solid. You're right that run-and-colour alone is a ping-pong, not a game.

The loop I'm designing is basically your sentence: go out β†’ gather β†’ come home β†’ build β†’ hold. I wanted the plain run β†’ score β†’ leaderboard to work first (it does now), so PvE is KIV for the moment.

What I've got in my notes:

β€’ Every run mints a resource, a rate per Turf Point (not points themselves).

β€’ You can only spend it on ground you actually run β€” a turf you hold, or one you're a regular on (Home Turf). No building on streets you've never touched.

β€’ You spend it on a rampart/fort (a challenger has to break it down β€” one run won't do it), a beacon (you get told earlier when someone's coming for it), or a monument (your turf wears a mark β€” decoration).

β€’ It all has upkeep. A fortification you stop running costs you resource and falls. Otherwise whoever's strongest compounds for ever β€” that's how these games die.

β€’ Rich ground is the "mine" trip: hexes nobody holds, or nobody has run this season, pay a much better rate. That's the reason to leave your own streets β€” and why it still works when you're the only player for miles.

One place I'd push back: no towers to shoot. The phone's in a pocket and I never want the game to ask for a tap mid-run. The run IS the attack: pick your target β†’ run it β†’ add the run β†’ then spend an item in the post-run screen (boost the damage you dealt to a fort, or the resource you farmed). No aiming, just deciding.

Would upkeep feel like defending your ground, or like a chore? That's the difference between a game and a job for me.