Tech stack picker
Tell us what the product does and who will run it. Get a stack, with the reasons.
Answer six questions about the product and the people who will maintain it. You get a backend, a database, a web and mobile approach, and the reason for each, with links to the systems we run on them.
Recommended stack
0 of 5 answered. The stack appears when every question is in.
Why these options
Only stacks we run in production.
There are hundreds of frameworks, and most stack advice compares them on paper. This picker only recommends what Acasa Labs has shipped and still runs: FastAPI, Django, and Node.js for the backend; React Native with Expo or native SwiftUI for mobile; Next.js for the web; Supabase or plain PostgreSQL for the data, with pgvector or Qdrant when the product answers from documents. Every recommendation names a system on our work page that made the same choice, so you can see it working before you trust the reasoning.
The picker does not choose by popularity. It chooses by what the product does and who will maintain it after launch. A stack your team cannot read is a stack you will pay someone else to change, forever. So the language your team already knows carries real weight, unless the product pulls hard in another direction, as AI work does toward Python.
How it decides
Six questions, and what each one moves.
AI pulls the backend toward Python. Model SDKs, document parsers, embedding clients, and evaluation tools are written for Python first. If AI is the product and your team writes TypeScript, the picker keeps your main API in Node and puts the AI in a separate FastAPI service, which is how NoteTube keeps its model keys away from the web and mobile clients.
Back-office weight pulls toward Django. When staff spend their day managing records, roles, and approvals, Django's admin, permissions, and migrations save weeks of building screens nobody outside the company will see. SigmaCPM runs several products on one Django REST Framework backend for that reason. When the product is mostly the customer-facing app and the API, FastAPI is lighter and faster to work in, and its async model handles streamed AI answers and slow model calls without blocking other requests.
Live updates pull toward Supabase. Chat, live status, and dashboards that change while you watch need the server to push changes. Supabase Realtime does that on top of Postgres without a socket server of your own, and gives you auth, storage, and row-level security alongside it. GymFast runs a web dashboard and three apps on it. Without realtime needs and with a Python backend, plain PostgreSQL is simpler, and Postgres can carry more of the product than people expect: constraints, row-level security, and even a job queue.
On mobile, the default is React Native with Expo: one codebase for the App Store and Google Play, one team, native screens for normal app work. The picker recommends native SwiftUI when the app is a platform feature, like home screen widgets, deep background work, or heavy on-device processing, which is why Pullsy's iOS app is SwiftUI. If you only have a web audience, it says so: a fast Next.js web app may be all you need for now.
Before you commit
A stack is a starting point, not a contract.
The result is a reasoned first guess from six answers. The things that can change it are the ones a short form cannot see: an existing system you have to integrate with, a hosting rule from your IT team, a compliance requirement, or a developer you already plan to hire. Bring the result to a call and we will check it against those in thirty minutes. Whatever stack we pick together, you own the code, the repositories, and the cloud accounts from the first day.
Questions
Questions we get asked.
Should I use FastAPI, Django, or Node.js?
Use FastAPI for APIs and AI products, Django when there is a lot of back-office work with roles and approvals, and Node.js when your team writes TypeScript and the product has no heavy AI. We run all three in production.
React Native or native Swift for a mobile app?
React Native with Expo for most apps: one codebase for both stores and one team. Native Swift when the app is built around platform features such as widgets, deep background work, or heavy on-device processing.
Is Supabase good enough for production?
Yes. It is Postgres with auth, storage, row-level security, and realtime. GymFast runs a web dashboard and three mobile apps on Supabase, and the project sits in your own account.
Why Python for AI features?
Model SDKs, document parsers, embedding clients, and evaluation tools are written for Python first. Keeping the AI in Python means less glue code and fewer surprises.
Do I need a vector database?
Only if the product answers from documents. Start with pgvector inside the Postgres you already have, and move to Qdrant when the corpus or per-user scoping needs it.
Can you work with the stack we already have?
Yes. The picker is for new builds. If you already run a stack, we usually extend it rather than rewrite it, and say clearly when a part of it is holding the product back.
Tech stack picker
Check the stack against your real constraints.
Thirty minutes on what you are building and who will run it. You leave with a written plan: the stack, the scope, the timeline, and a number.