Portfolio Project

Trace
Runs as destinations.

A travel app for passionate runners โ€” curated editorial runs and AI-generated routes, written in Atlas Obscura voice.

React Native Expo SDK 56 TypeScript Cloudflare Workers Claude API Google Maps Platform
View on GitHub
Discover feed โ€” curated runs in an editorial card layout Discover
Generate screen โ€” drop a pin, pick a distance and vibe Generate
Run detail โ€” the route, real stops, and post-run move Detail

One React Native codebase โ€” running natively on iOS and Android.

Same on both platforms.

Discover

A curated, story-driven feed of iconic and hidden runs around the world. Each entry is hand-written in Atlas Obscura voice โ€” a hook, a story, what you'll pass, a post-run move. Photos ship in the app.

Generate

Drop a pin, pick a distance and a vibe, and the app builds a real walking-route loop and writes an Atlas Obscura-style entry for it. POI discovery, route stitching, and the writeup happen server-side in a Cloudflare Worker โ€” so iOS and Android produce identical results.

The pipeline

Google Places finds POIs within the radius. A spread-maximizing selector picks a diverse set. Directions API stitches a walkable loop and measures it. Claude writes the editorial entry grounded in real addresses and place names.


One codebase. Two platforms.
Server-side generation.

React Native (Expo SDK 56) TypeScript React Navigation react-native-maps Lora serif Cloudflare Workers Claude API Google Places API Google Directions API AsyncStorage SwiftUI (original)