The mental model

A Patties app is mostly a folder convention plus a small runtime. You write route modules and islands; the framework discovers them at build time, inlines them into the production bundle, and serves them with Bun.serve. There is no separate bundler, file watcher, or glob library to wire up — Bun ships those, and Patties uses them directly.

You write…In…Bun primitive behind it
Route modulesapp/routes/Bun.Glob discovery → Bun.serve routes
Interactive islandsapp/islands/Bun.build client entries
Middlewareapp/middleware.tscompose() over Request
Configpatties.config.tstyped config + adapters

The one thing to remember

Expensive thinking happens at build time. Route and island discovery runs once during patties build and is inlined into the bundle — the production server never re-scans the filesystem. Dev mode is the exception: it may re-scan on change to drive HMR.

Browse the docs

Looking for design intent?

This section is the user documentation. If you want to understand why the framework is shaped the way it is — the modular-monolith convention, the public-API boundary, why there is no DI container — the design specifications are indexed with their status on the Release page, and the specs themselves live under Specs. To see what shipped in each version, see the Changelog.

Patties documentation · Licensed under MIT. · Design specs