Skip to content

Make it yours

The kit ships as the fictional product Acme Tasks so every screen has coherent copy. Making it yours is a short, documented list — the full version lives in the repository (docs/CUSTOMIZING.md); this page is the map.

The one-hour rebrand

  1. Name — three documented places: web/src/config.ts (the SPA), web/index.html (the title), APP_NAME in .env (emails, sender).
  2. Landingweb/src/views/HomeView.vue is deliberately plain: a heading, a way in, the legal links. Replace the landing.* i18n keys or the whole view; the e2e asserts structure, not copy, so your rebrand does not break the suite.
  3. Colors & logo — Tailwind theme in web/src/assets/, favicon in web/public/.
  4. Legal pages — structured placeholders with [BRACKETED] fields to fill; honest about not being legal advice.
  5. Emails — plain-text templates in internal/email/templates/{en,fr}/. A parity test fails the build if a locale misses one.

Plans and pricing

Plans are configuration, not database rows: the BILLING_PLANS JSON maps your Stripe price IDs to named plans, and one endpoint feeds every pricing surface. Empty means the deployment sells nothing — no dead buttons. Details: Stripe.

Adding your own business resource

Read the ten-minute tour first — it walks the exact chain on a live request. Then, in build order:

  1. a migration with organization_id … REFERENCES organizations (id) ON DELETE CASCADE, portable SQL only;
  2. queries in internal/db/queries/ that all filter by organization — make sqlc;
  3. a handler: decode, validate, delegate, map errors;
  4. routes under the org router, RequireOrgRole on what only admins do;
  5. a Pinia store and a view;
  6. integration tests asserting CRUD, RBAC and a cross-tenant 404.

Step 6 is not optional: row-level tenancy holds because every query filters by organization, and the test is what keeps it true after the next edit.

Tenancy flavour

ORG_MODE=multi (B2B teams, the default) or ORG_MODE=solo (B2C: one personal organization per user, created at signup; team UI hidden, org creation and invitations refused server-side). Pick at launch — switching later is not retroactive.

Commercial license — you buy it once, the code is yours.