Full-stack TypeScript starter

Designed to be built on
by AI coding agents

Server-rendered JSX, light-touch client JS, custom CSS — one codebase, one test runner, one deploy target. Deterministic templates with strong types that agents can reason about and test with confidence.

Left to their own choices, AI coding agents reach for what they know best: React with Next.js. The result is a thick-frontend app split across client and server, locked into a specific ecosystem, requiring multiple test systems to simulate browser state, and unnecessarily complex to deploy.

Single-instance server rendering with light-touch client JavaScript. Templates are deterministic functions of their props — given the same input, they produce the same HTML. Trivial to test without browser simulation. One process, one deploy target.

Capture your backpressure

AI agents work best when they get told they're wrong immediately — not by you, by the toolchain. Type errors, failing tests, lint warnings: that's backpressure. Every automated check that catches a mistake is one less time you have to context-switch back in to fix something a machine should have caught.

What's included

Auth, security, database, testing, linting — the rails are laid so your agent can focus on building your product.

Authentication

Magic-link email login, session management, guest sessions, admin roles

Security

CSRF protection, rate limiting, session fixation prevention, security headers

Database

PostgreSQL via Bun.SQL, auto-migrations, seed scripts, parameterised queries

Testing

220+ tests, deterministic templates, real database testing, no browser simulation

Frontend

Server-rendered JSX, custom CSS via Bun bundler, opt-in client interactivity, flash messages

Code Quality

Biome linting, strict TypeScript, pre-commit hooks, structured logging