chore(template): sync README.md

This commit is contained in:
SemianiakaVY 2026-09-17 21:07:12 +00:00
parent 409c717d5a
commit 13c51a50bb

View file

@ -1,3 +1,67 @@
# templates.SaaSStarter
# SaaS Starter — W4C project template
A multi-tenant SaaS web app with authentication, billing, a customer dashboard and an admin area.
A W4C **project template**. Creating a project from it generates a private copy of this
repository in your namespace and starts the **Startup Creator** agent, which drives the build
from this brief.
This repository is deliberately a **brief, not a finished app**: it ships the product
specification, the project metadata and the seed assets; the tech stack chosen in the creation
dialog decides the scaffold. Read [`SPEC.md`](SPEC.md) for the full product contract — roles,
routes, data model, flows, functional and non-functional requirements, and the acceptance
criteria the work is checked against. It is a multi-tenant SaaS: authentication, workspaces,
billing, a tenant-scoped customer dashboard and a platform-operator back office.
## What ships in this repository
| Path | Purpose |
|------|---------|
| `README.md` | This file: how the template is wired and how to work in the project. |
| `SPEC.md` | The product specification and acceptance criteria — the contract to build. |
| `.w4c/template.json` | Template manifest: dialog fields, starter prompt, element list (templates only). |
| `.w4c/project.json` | Project metadata committed with the repository. |
| `.w4c/diagrams/` | Excalidraw architecture diagram. |
| `.w4c/boards/roadmap.json` | Board columns and the seed tasks for the build. |
| `.w4c/workflows/` | The CI workflow to import into the workflows module. |
See [`.w4c/README.md`](.w4c/README.md) for the full `.w4c/` contract.
## Stack
The creation dialog records the chosen stack (and its skill pair `stack-*` +
`stack-*-quality`), the billing provider, the tenancy model and the auth provider. Scaffold with
those skills and hold the work to their conventions and quality gates. The stack is not fixed
here on purpose: the same brief is built on Next.js, Vue 3 + Quasar, Laravel, Phoenix, … without
changing `SPEC.md`.
## Build order
Work **top-down**, one layer at a time, and verify each layer before starting the next:
1. **Scaffold** the stack and get the empty shell running (install → dev server → commit).
2. **Scope** — routes and the data model from `SPEC.md` §3§4, including `organisationId` and the
shared tenant-scoping layer.
3. **Auth + tenant scoping** — signup, login, organisations, membership and roles, plus the
cross-tenant isolation test before any dashboard work.
4. **Dashboard shell** scoped to the active organisation.
5. **Billing + plan limits** (mock provider first, then real), including signature-verified,
idempotent webhooks and the server-side limit guard.
6. **First product feature** from the must-have list.
7. **Admin** back office, then **quality** — tests, CI, README quickstart, `.env.example`,
accessibility.
The full rationale and the acceptance criteria live in `SPEC.md` §8§9.
## Working rules
- One concern per commit, conventional messages (`feat:`, `fix:`, `chore:`, `docs:`, `test:`).
- **Tenant isolation is the top requirement:** scope every query and mutation by
`organisationId` server-side; never trust a client-supplied tenant id, and never rely on
filtering in the UI.
- Authorize every mutation on the server; never only in the UI.
- Money is integer minor units (`priceMinor`), never floating point; format with the plan
currency and `en-US` number formatting.
- Keep billing keys and provider secrets server-side only; verify webhook signatures and make
webhook/checkout handling idempotent.
- Enforce plan limits server-side, not just in the UI.
- Never commit secrets — document them in `.env.example` instead.
- Keep `docs/PLAN.md`, the board and `.w4c/project.json` in sync as the project evolves.