Project · live on iPhone and web

Feral Travels

A road-trip planner for people who travel in their vehicle. You describe the trip in a sentence; Penny plans every day's drive, and Finn places fuel stops so you never run dry.

Loop · type request → plan builds → mapPenny chat with a trip requestThe planned itinerary, day by day, with a fuel stopMap of the planned route
Two weeks in Spain's national parks, planned from one message.
3,000+unit and component tests
97 + 44Playwright tests (web) + Maestro flows (iOS)
142recorded decisions, each mapped to the test that enforces it, or flagged if none does
829commits in 6½ months, one engineer

The engineering

Built like a team of one that can't afford a bad deploy

  1. 1

    Every PR gets its own database

    CI branches a fresh Neon database per pull request, runs the suites against a real preview deploy, and only a promote workflow can migrate and ship production — in that order.

  2. 2

    Incidents become guards, not memories

    Each production incident has a written postmortem and a structural fix that makes the class of bug impossible to reintroduce — mutation-checked by putting the bug back and watching the test fail.

  3. 3

    E2E tests that behave like real users

    Playwright on the web and Maestro on iOS sign up, plan trips and receive real email — no backdoors — so the suites catch the bugs users would.

  4. 4

    An LLM kept on a short leash

    Penny uses Claude Haiku only to turn a sentence into typed API calls; the planner around it is deterministic. A classifier ahead of the model can be switched per user from the admin panel.

In the app

One message to a 14-day plan

Stack

Next.jsExpo / React NativeVercelNeon PostgresDrizzleClaude HaikuGoogle Directions + PlacesRevenueCatVitestPlaywrightMaestroGitHub Actions