Alexandr Chibilyaev on the journey from pet project to a platform with 60,000+ users: technical decisions, mistakes, the stack, and lessons from solo-developing AI infrastructure.
I regularly get messages from developers who want to build their own SaaS solo. "How do you do it?", "What stack did you pick?", "What was your biggest mistake?" This post is an honest answer to those questions.
Monolith with clear boundaries. Not microservices. One Next.js project, but with rigorously defined modules: blocks/, tools/, executor/, providers/, stores/. Each module acts like a microservice, but without network latency and operational complexity.
End-to-end type safety. Drizzle โ Zod validation โ tRPC/oRPC โ typed React hooks. Not a single any. This saved me from hundreds of bugs I would've otherwise caught in production.
Infrastructure as code. Docker Compose, Coolify, environment variables in one place. I can spin up a production environment on a new machine in 20 minutes.
Production features first. No "we'll make it pretty later." Observability, logging, error handling, retry logic, backups โ all of it was built in from day one, not bolted on when things started hurting.
Early tool choices. I burned weeks on migrations: from one auth provider to another, from one UI library to another, from one ORM to the next. Every migration freezes feature development. Now I spend twice as long choosing tools, but switch them ten times less often.
Underestimating i18n. Adding a second language to an existing project is hell. Not "translate the strings" โ rebuilding the entire pipeline: from static key typing to page metadata. I eventually wrote a Python script for managing translations โ it became indispensable.
UI perfectionism. I spent way too much time pixel-polishing components that 2% of users ever touch. The rule I now follow: if a feature isn't on the primary user path, it gets a "good enough" UI, not a "perfect" one.
Automate everything. CI/CD, tests, linting, formatting, deployment โ not a single step should require manual intervention. I spend time writing automation, not repeating the same actions over and over.
Make architectural decisions slowly. Most decisions are reversible. Architectural ones aren't. Database choice, protocol choice, execution model โ these are for years. I spend days on research before making these calls.
Don't be afraid to rewrite. If a module becomes unmanageable โ cut it out and rewrite it. It takes less time than maintaining legacy code for years.
Sleep. Seriously. Burnout isn't a metaphor. There's no point building a platform if you can't sustain it.
I don't plan to stay a solo developer forever. The platform is growing, and with it grow the demands: on security, on documentation, on support quality. But the first year and a half of solo development gave me something a team couldn't have: deep understanding of every byte of the system and total control over the product vision.
Now I'm looking for engineers who share that vision: AI agents as infrastructure, reliability as a core value, code as craft.
If that sounds like you โ I'm open to a conversation.