stnd.build

A typography framework for Astro.
One integration. No configuration. Just write.

Standard applies 500 years of typographic refinement to your HTML automatically. Baseline grids. Golden ratio proportions. Optimal line lengths. Responsive scales. Dark mode. Print styles. Everything.

You are reading the proof. This page has no custom layout, no design tokens, no spacing overrides. The text you see — its size, its measure, its rhythm, its color — is Standard doing what it does by default.

Get started

npm install @stnd/core
// astro.config.mjs
import standard from "@stnd/core";

export default defineConfig({
  integrations: [standard()],
});

That's it. Your site now has classical typography, a design system built on the golden ratio, an OKLCH color engine, and a vertical slice architecture called the Folio system.

What you get

Standard is a modular ecosystem. Each package does one thing well. Use them together or apart.

@stnd/styles
The CSS framework. Golden ratio, Swiss grid, OKLCH color, typographic scale, baseline rhythm, prose layout, dark mode, print styles, e-ink support.
@stnd/core
The Astro integration. Bootstraps the module system, registers aliases, injects styles, orchestrates middleware, and provides the Hook portal system.
@stnd/server
Server infrastructure. StandardRoot, StandardModel, JWT authentication, sessions, CORS, error handling, i18n.
@stnd/press
Content engine. Markdown rendering with typography transforms. Document conversion from DOCX, PDF, HTML, and RTF.
@stnd/fonts
Self-hosted typefaces as Folio manifests. Inter, Instrument, IBM Plex Mono, Kalice, and fifty more.
@stnd/themes
Temperaments. Humanist, Technical, Editorial, Academic, International, Gallery — each a complete design system.
@stnd/client
Browser utilities. Keyboard shortcuts, touch gestures, clipboard, deep links, stores, e-ink detection.
@stnd/launcher
A universal command palette engine built with Svelte 5 runes.
@stnd/ui
Shared components for Astro and Svelte. Logo, Menu, Toast, Dropdown, and the building blocks of interfaces.
@stnd/layout
Base layouts. Meta tags, Open Graph, Schema.org, favicons — the invisible infrastructure of a well-made page.
@stnd/cloudflare
Edge-first deployment. Image optimization, Pages Functions, D1, R2, KV — Cloudflare as infrastructure.

The Folio system

Standard doesn't use folios. It uses folios — named after the self-contained sections of a bound publication. Each folio is a vertical slice: routes, styles, components, middleware, and actions in one folder, declared by a single manifest.

// folio/my-feature/index.folio.js
export default {
  id: "my-feature",
  name: "My Feature",
  routes: [
    { path: "/feature", entrypoint: "./routes/index.astro" },
  ],
  styles: ["./styles/feature.scss"],
  middleware: [
    { entrypoint: "./middleware.ts", order: -100 },
  ],
};

Delete the folder, the feature disappears. The app keeps running. That's the litmus test.

Every folio is importable via the @folio alias, auto-registered by the framework. No manual Vite or tsconfig wiring.

import { Note } from '@modules/root/models/Note';
import Author from '@modules/root/models/Author';
import Base from '@modules/root/layouts/Base.astro';

Design principles

Beauty by default. Never ask the user to configure margins, fonts, or spacing. Apply classical typography automatically. The reader's grandmother's recipe should look like it belongs in a cookbook.

Static first. Pre-render everything possible. Logic runs at the edge. Minimal JavaScript on the client. Efficiency isn't just good engineering — it's ecological stewardship.

Boring technology. Astro, Svelte 5, Cloudflare, SQLite. The kind of stack that works in ten years without a rewrite.

One seed color. Standard uses OKLCH color math. Pick one accent color and the framework generates an entire harmonious palette — success, warning, error, info, surface, border. Pastel stays pastel. Neon stays neon.

Who uses Standard

Standard Garden — a text publishing utility. Paste prose, get a beautiful URL in ten seconds.

L'art d'enseigner — a teaching enterprise for homeschooling families in Québec.

Two applications. Completely different domains. Same foundation. That's the test of a framework.

Start

npm install @stnd/core

Read the source on GitHub.