Most of my prototypes never died because the idea was bad. They died before they got a fair test, buried under the setup.
A database here. Auth somewhere else. A queue service, a mail provider, a realtime layer, a place to watch logs. Each one is small on its own. Together, before a single user has touched the thing, I am maintaining six services for an idea I have not validated yet.
That is a strange trade for a prototype. The whole point of a prototype is to learn fast. Every service I add before launch is a decision I have to maintain, a credential to rotate, and a dashboard to check — all for an app that might get ten users this week.
Yatta JS is the backend I reach for now when the idea is small but the deadline is real. It is a backend-as-a-server for Bun: one process with your database, auth, mail, storage, realtime, jobs, and observability baked in. No build step — TypeScript runs directly. The prototype and its backend are the same thing, not a diagram of services I have to keep in sync.
What changes in practice is the order of work. Instead of spending the first evening wiring services together, I spend it on the actual feature: the data model, the realtime update, the job that runs after signup. If the prototype works, it is already running on a real backend, not a mock I have to rebuild later. If it does not, I have lost an evening, not a week of infrastructure.
There is a real trade-off, and I will not hide it. One process is not the right shape for every workload, and a prototype that finds real traction will eventually outgrow it. But that is a good problem — it means the idea survived contact with users. Most prototypes never get there, and the ones that die from setup overhead never even get the chance.
So my rule now is simple: the prototype gets one process. If it earns more, it can earn more infrastructure later.
Yatta JS is open source under MIT, on npm as yatta.js. Docs: https://yatta.js.org — Code: https://github.com/psrockstar098/yatta.js
What kills your prototypes: the setup, or something else?
Top comments (0)