homepage for Fuz, free software for human agency
fuz.dev is the homepage for Fuz — a zippy stack for human agency. It's a static SvelteKit site built on the fuz stack and deployed to www.fuz.dev. A docs hub is planned to join the homepage.
For coding conventions, see Skill(fuz-stack).
git add and git commit are denied by .claude/settings.local.json in
this repo — make the edits and stop, the user commits.
gro check # typecheck, test, lint, format check (run before committing)
gro typecheck # typecheck only (faster iteration)
gro test # run tests with vitest
gro build # build for production (static adapter)
gro deploy # build, commit, and push to deploy branch
gro sync # regenerate files and run svelte-kit syncIMPORTANT for AI agents: Do NOT run gro dev — the developer manages the
dev server.
- Svelte 5 — component framework with runes
- SvelteKit — application framework with the static adapter
- Vite — build tool
@fuzdev/fuz_css— semantic-first CSS framework and design system@fuzdev/fuz_ui— UI components, theming, docs system@fuzdev/fuz_util— utility functions@fuzdev/fuz_code— syntax highlighting@fuzdev/mdz— minimal markdown dialect@fuzdev/gro— build system and task runner
fuz.dev is a static site:
- Prerendered with
@sveltejs/adapter-static - Dark/light theme with persistence
- Documentation system with auto-generated API docs
- No authentication, database, or dynamic server-side content
src/
├── app.html # HTML entry with theme detection
├── lib/ # library code
├── test/
│ └── example.test.ts # example test
└── routes/
├── +layout.svelte # root layout with fuz_css imports + site_context
├── +layout.ts # prerender: true, ssr: true
├── +page.svelte # home page
├── style.css # custom global styles
├── library.ts # library metadata for the docs
├── about/+page.svelte
└── docs/ # documentation pages
├── +layout.svelte # wraps docs in the Docs component + library_context
├── +page.svelte # docs index
├── tomes.ts # documentation structure
├── library/ # library details page
└── api/ # auto-generated API docs (+ [...module_path] route)
+layout.tsexportsprerender = trueandssr = truefor full static generationsvelte.config.jsenables runes mode and includes a commented-out example CSP config usingcreate_csp_directives()from fuz_ui- Uses
@sveltejs/adapter-staticfor static output
app.html runs theme detection before render, preventing a flash of the
wrong theme on page load:
- Reads
localStorage.getItem('fuz:color-scheme') - Falls back to
matchMedia('(prefers-color-scheme:dark)') - Sets the class on
<html>('dark' or 'light')
The vite_plugin_fuz_css Vite plugin (wired in vite.config.ts) generates
fuz_css utility classes on demand and exposes them via the virtual:fuz.css
module, imported in the root +layout.svelte. No generated fuz.css file is
committed.
Uses fuz_ui's tome system and the svelte-docinfo Vite plugin:
docs/tomes.ts— defines documentation pagesdocs/library/— shows theLibraryDetailcomponentdocs/api/— auto-generated API docs fromvirtual:svelte-docinfodocs/api/[...module_path]/— dynamic module documentation
src/routes/library.ts combines the virtual:svelte-docinfo metadata with
package.json via library_json_from_modules; docs/+layout.svelte sets the
library_context, while the root layout sets only the lighter site_context.
Pre-configured for static hosting:
- Uses
@sveltejs/adapter-static static/CNAMEsets the custom domain (www.fuz.dev)static/.nojekyllfor GitHub Pages
Deploy with gro deploy (builds and pushes to the deploy branch).
- TypeScript strict mode
- Svelte 5 with runes API
- tsv with tabs, 100 char width
- Node >= 24.14
- Private package (not published to npm)