A field guide

How I shipped a real app without writing the code.

This is the workflow I used to build Knife Fight in one week, a production fantasy-football platform live on web and iOS. The method, loops and all.

Idea Explore Build Review ↻ repeat
01

Three loops, one week.

idea → shipped
01ExploreLovable
sketchreactrefine

React to a real UI before it's real code.

02BuildClaude Code
directit buildsverify

Direct it, verify it feels right, iterate.

03ReviewCodeRabbit
open PRit reviewsI fix

Catches the bugs I can't. Verify each flag, fix the real ones.

Running through all three: me. No tool decides what's worth building, or when it's good enough.

Then the merge is the deploy. Every green merge to main ships, automatically:
knifefight.io
The production web app. Live the moment a PR merges.
GitHub → Railway → Cloudflare
iOS · TestFlight
The same app, wrapped for the phone with native push.
Capacitor → Xcode → APNs
02

The cast.

who does what
You: the director
The scarce part
  • Define the product.
  • Make every product call: ship, wait, or cut.
  • Direct the UX, down to the pixel.
  • Decide when it's right.
The AI crew
Three specialists
  • Claude Code builds it, tests it, debugs it
  • CodeRabbit reviews every PR and catches what I can't
  • Lovable sketches UI to react to, fast
Under the hood
Wired once
Build
Node · React · Vite · Tailwind
Ship
GitHub · Railway · Cloudflare
Data & mail
Sleeper · ESPN · Resend
iOS
Capacitor · Xcode · APNs · TestFlight
03

What broke.

and what I did about it

The build was fast. It still had to catch its own mistakes.

A boolean stored as raw 0/1 shipped to production and rendered the literal string "0" next to every hand-drafted pick.
Caught it, fixed it at the real type boundary, added a regression test.
Autopick started too cautious and left a genuinely good player undrafted in a test run.
Relaxed the doctrine so it only avoids real structural risk, not every flagged player.
A waiver drop-chain capped at a magic number silently truncated valid plans on larger rosters.
Tied the cap to the real roster-capacity math instead of a hardcoded guess.
A synthetic chaos harness ran one deliberately ugly game day against the real server: feed outages, a stat correction, a canceled game.
It caught a launch-blocking bug before a single real game touched it.

If you can run a campaign, hold a roadmap, and tell good from bad, you already have the scarce part. The rest is setup.

04

Start here.

if you want to try this

You don't need the whole stack on day one. Start with one idea and the build loop; reach for the rest when you hit the wall it solves.

The AI crew
The three to start with: build it, review it, sketch it.
Ship it, once it's real
Code, hosting, domain, email. Wired once, then invisible.
Put it on a phone, later
Wrap the web app. Xcode and TestFlight come with an Apple Developer account.

But the real homework is the part no link teaches: build small things, put them in front of people, and develop the eye for what's good. That's the skill; the rest is setup.

Solo, AI-assisted, shown honestly: the implementation got cheap, I didn't become a developer. Want the deep version? Read the full case studies →