# Norns docs — full corpus > Documentation for the Norns platform: SvelteKit with Pug + Civet, the norns runtime, norns-ui and norns-tron. --- # norns-app > The starter template — a single page that exercises the whole runtime in about sixty lines you can read in one sitting and rewrite in two. ```sh bun create human-synthesis/norns-app my-app cd my-app bun install bun run dev # http://localhost:5173 ``` `bun create` clones the public repository `human-synthesis/norns-app` and runs `bun install`, which resolves `@human-synthesis/norns`, `norns-core` (through norns), `norns-ui`, `norns-tron`, the SvelteKit and Svelte peers, Tailwind v4 and valibot from npm. You never see the framework's forks. ## Stack Svelte 5, SvelteKit 2, Pug, Civet, Tailwind CSS v4, Vite, bun, the three Norns packages, and valibot for validation. ## Commands ```sh bun run dev # dev server bun run build # production build bun run preview # preview the build bun run lint # norns lint: Civet + Pug pitfall scan bun run check # norns check: preprocess + compile every .n / .c through svelte.config.js bun test # tests/*.test.js — the feature through the DI container bun run build # full Vite build bunx norns diag src/lib/norns/messages/server/service.c bun run check:svelte # svelte-check over the .js / .ts / .svelte parts only ``` Run them in that order before calling a change done; `norns check`, not `svelte-check`, is the pass signal for Norns code. The template ships one bun test as the pattern for testing a feature through the container (a small bun plugin in `tests/civet-loader.js` compiles `.c` files on import). The framework's own suites live in the framework repositories. - [Walkthrough](/norns-app/walkthrough) — every file in the template and what to do next. --- # norns-core > The Svelte preprocessor behind .n files — Civet scripts, Pug templates, +if and +snippet chains, class-shorthand rewriting and source-mapped errors. `@human-synthesis/norns-core` is the syntax layer. It is a dependency of [norns](/norns) and most apps never install it directly; the pages here explain what happens to a `.n` file between your editor and the Svelte compiler. ## What it does - `.n` files default ` ``` ## What the preprocessor does with it The `norns-default-langs` step runs first on every file whose name ends in `.n`: 1. **Auto-close.** If the file ends inside a ` ``` A `.svelte` file never goes through the `.n` defaults; it is compiled exactly as Svelte would, even with this preprocessor installed. Use that when you want a plain Svelte component next to your `.n` ones. ## Styles `