the stack

Every tool here has earned its place.

We don't chase tools for their own sake. This is the kit we reach for when something has to ship, scale, and still be a pleasure to maintain a year on, chosen because it makes the things that matter harder to get wrong.

01the language

TypeScript

Every line we ship is typed. Types are the cheapest tests you will ever write: they catch the broken rename, the missing field, and the impossible state before a user ever does. On a codebase meant to outlive its first release, that safety net is the difference between confident change and careful guesswork.

Shipped in 89 projects
typescriptlang.org
02the interface

React

React is how we think in interfaces: small, honest pieces that compose into something larger and stay readable as they grow. It is the most battle-tested way to build a UI on the web, with an ecosystem and a hiring pool no alternative can match. When a product has to keep evolving for years, that staying power is worth a great deal.

Shipped in 71 projects
react.dev
03the framework

Next.js

Next.js is our default for anything serious. Server rendering for speed and search ranking, a file-based router that scales past a hundred routes without turning to spaghetti, and one codebase that runs from the marketing page to the dashboard behind the login. We know it deeply enough to push it to its edges.

Shipped in 63 projects
nextjs.org
04the runtime

Node.js

One language across the whole stack. The same TypeScript that runs in the browser runs on the server, so there is no context switch, no second team, and no logic written twice in two dialects. For a small team shipping complete products, that single mental model is a quiet advantage.

Shipped in 31 projects
nodejs.org
05raw speed

Go

When a service has to be fast and handle thousands of requests at once, we reach for Go. It compiles to a single small binary with no runtime to babysit, its concurrency model makes parallel work feel natural, and it stays readable for years because the language refuses to get clever. It is what we trust for the backends that quietly carry real load.

Shipped in 6 projects
go.dev
06intelligence

AI Integration

We build with large language models the way we build everything else: on purpose. The hard part is not calling an API, it is knowing where intelligence genuinely helps and where it only adds latency and risk. We have shipped real features on the OpenAI platform and run hosted models through Replicate, and we stay honest with clients about the line between useful and merely impressive.

Shipped in 14 projects
platform.openai.com
07the data layer

PostgreSQL

When data has to be correct, we reach for Postgres. Decades of hardening, real transactions, JSON columns when you want them and strict schemas when you need them, and an extension ecosystem that quietly does the work of three other services. It is the database we trust with the things that matter most: your customers and your money.

Shipped in 21 projects
postgresql.org
08no server required

SQLite

Not every product needs a database server. SQLite is a complete relational database in a single file, fast and dependency-free, and quietly the most widely deployed database in the world. We reach for it when the data should live close to the user: in a desktop app, on the edge, or in a local-first product that keeps working offline.

Shipped in 16 projects
sqlite.org
09the styling

Tailwind CSS

Tailwind keeps styling honest. Design decisions live next to the markup they affect, the build ships only the classes you actually use, and a small senior team stays consistent across a hundred components with no sprawling stylesheet drifting out of sync. This site is built with it, top to bottom.

Shipped in 80 projects
tailwindcss.com
10the platform

Vercel

We deploy on Vercel because shipping should be boring. Every push gets its own preview URL, every release rolls back in a single click, and a global edge network puts your site close to your users without us renting servers to babysit. It lets a small studio run with the reliability of a much larger one.

Shipped in 42 projects
vercel.com
11the cloud

AWS

When a project outgrows the convenient defaults, AWS is where it goes. Object storage that never fills up, queues and functions that scale to zero and back, and the same infrastructure the largest companies in the world rely on. We reach for it when scale, reach, or compliance make it the right tool rather than the reflexive one.

Shipped in 18 projects
aws.amazon.com
12the edge

Cloudflare

Cloudflare sits in front of the things we need fast and safe. A global CDN, DNS that resolves in milliseconds, and a security layer that absorbs the traffic you never want reaching your origin. For a marketing site and an API alike, it is the cheapest performance and protection money can buy.

Shipped in 24 projects
cloudflare.com
13on the phone

React Native

When a product belongs on the home screen, React Native lets us build it with the same React mind and ship to both iOS and Android from one codebase. No throwaway prototype and no second team in a second language, just a real app that shares logic with the web product beside it.

Shipped in 8 projects
reactnative.dev
14the new build

TanStack Start

TanStack Start is the modern bet we have already started shipping. Type-safe routing, first-class data loading, and full-document server rendering, built by the people behind the query and routing libraries the whole React ecosystem already leans on. We reach for it on new builds where we want the router and the data layer to be type-safe from end to end.

Shipped in 4 projects
tanstack.com
15content, fast

Astro

For content-led sites where speed is the product, Astro is hard to beat. It ships almost no JavaScript by default, so a marketing site or a documentation set loads instantly even on a tired phone, and drops in an interactive island only where one earns its place. We built BIMFab this way, and it scores in the high nineties on every Lighthouse run.

Shipped in 6 projects
BIMFab+5 more
astro.build
16in three dimensions

Three.js

Real-time 3D in the browser, written by hand in GLSL and WebGL. There is no video here and nothing pre-rendered, only mathematics running on your graphics card sixty times a second. Everything moving on this site, the clouds, the globe, every badge above, was built this way, because a thing made of light feels different from a thing made of pixels.

Shipped in 9 projects
Every moving shape on this site. See how they are made.threejs.org
17the data, drawn

D3.js

When a chart off the shelf will not do, D3 lets us draw data exactly. It is the engine behind most of the data visualisation you have admired in the financial press, with control over every axis, transition, and pixel. We reach for it when the story hiding in the numbers deserves more than a default bar chart.

Shipped in 5 projects
d3js.org
18on the desktop

Electron

Some tools belong on the desktop, with the file system, native menus, and an icon in the dock. Electron lets us ship there on the same web stack, so a product can span browser and desktop without a separate native team. We have built and shipped a real Electron app, not a web page in a costume.

Shipped in 4 projects
Optimo+3 more
electronjs.org
the point

Tools are only as good as the hands that hold them.

A stack does not build a product. Judgment does: knowing which tool the job actually needs, and when the boring, proven choice is the right one. This is the kit we have earned our way around, and it is how we build work that matters.