Technology

A small stack we know well.

We stay on TypeScript from the browser to the server. Fewer languages means fewer handoffs and a codebase your next developer can read.

Frontend

Next.jsReactTypeScriptTailwind CSSRadix primitives

Server rendering for fast first loads, one language across the stack, and a component library we can reuse between client projects.

Backend

Node.jsNestJSPrismaREST and GraphQL

Typed APIs with a structure a new developer can follow. Prisma keeps the schema and migrations visible.

Data

PostgreSQLRow-level securityObject storage

One relational database by default. Permissions live in the database, not only in the UI.

AI

Model APIsMCPWorkflow queuesEvaluation notes

Models are a dependency, not the product. Every AI feature has a fallback and a way to see why it failed.

Mobile

React NativeExpoFirebase Cloud Messaging

One codebase for Android and iOS, with push notifications and offline caching for field use.

Infrastructure

VercelDockerCoolifyGitHub Actions

Managed where it saves time, self-hosted where the client needs control. Deploys run from the repository.

What that means for you

No lock-in

The repository, the database and the deployment accounts stay with you.

Hiring is easier

React, Node and Postgres are common skills. You are not stuck with a rare framework.

Fewer moving parts

One database and one language until a real constraint says otherwise.

Want a second opinion on your stack?

We will tell you what to keep and what is costing you time.

Start a conversation