← Signals
EssayJun 2026

Anatomy of a weekend SaaS

I've shipped enough small products now to notice the pattern. Most of a "weekend SaaS" isn't code . it's a hundred tiny decisions about what not to build. This is the whole playbook, start to finish.

If you can't explain the wedge in one sentence, you don't have a product yet. You have a hobby.

1. The idea has to fit in a tweet

Before I open an editor, I write the pitch as if it were a tweet. If it needs a paragraph, the scope is wrong.

If the one-liner makes me want it, that's signal. If I have to convince myself, I kill it.

What I actually validate

  1. Does a workflow already exist that this slots into?
  2. Will someone pay something — even $5 — within a week?
  3. Can I ship a real v1 in a weekend?

If any answer is no, it goes back on the shelf.

2. The stack is boring on purpose

I optimize for time-to-first-user, not for résumé points. The stack is whatever I can move fastest in.

LayerWhat I reach forWhyFrontendNext.js + TailwindOne framework, zero context-switchingBackendAPI routes / a workerDon't split until it hurtsDataPostgres or UpstashBoring, durable, cheapPaymentsStripe / marketplaceNever roll your own

Notice what's missing: microservices, Kubernetes, a custom design system. Premature architecture is how weekend projects die on a Sunday night.

3. Ship the smallest real thing

Here's the actual core of a first integration — small enough to finish, real enough to demo:

// Resolve the smallest version that delivers the promise.
export async function handleScan(payload: ScanPayload): Promise<Result> {
  const board = await boards.findByToken(payload.token);
  if (!board) {
    throw new NotFoundError("board");
  }

  // The whole product, in one line of intent:
  return board.link(payload.contact);
}

The trick is the if (!board) branch. Beginners build the happy path; products are mostly the unhappy ones. I write the failure cases first now — empty states, expired tokens, the user who pastes garbage.

4. Make it look alive

A screenshot sells more than a feature list. Even a weekend tool gets a real hero image:

You don't need a designer. You need contrast, spacing, and one good font. That's 90% of "looks legit."

5. Charge on day one

The scariest, most useful step. A Buy button on launch day tells you in 48 hours what a survey never will. Some things I've learned:


That's it. No secret. Just: tiny scope, boring stack, unhappy-path first, ship it ugly, charge immediately. Do that five times and you learn more than one grand plan ever teaches you.

Building something from this? Tell me — I love seeing what people ship.