People sometimes ask me what stack we use at Novemind. It's a fair question — the tools a team picks usually say something about how they think.
But the honest answer is it depends on the project. We're not married to a single stack, and I'd be suspicious of any agency that is. What I can share is the toolkit we reach for most often, and the principles that guide the choices.
Most of our web work is React with Next.js, on the App Router. This site you're reading is built on that exact stack — server-rendered for SEO, MDX for the blog, image optimization out of the box.
For styling, we use Sass for older codebases, Tailwind CSS for newer ones. TypeScript wherever the project will live longer than six months.
When the project is content-heavy (marketing sites, documentation, blog-driven), Next.js is hard to beat. When it's a SaaS dashboard, we'll often pair it with TanStack Query for data fetching and shadcn/ui for components.
For mobile, React Native when cross-platform matters and the app isn't pushing the OS to its limits. Native Swift / Kotlin when it does.
The backend choice depends on the workload, the team that has to maintain it, and the constraints of the project:
The language choice often follows the team more than the technical requirements. A Laravel app maintained by a team that already knows Laravel will outship a "more modern" Node rewrite that no one on the client side can confidently touch.
We rarely reach for microservices early. A well-structured monolith on Postgres can take a startup very far before infrastructure complexity actually pays off.
This is the area moving fastest, and we try to stay pragmatic:
The principle here: AI components should slot into a normal application architecture, not become the architecture themselves. Agents are tools, not magic.
We avoid infrastructure complexity until the application actually needs it. A Vercel deploy and a managed Postgres on Render is a perfectly good production setup for most projects under 100k users a month.
Underneath all of this is a single bias: we pick boring tools for the parts that aren't differentiated, and modern tools where modernity actually pays for itself.
Authentication? Use a battle-tested library, don't roll your own. Database? Postgres. Hosting? Whatever has the best operational track record. Background jobs? Boring queues that have existed for a decade.
The exciting tooling decisions get reserved for the parts of the system that are uniquely your business — the workflows that differentiate you, the AI integrations that make your product feel different, the UX that earns customer love.
Tech stacks are means, not ends. The real skill is matching the tools to the project's actual constraints — budget, timeline, team, scale, compliance — and resisting the temptation to optimize for things that don't matter yet.
If you ever want to chat about a specific stack decision, that's actually one of my favorite conversations to have. There's almost always a simpler answer than what people initially propose. You can see the kinds of projects we take on over at Novemind.