Skip to content

One boring stack, labelled honestly.

Boring is the point. Every item below is marked as shipped, available, or not yet. The AI layer is isolated so a model can be swapped without touching the product.

Default stack by layer with status
Layer What we use Status
Language TypeScript, end to end Shipped
Python for data and model work Shipped
Web and product Astro for content sites This site. Shipped
Next.js or React Router for app UIs Available
Tailwind CSS Shipped
React Native and Expo for iOS and Android Nibblio. Shipped
API and jobs Node (Hono or Express) or FastAPI Shipped
Background jobs with a queue Nibblio, on RabbitMQ. Shipped
Data PostgreSQL Shipped
Vector search in Postgres (pgvector) Available
Redis for caching and queues Available
AI layer One model interface, swappable per task Model accounts are yours. Shipped
Evaluation sets on your real data, run on every change Shipped
Review queues for low-confidence cases Shipped
Retrieval over your documents Available
Fine-tuning Not yet shipped
Auth, payments, email Managed auth (Clerk or Auth.js) or your identity provider Available
Stripe Available
Transactional email (Resend) Shipped
Cloud and operations Cloudflare, AWS or Hetzner, on your account Shipped
Infrastructure as code, CI with tests on every change Shipped
Error tracking (Sentry) and uptime monitoring Shipped

Questions we get on the first call.

Which AI models do you use, and are we locked in?

We choose the model per task, by quality and cost, and keep the model layer behind one interface so it can be swapped. Model accounts are yours from day one. Nothing in the build ties you to one vendor.

Can you use our stack instead?

Often, yes. If your system is TypeScript, Python or a mainstream cloud, we work inside it. If it is something else, we say so on the first call and quote accordingly or recommend someone else.

Why this stack?

Because we have shipped with it and can support it. TypeScript end to end keeps one language across the product. Postgres is boring in the right way. The AI layer is isolated so a model can be swapped without touching the product.

Book a call, or send the brief. A written price in three working days.

No NDA needed for the call. We sign one within 24 hours if you want it.