Design Status
Tracks what has been specified, partially specified, or not yet designed.
Update this file as work progresses.
Legend: ✅ Specified · ⚠️ Partially specified · ❌ Not yet designed · 🔵 Built
Summary
|
Count |
| ✅ Specified |
71 |
| ⚠️ Partially specified |
0 |
| ❌ Not yet designed |
0 |
| Total |
71 |
Planning
| Item |
Status |
Location |
| Architecture design document |
✅ |
planning/architecture.md |
| Project plan (sprints, risks) |
✅ |
planning/project-plan.md |
| Phase 0 walkthrough |
✅ |
planning/phase-0.md |
| Module dependency map |
✅ |
Documented in session |
Foundation — API
| Item |
Status |
Location |
| Local dev environment (Docker, .env) |
✅ |
foundation.md Layer 1 |
| Database setup (SQLAlchemy, NullPool, PgBouncer session mode) |
✅ |
foundation.md Layer 2 |
| Tenant migration runner + expand/contract discipline |
✅ |
foundation.md Layer 2 |
| DB triggers (updated_at, unified audit_log) |
✅ |
foundation.md Layer 2 |
| Public schema tables (tenants, identities, memberships, user_project_access, tenant_migrations) |
✅ |
foundation.md Layer 3 |
| Tenant schema tables (labels, field_definitions) |
✅ |
foundation.md Layer 3 |
| Tenant provisioning (schema + per-tenant Postgres role + DEK) |
✅ |
foundation.md Layer 3 |
| Tenant context (contextvar + schema validator + assertion middleware) |
✅ |
foundation.md Layer 4 |
| Background job tenant context (run_with_tenant, run_as_system) |
✅ |
foundation.md Layer 4 |
| Cognito JWT validation |
✅ |
foundation.md Layer 5 |
| Cognito Lambda trigger (tenant_id, identity_id, platform_roles list) |
✅ |
foundation.md Layer 5 |
| RBAC roles + permission dependency |
✅ |
foundation.md Layer 5 |
| Project access service (core/access.py, Redis-cached) |
✅ |
foundation.md Layer 5 |
| Auth session endpoints (exchange, refresh, logout, offline-session) |
✅ |
foundation.md Layer 5 |
| Per-tenant field encryption (KMS DEK, version-tagged ciphertext) |
✅ |
foundation.md Layer 5a |
| FastAPI app factory + middleware stack |
✅ |
foundation.md Layer 6 |
| Exception hierarchy + error envelope |
✅ |
foundation.md Layer 6 |
| Cursor-based pagination utilities |
✅ |
foundation.md Layer 6 |
| Structured logging (structlog) + Sentry |
✅ |
foundation.md Layer 7 |
| Test harness (conftest, fixtures, factories, assert_tenant) |
✅ |
foundation.md Layer 8 |
Foundation — Frontend
| Item |
Status |
Location |
| React project structure + Vite config |
✅ |
foundation.md Layer 9 |
| Cognito auth flow (hosted UI, token in memory) |
✅ |
foundation.md Layer 9 |
| API client wrapper (headers, error handling) |
✅ |
foundation.md Layer 9 |
| PowerSync initialisation |
✅ |
foundation.md Layer 9 |
| Base layout (AppShell, Sidebar) |
✅ |
foundation.md Layer 9 |
| OpenAPI → TypeScript type generation |
✅ |
foundation.md Layer 9 |
Foundation — Infrastructure
| Item |
Status |
Location |
| Terraform modules (VPC, RDS, Redis, ECS, ALB) |
✅ |
foundation.md Layer 10 |
| Terraform modules (CloudFront, WAF, Cognito, S3) |
✅ |
foundation.md Layer 10 |
| Secrets Manager injection into ECS tasks |
✅ |
foundation.md Layer 10 |
| GitHub Actions CI/CD pipeline |
✅ |
foundation.md Layer 10 |
| Security group rules |
✅ |
foundation.md Layer 10 |
Cross-cutting Decisions
| Item |
Status |
Location |
| Error response format |
✅ |
CLAUDE.md |
| API versioning (header-based) |
✅ |
CLAUDE.md |
| Response envelope + cursor pagination |
✅ |
CLAUDE.md |
| Datetime handling (TIMESTAMPTZ, ISO 8601) |
✅ |
CLAUDE.md |
| Soft delete pattern (explicit filter) |
✅ |
CLAUDE.md |
| File attachment pattern (presigned S3) |
✅ |
CLAUDE.md |
| Tenant labels (field + role + UI strings) |
✅ |
CLAUDE.md |
| Custom fields (field_definitions + JSONB) |
✅ |
CLAUDE.md |
| Seed data conventions for tests |
✅ |
foundation.md — Seed data conventions |
| Notification / email pattern |
✅ |
architecture/notifications.md |
| Right to Work fields (Personnel) |
✅ |
modules/personnel.md |
UI Layout and Navigation
| Item |
Status |
Location |
| App shell (top bar, sidebar, content area) |
✅ |
architecture/ui-layout.md |
| Navigation model (dashboard-first, project expansion) |
✅ |
architecture/ui-layout.md |
| Route structure |
✅ |
architecture/ui-layout.md |
| Settings area structure |
✅ |
architecture/ui-layout.md |
| Role-differentiated visibility |
✅ |
architecture/ui-layout.md |
| Alert surfacing (bell + dashboard strip) |
✅ |
architecture/ui-layout.md |
| Mobile responsive behaviour |
✅ |
architecture/ui-layout.md |
| Component conventions (shadcn/ui patterns) |
✅ |
architecture/ui-layout.md |
Modules
| Item |
Status |
Location |
| Projects & Sites |
✅ |
modules/projects-sites.md |
| Personnel |
✅ |
modules/personnel.md |
| Inductions |
✅ |
modules/inductions.md |
| Attendance / Sign-In |
✅ |
modules/personnel.md |
| Site Diary |
✅ |
modules/site-diary.md |
| Plant & Equipment |
✅ |
modules/plant.md |
| Incidents & Near Misses |
✅ |
modules/incidents.md |
| Documents |
✅ |
modules/documents.md |
| Deliveries |
✅ |
modules/deliveries.md |
| Subcontractors |
✅ |
modules/subcontractors.md |
| Briefings & Toolbox Talks |
✅ |
modules/briefings.md |
| Appointed Roles |
✅ |
modules/appointed-roles.md |
| COSHH Substances |
✅ |
modules/coshh.md |
Marketing & Docs
| Item |
Status |
Location |
| Marketing website (construo.build) |
✅ |
marketing/ |
| Developer docs site (Zensical) |
✅ |
construo-docs/ |
| CLAUDE.md (Cowork context) |
✅ |
CLAUDE.md |