Keep Your SaaS Stack Simple - Lessons from Building a macOS Desktop App
Keep Your SaaS Stack Simple When Building a Desktop App
When you are building a macOS desktop app as a solo founder or small team, the temptation to over-engineer your backend stack is real. Every week there is a new database, a new deployment platform, a new observability tool. But the founders who ship fastest keep it dead simple early on.
The Minimal Stack That Works
Vercel for the frontend and API routes. A single Postgres instance for everything. Basic logging to stdout with structured JSON. That is the entire backend for the first year.
No microservices. No message queues. No separate analytics pipeline. No Kubernetes. Each of those tools solves a real problem - but a problem you do not have yet when you are pre-product-market-fit.
Why Desktop Apps Change the Equation
When your product is a native macOS desktop app, most of the compute happens on the user's machine. The backend handles authentication, license management, crash reporting, and maybe some API proxying. You do not need the same infrastructure that a SaaS web app with thousands of concurrent users requires.
The desktop app itself is the complex system. SwiftUI, accessibility APIs, system integrations, sandboxing rules - that is where your engineering effort should go. The backend should be boring and reliable.
When to Add Complexity
Add infrastructure when you hit a specific pain point, not in anticipation of one. When your single Postgres instance starts showing slow queries, then consider read replicas. When your logging volume exceeds what you can search manually, then add an observability tool. When you have enough users that deployments need zero downtime, then invest in that.
Every piece of infrastructure you add is a piece you have to maintain, monitor, and debug when it breaks at 2 AM. For a small team building a desktop product, the fewer moving parts on the server side, the more time you have for the product itself.
Fazm is an open source macOS AI agent. Open source on GitHub.