Pular para o conteúdo
← Blog

Starting a product with the boring parts already done

· Marcos Silva · 1 min read

Most of the first week of a new product is spent rebuilding the same things: sign-up, sessions, password hashing, a way to run work in the background, an e-mail sender, and eventually a way to charge for it. None of that is the product. All of it has to be right.

What is already here

Accounts come in two shapes from one data model — a personal account per user, or shared workspaces with invitations and roles when a product needs them. Every business row is scoped to an account, and that boundary is covered by tests rather than by good intentions.

Background work runs on Celery with bounded retries and honest failures. When an external provider is down, the job says so; it does not invent a result.

Billing is Stripe, with the parts that are identical in every product already written: customer per account, signed webhooks, idempotent event handling.

What is deliberately missing

There is no example feature. A boilerplate that ships a toy makes every new product start by deleting one, and the toy quietly becomes the template people copy. The reference for adding a feature is the recipe in CLAUDE.md and the real modules next to it.

Build the abstraction when you have the second case, not the first.

That is the whole idea: start from infrastructure that is finished, and spend week one on the part somebody will actually pay for.