# Clean Architecture Frontend Template A React/Vite reference implementation where architecture boundaries, integration behavior, release coherence, accessibility, performance, and operations are executable contracts rather than conventions. ## Start locally Requirements: Node 24 and Corepack. The repository pins pnpm in `package.json`. ```bash corepack pnpm install --frozen-lockfile corepack pnpm dev ``` Runtime-public settings live in `public/config.json` and are validated before the product tree mounts. Client secrets are forbidden. ## Architecture Dependencies point inward: ```text presentation -> application -> domain adapters -----^ bootstrap composes concrete adapters contracts own cross-cutting registries ``` See `docs/architecture/overview.md` and `docs/architecture/layers.md`. The removable sample slice is under `src/sample/contract-fixture`; product code is not allowed to import it. ## Verification Common local checks: ```bash corepack pnpm lint corepack pnpm check:types corepack pnpm check:architecture corepack pnpm test:all corepack pnpm test:e2e corepack pnpm test:a11y corepack pnpm build corepack pnpm check:bundle corepack pnpm test:performance corepack pnpm verify:compatibility corepack pnpm verify:release corepack pnpm check:registries corepack pnpm drill:runbooks corepack pnpm check:ci ``` Two gates intentionally need external evidence: - `review:a11y-manual` needs a signed human keyboard/focus/screen-reader review. - `collect:web-vitals-evidence` stays `FAIL_UNVERIFIED` until a reviewed minimum eligible-sample threshold and 28 days of production data exist. Live release verification additionally requires `HOSTING_BASE_URL`. ## CI and evidence The 26-gate registry is `config/ci/gates.json`; the Gitea workflow is `.gitea/workflows/quality-gates.yml`. It follows: ```text MERGE_READY -> RELEASE_READY -> PROD_PROMOTION_READY -> FIELD_SLO_READY ``` `DOCUMENTATION_READY` is independent. No gate is downgraded to a warning. Machine-readable evidence is written below `artifacts/`; generated evidence is ignored by Git while `.gitkeep` files preserve the taxonomy. Operational details are in `docs/operations/`, with incident procedures in `docs/runbooks/`.