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.

Open source, MIT
Type-safe end-to-end
Works with SvelteKit
< 60 kB gz
src/routes/+page.n
.n
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>
Svelte 5
Tailwind v4
Civet
valibot
SQLite + D1
Cloudflare
Vite 5
SvelteKit
Svelte 5
Tailwind v4
Civet
valibot
SQLite + D1
Cloudflare
Vite 5
SvelteKit
By the numbers

The stack that ships

0kB
Bundle size (gzip)
0+
Components
0ms
Avg hot reload
<0m
Time to first deploy
Features

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.

Zero ceremony

Auto-imports for everything

Drop a.n file insrc/lib/components/ and it's auto-imported everywhere. Helpers, stores, schemas — same story.

<Btn><Field><Dialog>cn()toast()page$state$derived…all components
Typed

Validated routes

valibot schemas validate form data + load shapes at the boundary.

title: string
body: optional(string)
tlte: not in schema

Migrations baked in

SQLite + D1. Forward-only, idempotent, with a stamped schema table.

001_init.sql
002_add_notes.sql
003_users.sql (pending)
Theming

Dark mode for free

Role-token theme swap on a singledata-theme attribute. No per-component class:dark noise.

--primary-500
light theme
--primary-500
dark theme
norns-ui

70+ components, role-token themed

Auto-imported. Override any component by dropping the same filename in your project —.n shadows the library silently.

Btn Card Dialog Sheet Dropdown Tooltip Tabs Accordion DatePicker Autocomplete Toast DataTable

Civet on top

Indented, type-aware. Compiles to standard ESM —.= $state 0 just works with Svelte 5 runes.

Code preview

Three files, end-to-end typed

A note CRUD: route, server, schema. Less code than the framework it sits on.

src/routes/notes/+page.n
/* +each from a server-loaded list */
section.space-y-4
  h1.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>
  let data := $props()
</script>
Roadmap

Where we're headed

  1. May 2026
    0.0.7 ships
    Prefers-reduced-motion respects but keeps animations visible
  2. May 2026
    0.0.6 ships
    bits-ui dropped; in-tree behaviors on @floating-ui/dom
  3. Jun 2026
    norns CLI 1.0
    scaffold, migrate, deploy commands stable; preview deploys
  4. Jul 2026
    Cloud preview
    Managed hosting with edge + D1 + Postgres adapters
  5. Q3 2026
    Stable 1.0
    Documented adapter story, semver, LTS support window
Why Norns

Compared with the alternatives

The opinionated parts most starter kits leave to you — already in the box.

FeatureNornsSvelteKitNext.jsRemix
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
Pricing

Simple, honest pricing

The framework is free. You only pay if you choose hosting.

Open source

default Free
$0/forever
  • Full framework + CLI
  • norns-ui (70+ components)
  • Self-host on any node host
  • SQLite + D1 adapters
  • Community Discord support
★ Recommended

Cloud

$15/month

billed annually

  • Everything in Open source
  • Managed hosting + edge functions
  • D1 + Postgres add-ons
  • Preview deploys per PR
  • Email support

Team

Beta
$65/month

billed annually

  • Everything in Cloud
  • Unlimited collaborators
  • Audit log + SAML SSO
  • Priority support + SLA
  • Quarterly architecture review
Testimonials

Loved by builders

4.9 average rating
"Blank repo to a deployed app with auth + a DB in one evening. Norns just gets out of the way."
AL
Ada Lovelace
Founding engineer, Loomstack
"Pug + Civet sounded like a meme until I tried it. Every spare line in our codebase felt noisy after."
GH
Grace Hopper
Staff engineer, Cobol Cloud
"The type-shim drift detector caught three bugs in our first migration. The migration ran in 12ms."
DK
Donald Knuth
Maintainer, TeXLetters
"Tailwind + role tokens means I stopped writing CSS. The design team is suspicious — in a good way."
LT
Linus Torvalds
Engineer, Pengwin Labs
"It's Svelte but it feels like one person built the whole stack on purpose. Coherent."
AH
Anders Hejlsberg
PL person, Strongly Typed Ltd
"Production-ready feature folders, DI, valibot. We deleted half our app code in a single PR."
MH
Margaret Hamilton
CTO, Trajectory.io
"Came for the markup, stayed for the migrations CLI. Forward-only with a stamped table — chef-kiss."
BS
Bjarne Stroustrup
Architect, TempleOS Cloud
"Goto considered harmful. Auto-imported components considered delightful."
ED
Edsger Dijkstra
Engineering lead, Halt-Catch
"Blank repo to a deployed app with auth + a DB in one evening. Norns just gets out of the way."
AL
Ada Lovelace
Founding engineer, Loomstack
"Pug + Civet sounded like a meme until I tried it. Every spare line in our codebase felt noisy after."
GH
Grace Hopper
Staff engineer, Cobol Cloud
"The type-shim drift detector caught three bugs in our first migration. The migration ran in 12ms."
DK
Donald Knuth
Maintainer, TeXLetters
"Tailwind + role tokens means I stopped writing CSS. The design team is suspicious — in a good way."
LT
Linus Torvalds
Engineer, Pengwin Labs
"It's Svelte but it feels like one person built the whole stack on purpose. Coherent."
AH
Anders Hejlsberg
PL person, Strongly Typed Ltd
"Production-ready feature folders, DI, valibot. We deleted half our app code in a single PR."
MH
Margaret Hamilton
CTO, Trajectory.io
"Came for the markup, stayed for the migrations CLI. Forward-only with a stamped table — chef-kiss."
BS
Bjarne Stroustrup
Architect, TempleOS Cloud
"Goto considered harmful. Auto-imported components considered delightful."
ED
Edsger Dijkstra
Engineering lead, Halt-Catch
"Goto considered harmful. Auto-imported components considered delightful."
ED
Edsger Dijkstra
Engineering lead, Halt-Catch
"Came for the markup, stayed for the migrations CLI. Forward-only with a stamped table — chef-kiss."
BS
Bjarne Stroustrup
Architect, TempleOS Cloud
"Production-ready feature folders, DI, valibot. We deleted half our app code in a single PR."
MH
Margaret Hamilton
CTO, Trajectory.io
"It's Svelte but it feels like one person built the whole stack on purpose. Coherent."
AH
Anders Hejlsberg
PL person, Strongly Typed Ltd
"Tailwind + role tokens means I stopped writing CSS. The design team is suspicious — in a good way."
LT
Linus Torvalds
Engineer, Pengwin Labs
"The type-shim drift detector caught three bugs in our first migration. The migration ran in 12ms."
DK
Donald Knuth
Maintainer, TeXLetters
"Pug + Civet sounded like a meme until I tried it. Every spare line in our codebase felt noisy after."
GH
Grace Hopper
Staff engineer, Cobol Cloud
"Blank repo to a deployed app with auth + a DB in one evening. Norns just gets out of the way."
AL
Ada Lovelace
Founding engineer, Loomstack
"Goto considered harmful. Auto-imported components considered delightful."
ED
Edsger Dijkstra
Engineering lead, Halt-Catch
"Came for the markup, stayed for the migrations CLI. Forward-only with a stamped table — chef-kiss."
BS
Bjarne Stroustrup
Architect, TempleOS Cloud
"Production-ready feature folders, DI, valibot. We deleted half our app code in a single PR."
MH
Margaret Hamilton
CTO, Trajectory.io
"It's Svelte but it feels like one person built the whole stack on purpose. Coherent."
AH
Anders Hejlsberg
PL person, Strongly Typed Ltd
"Tailwind + role tokens means I stopped writing CSS. The design team is suspicious — in a good way."
LT
Linus Torvalds
Engineer, Pengwin Labs
"The type-shim drift detector caught three bugs in our first migration. The migration ran in 12ms."
DK
Donald Knuth
Maintainer, TeXLetters
"Pug + Civet sounded like a meme until I tried it. Every spare line in our codebase felt noisy after."
GH
Grace Hopper
Staff engineer, Cobol Cloud
"Blank repo to a deployed app with auth + a DB in one evening. Norns just gets out of the way."
AL
Ada Lovelace
Founding engineer, Loomstack
FAQ

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.

Start free
N
Norns

The batteries-included meta-framework for Svelte. Open source, MIT licensed, built in the open.

Stay in the loop

One short email a month. Unsubscribe in one click.

© 2026 Human Synthesis · Made with norns-ui v0.0.7