Modules and data
Optional features install site-owned code, environment documentation, CSP sources and manifest entries, and plug into generated slots.
Modules
Section titled “Modules”pnpm dss module listpnpm dss module add forms # contact form on /contactpnpm dss module add analytics --config provider=umami,websiteId=<id>pnpm dss module remove blog| Module | What it adds |
|---|---|
forms |
contact section, Server Action through safeAction (zod, honeypot, rate limit, Turnstile), email via Resend |
legal |
legal notice and privacy pages (GDPR, Swiss nLPD structure) linked from the footer |
analytics |
cookieless Plausible, Umami or Cloudflare Web Analytics, production builds only |
blog |
Markdown articles, index, Article JSON-LD, RSS, sitemap and llms.txt entries |
Each module documents its variables in .env.example, adds CSP presets to the manifest, and contributes to generated
slots (lib/modules.ts for sitemap and llms.txt entries, components/site/module-slots.tsx for end-of-body
scripts). Removal deletes only unmodified files. Read core/modules/<slug>/README.md after adding one.
Database
Section titled “Database”pnpm dss db init # D1 on Cloudflare sites, libSQL elsewherepnpm dss db init --driver postgrespnpm db:generate && pnpm db:migrate && pnpm db:studioThe schema lives in server/db/schema.ts (Drizzle; SQLite dialect for D1 and libSQL, Postgres dialect for Postgres),
the client in server/db/client.ts (db() inside a request). D1 gets a binding in wrangler.jsonc, available in
next dev through OpenNext.