Modules and presets
Choose capabilities and understand their boundaries.
Available now
- marketing preset: SEO, consent-gated analytics, contact email, local typed content, and legal-page starters
- accounts module: verified email/password authentication, recovery, profile, sessions, export, and deletion foundations
Marketing modules
- seo owns metadata support, sitemap, robots, and not-found behavior.
- analytics owns the consent component, browser event adapter, and NEXT_PUBLIC_POSTHOG_KEY.
- email owns the contact routes, email adapter, test journey, and provider environment values.
- cms owns local typed page content and the features route.
- legal owns product-editable privacy and terms starters.
Accounts
Accounts requires email and adds Better Auth, account routes, four database tables, migrations, browser tests, and BETTER_AUTH_SECRET. Production secrets must be unique and at least 32 characters.
The current account operations are foundations: export is synchronous and deletion is immediate after email confirmation. Staff controls, audit events, retention policy, and distributed rate-limit storage remain roadmap work.
Reserved presets
Personal SaaS, team SaaS, API product, marketplace, membership, and internal-tool names exist in the schema but are not complete presets. The roadmap and verification fixtures are the source of truth.
Authoring a module
Add a typed recipe in packages/generator/src/registry.ts and product files under modules/<id>/files. Declare every copied file plus routes, tables, environment names, permissions, events, dependencies, conflicts, suspension behavior, and removal strategy.
Database modules must include a checked-in Drizzle migration, snapshot, journal entry, and schema export. Add a real fixture journey and run pnpm verify with Docker.