Six-phase design for @repo/core-audit (5th optional package). Phase 1: AuditLogProtocol + AuditEntry type + truncateIp helper in core-shared; BindContext.auditLog? optional field. Phase 2: @repo/core-audit package with NoopAuditLog + PayloadAuditLog (append-only collection) + StdoutJsonAuditLog (structured JSON) + MultiSinkAuditLog fan-out wrapper + RecordingAuditLog in core-testing. Phase 3: GDPR erasure plumbing — eraseSubject impls, pseudonymize helper (sha256-with-salt), admin tRPC procedure, createAuditErasureHook Payload afterDelete hook factory. Phase 4: OTel correlation bridge — currentTraceId() helper, TraceIdEnrichingAuditLog decorator wraps inner sinks at bind time so AuditEntry.correlationId auto-populates from active OTel span. Phase 5: createAuditAfterReadHook factory for opt-in per-collection automatic VIEW capture; reference wiring documented (printed by generator as a diff, NOT auto-installed in auth). Phase 6: ADR-018, audit-and-compliance.md guide, generator template + byte-identical snapshot + e2e test, doc refreshes (CLAUDE.md, AGENTS.md, template-tiers, data-flow-explainer, README, scaffolding-doc). Compliance grounded in DPA "Logging & Monitoring" requirements: closed action enum (VIEW/CREATE/UPDATE/DELETE/EXPORT/PERMISSION_CHANGE), required tenant field, type-enforced "what NOT to log" (no payload/ body/oldValue/newValue fields), IP /24 v4 + /48 v6 truncation, sha256- salted pseudonymization, append-only Payload collection with privileged overrideAccess erasure path. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Clean Architecture Monorepo Template
Turborepo + pnpm monorepo organized by vertical features. See CLAUDE.md for the full conventions reference and AGENTS.md for the package map.
Quick Start
pnpm install # Install all dependencies
pnpm dev # Start all dev servers
pnpm build # Build all packages
pnpm test # Run all tests
pnpm turbo boundaries # Validate workspace dependency graph
pnpm turbo gen feature # Scaffold a new feature package
docker compose up -d # Start PostgreSQL
Optional packages
The default template includes the must-have core packages and all 5 feature packages. Four core packages are optional and scaffold on demand:
pnpm turbo gen core-package realtime # Socket.IO realtime layer (ADR-016)
pnpm turbo gen core-package events # Cross-feature events + Payload jobs (ADR-015)
pnpm turbo gen core-package trpc # tRPC server setup
pnpm turbo gen core-package ui # Design system
See docs/architecture/template-tiers.md for the full tier list.
Key ports
| Service | Port |
|---|---|
| Next.js | 3000 |
| Payload CMS | 3001 |
| TanStack Start | 3002 |
| PostgreSQL | 5432 |
| Storybook | 6006 |
Description
Languages
TypeScript
61.1%
JavaScript
24.1%
Handlebars
13.6%
Shell
1%
Dockerfile
0.1%