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→