Every dev shop quotes MVPs as a range, and a range is useless when you are trying to budget. So here is one build, broken down line by line — where every hour went, what each part actually cost, and which decisions moved the number most. Yours will land somewhere else, but you will be able to see why.
The build: a Flutter app on a Supabase backend with Stripe payments. One founder, one core loop, paying users on day one, delivered in three weeks. Below is where every hour and every dollar went — and which choices would have pushed it up or pulled it down.
Where the three weeks actually went
Three weeks of MVP work is roughly 120 focused hours. Founders assume most of that is "the app" — the screens they can see. It isn't. The screens are about a quarter of it. The rest is the plumbing that makes those screens safe to charge money through.
Read the chart top-down and the surprise is the bottom half. Auth, deploy, and QA — the parts a founder never sees — are a third of the build. That isn't waste; it's the difference between a demo and something a stranger can pay you through on a Saturday night while you're asleep.
Two line items earn their size. The data model (30h) is where the whole app's future is decided — get the tables and row-level security right and every later feature is cheap; get them wrong and v2 becomes a migration. Payments (18h) looks small but it's the highest-stakes code in the build: Stripe's happy path is an afternoon, but webhooks, failed charges, and the "did they actually pay?" edge cases are the other day and a half. (For why we didn't burn hours bolting a type layer onto all this, we wrote that down here.)
The costs that aren't in the $7k
The $7k is labor. It is not the whole bill, and the line items founders forget are the recurring ones. None of them are large — that's the point. The fear of a runaway monthly SaaS bill is misplaced: the build is the cost, and running it is rounding error for the first year.
The first-year run cost — Supabase Pro at $25/mo, an Apple developer account at $99/yr, a domain, and error monitoring on a free tier that covers you for months — lands around $410. Stripe takes its 2.9% + 30¢ per charge, which is volume-dependent and comes out of revenue, not your build budget. Budget the build like a build and the infrastructure like a phone bill, because that's what they are.
What changes at $5k and at $10k
"$7k" isn't a law. It's the midpoint of a real tradeoff, and the honest version is what moves when the number does.
At $5k we don't do worse work — we do less of it. The cut is always scope, never quality: one platform instead of two, a hand-rolled admin view instead of a real dashboard, design from a component kit instead of custom. At $10k the additions are the things that pay for themselves once you have users: analytics so you can see what they do, a second user role, the polish that makes a paid product feel paid. What never moves between tiers is the bottom row — auth that's actually correct, payments that reconcile, and a data model that won't force a rewrite. Those are load-bearing at every price.
How to budget yours
- Price the plumbing, not the screens. If a quote is mostly UI hours, the auth, payments, and data work is either missing or hiding. Ask where it is.
- Spend the most on the data model. It's the cheapest thing to get right on day one and the most expensive thing to fix in month four.
- Treat infrastructure as a phone bill. A few hundred dollars for the first year. Don't let a $25/mo line item drive a decision that costs you a week of build time.
- Decide the cut line before you start. Know what comes out at $5k and what goes in at $10k, so scope changes are a choice, not a surprise.
An MVP is the smallest thing that proves people will pay — we wrote the long version of that here. The budget follows the same rule: spend on the parts that decide whether you get to build v2, cut everything that doesn't. We ship MVPs in 2–4 weeks for $2–10k on exactly this math; if you want the number for your build, talk to us →, or start from the stack we cost this against.

