The boring architecture.

Express handles routing, React renders the views, Inertia connects the two. That's it.

Install in one command
$ curl -fsSL https://raw.githubusercontent.com/alphaofficial/theboringarchitecture/main/install.sh | bash

Interactive setup for app name, database, session secret, and migrations. Add --quick my-app for defaults.

View install script on GitHub →
Request-to-page flow
1Express routeGET /posts/:id
2Controllerres.inertia("Post", props)
3React pageSSR first, hydrated after

Batteries included.

Everything you need to ship a production app, wired up and ready to go.

Server-side rendering

Pages render on the server first, then hydrate into a full SPA. Fast initial loads, smooth navigation after.

Authentication

Registration, login, forgot password, password reset, and email verification — wired and ready to extend.

Database & ORM

Schema-first mappings with migrations. SQLite by default, Postgres when you need it.

Background jobs

Dispatch async work and run it in a separate process. No external queue service required.

Mailer

Send transactional email out of the box. Log driver for dev, SMTP for production, pluggable for anything else.

Task scheduling

Cron-style recurring jobs. Define them in code, run them with one command.

Event bus

Type-safe in-process events. Decouple your features without adding infrastructure.

Cache

Simple key-value store. In-memory by default, pluggable for Redis or anything else.

File storage

Store and retrieve files with a clean API. Local, memory, and S3 drivers included.

Production hardened

Security headers, graceful shutdown, health probes, structured logs, body limits.

Type safety

Page names checked at compile time. Props flow from controller to component with full type coverage.

Fast tooling

Hot module replacement in dev, optimized bundles in production. No waiting around.

Rate limiting

Opt-in per-route throttling. Off by default, env-configured, ready for production.

XSS protection

Page props are HTML-escaped end-to-end. Untrusted data is safe by default.

AI ready

Opinionated structure means AI assistants follow conventions instead of guessing. Less correction, more shipping.

From zero to shipping in three steps.

1

Install

One command scaffolds a full project — database, auth, sessions, migrations, and dev server.

2

Develop

Write controllers, models, and React pages with the same patterns you already know. MVC with TypeScript end-to-end.

3

Ship it

Your page is server-rendered, type-safe, and ready for production. Deploy anywhere Node runs.

Ship something this weekend.

No accounts. No telemetry. No signup. Install, develop, deploy.