Ship full-stack apps
at the speed of thought
Norns is the batteries-included meta-framework for Svelte.Pug + Civet, feature folders, valibot routes, migrations, dependency injection —wired up the day you clone.
Form(action="?/save"form!="{form}")Field(label="Title"name="title"required)Input(name="title"placeholder="My new note…")Btn(type="submit"icon="lucide:save") Save <script>/* errors auto-bind from form context */form.$bindable({}) </script>
The stack that ships
Everything you need,
nothing you don't
Pick the pieces that fit. Each one is composable, typed, and small enough to read in one sitting.
Auto-imports for everything
Drop a.n file insrc/lib/components/ and it's auto-imported everywhere. Helpers, stores, schemas — same story.
Validated routes
valibot schemas validate form data + load shapes at the boundary.
Migrations baked in
SQLite + D1. Forward-only, idempotent, with a stamped schema table.
001_init.sql002_add_notes.sql003_users.sql (pending)Dark mode for free
Role-token theme swap on a singledata-theme attribute. No per-component class:dark noise.
70+ components, role-token themed
Auto-imported. Override any component by dropping the same filename in your project —.n shadows the library silently.
Civet on top
Indented, type-aware. Compiles to standard ESM —.= $state 0 just works with Svelte 5 runes.
Three files, end-to-end typed
A note CRUD: route, server, schema. Less code than the framework it sits on.
/* +each from a server-loaded list */section.space-y-4h1.text-2xl Notes +each('data.notes as note (note.id)')Card(href!="{`/notes/${note.id}`}")h2.text-base {note.title}p.text-sm(class="text-fg-muted") {note.body} <script>letdata :=$props() </script>
Where we're headed
- May 20260.0.7 shipsPrefers-reduced-motion respects but keeps animations visible
- May 20260.0.6 shipsbits-ui dropped; in-tree behaviors on @floating-ui/dom
- Jun 2026norns CLI 1.0scaffold, migrate, deploy commands stable; preview deploys
- Jul 2026Cloud previewManaged hosting with edge + D1 + Postgres adapters
- Q3 2026Stable 1.0Documented adapter story, semver, LTS support window
Compared with the alternatives
The opinionated parts most starter kits leave to you — already in the box.
| Feature | Norns | SvelteKit | Next.js | Remix |
|---|---|---|---|---|
| Auto-imports | ||||
| Pug + Civet templates | ||||
| Type-safe form actions | partial | partial | ||
| Migrations baked in | ||||
| Dependency injection | partial | |||
| UI library included | ||||
| SSR + streaming | ||||
| File-based routing | ||||
| License | MIT | MIT | MIT | MIT |
Simple, honest pricing
The framework is free. You only pay if you choose hosting.
Open source
default Free- Full framework + CLI
- norns-ui (70+ components)
- Self-host on any node host
- SQLite + D1 adapters
- Community Discord support
Cloud
billed annually
- Everything in Open source
- Managed hosting + edge functions
- D1 + Postgres add-ons
- Preview deploys per PR
- Email support
Team
Betabilled annually
- Everything in Cloud
- Unlimited collaborators
- Audit log + SAML SSO
- Priority support + SLA
- Quarterly architecture review
Loved by builders
"Blank repo to a deployed app with auth + a DB in one evening. Norns just gets out of the way."
"Pug + Civet sounded like a meme until I tried it. Every spare line in our codebase felt noisy after."
"The type-shim drift detector caught three bugs in our first migration. The migration ran in 12ms."
"Tailwind + role tokens means I stopped writing CSS. The design team is suspicious — in a good way."
"It's Svelte but it feels like one person built the whole stack on purpose. Coherent."
"Production-ready feature folders, DI, valibot. We deleted half our app code in a single PR."
"Came for the markup, stayed for the migrations CLI. Forward-only with a stamped table — chef-kiss."
"Goto considered harmful. Auto-imported components considered delightful."
"Blank repo to a deployed app with auth + a DB in one evening. Norns just gets out of the way."
"Pug + Civet sounded like a meme until I tried it. Every spare line in our codebase felt noisy after."
"The type-shim drift detector caught three bugs in our first migration. The migration ran in 12ms."
"Tailwind + role tokens means I stopped writing CSS. The design team is suspicious — in a good way."
"It's Svelte but it feels like one person built the whole stack on purpose. Coherent."
"Production-ready feature folders, DI, valibot. We deleted half our app code in a single PR."
"Came for the markup, stayed for the migrations CLI. Forward-only with a stamped table — chef-kiss."
"Goto considered harmful. Auto-imported components considered delightful."
"Goto considered harmful. Auto-imported components considered delightful."
"Came for the markup, stayed for the migrations CLI. Forward-only with a stamped table — chef-kiss."
"Production-ready feature folders, DI, valibot. We deleted half our app code in a single PR."
"It's Svelte but it feels like one person built the whole stack on purpose. Coherent."
"Tailwind + role tokens means I stopped writing CSS. The design team is suspicious — in a good way."
"The type-shim drift detector caught three bugs in our first migration. The migration ran in 12ms."
"Pug + Civet sounded like a meme until I tried it. Every spare line in our codebase felt noisy after."
"Blank repo to a deployed app with auth + a DB in one evening. Norns just gets out of the way."
"Goto considered harmful. Auto-imported components considered delightful."
"Came for the markup, stayed for the migrations CLI. Forward-only with a stamped table — chef-kiss."
"Production-ready feature folders, DI, valibot. We deleted half our app code in a single PR."
"It's Svelte but it feels like one person built the whole stack on purpose. Coherent."
"Tailwind + role tokens means I stopped writing CSS. The design team is suspicious — in a good way."
"The type-shim drift detector caught three bugs in our first migration. The migration ran in 12ms."
"Pug + Civet sounded like a meme until I tried it. Every spare line in our codebase felt noisy after."
"Blank repo to a deployed app with auth + a DB in one evening. Norns just gets out of the way."
Common questions
Can I use it with existing SvelteKit apps?
Yes — Norns sits on top of SvelteKit, so every adapter, hook, and form action keeps working. .svelte and .n files coexist in the same app.
Why Civet on top of Svelte?
Civet compiles to standard ESM, so Svelte 5's runes, derived state, and effects work without preprocessing tricks.
What's the license?
MIT. Use it commercially, fork it, vendor it — no strings attached.
Can I use norns-ui without Civet?
Yes. The polymorphic Btn href pattern, role-token CSS, and behaviors module work as plain Svelte+TS too.
Is it production-ready?
The framework is stable enough for side projects today. Stable 1.0 with a documented adapter story is targeted later this year.
Stop wiring boilerplate.
Start shipping.
The framework you would have built yourself if you had the time. We did.
The batteries-included meta-framework for Svelte. Open source, MIT licensed, built in the open.