PParrow Horrizon Studio
HorizonBook a call
04 / PLAYBOOK Engagement plays

The playbook.
Same rules every time.

Every practice we offer has a play behind it — a known shape, a known length, a known price band. Pick the one that matches your situation; we'll tell you on the call if it's the wrong one.

Harbour  one origin · 1 routeClick a route to open its play
Departure — week 00
01 · Cross-platform buildEach bead is one week of work
Select a playFixed scope · Senior-led · Weekly demos

One codebase. Web and mobile from the same source.

You need to be on the web and in the app stores — and you don't want two teams, two repos, and two copies of every bug. This play ships both surfaces from a single monorepo, so a change you describe once lands in both places.

What you get

  • A Turborepo monorepo — one repo, one install, one CI pipeline.

  • A Next.js web app on Vercel / Amplify / self-managed VPS hosting, with a live preview URL per pull request.

  • A React Native app (Expo) for iOS and Android, built store-ready.

  • Shared packages/* — design system, types, API client, and business logic, written once and used by both apps.

  • One source of truth for auth, data, and validation. No drift between platforms.

  • Every repo, cloud, and store account under your org from day one.

How it's built

  • apps/web (Next.js) and apps/mobile (Expo / React Native) sit side by side.

  • The shared packages/* hold everything both apps agree on — UI, models, API calls, config.

  • Types run end to end: change a shared model and both apps fail to compile until they're updated. Bugs surface before they ship, not after.

  • Turborepo caches the build graph, so CI stays fast as the codebase grows.

We've done exactly this

Wash Me is this play, shipped. One Turborepo, a Next.js web app and a React Native mobile app on a single codebase — a complete car-wash platform, web and mobile, from one source. Read the case study →

Web now, mobile later?

If you only need web today, that's a shorter play — but we lay the repo out so apps/mobile drops in later without unpicking anything. You don't pay the monorepo tax twice.

Read the full play ↗

Click a play to open it · one open at a time

Standing orders.
True in every play, without asking.

R—01

Friday Loom

A recorded demo of what moved this week, in your inbox before the weekend. Five minutes, no slides, real software.

  • Weekly
  • Recorded
R—02

Monday letter

One page: what we're doing this week, what we need from you, and what we'd cut first if the week goes sideways.

  • Written
  • One page
R—03

Preview per PR

Every pull request gets a live URL. You never wait for a deploy window to see a change we've described.

  • Vercel
  • Per change
R—04

Fixed price, drawn first

Scope is designed before it's quoted. Changes are welcome — they trade against something, and we say so out loud.

  • Signed scope
  • Trade, don't add
R—05

Your accounts

Repos, cloud, domains and analytics live under your org from day one. Nothing to reclaim if we part ways.

  • Day one
  • No lock-in
R—06

Founder on the call

The person who writes the code is the person you talk to. No account manager relaying context in either direction.

  • Senior-led
  • Direct
Data migration+2 wkSSO & SCIM+1 wkLoad & soak testing+1 wkAccessibility audit — WCAG AA+1 wkThird-party integrationscopedTeam handover training2 daysRetained care planmonthly

When we say no.
Cheaper for both of us, said early.

Staff augmentation

Two of our engineers inside your sprint board isn't a play — it's a headcount problem wearing an agency badge. We'd rather help you hire.

Rescues without a rewrite budget

If the codebase needs replacing and the budget only covers patches, we'll say so on the first call rather than bill you for six months of triage.

Anything under four weeks

Below a month there isn't room for research, a demo cycle, or a proper handover. You'd get output, not a result.

LogbookBook a call