WorkClub Automation
326a4f30e8
infra(k8s): add dev overlay with resource limits and health checks
...
Implements Task 25: Kustomize Dev Overlay + Resource Limits + Health Checks
Files Created:
- infra/k8s/overlays/dev/kustomization.yaml - Dev overlay config
- References base manifests
- Namespace: workclub-dev
- Replicas: 1 for all deployments
- Image tags: dev for workclub-api and workclub-frontend
- Environment label: development
- infra/k8s/overlays/dev/patches/backend-resources.yaml
- Backend resources: cpu=50m-200m, memory=128Mi-256Mi
- Strategic merge patch targeting workclub-api deployment
- infra/k8s/overlays/dev/patches/frontend-resources.yaml
- Frontend resources: cpu=50m-200m, memory=128Mi-256Mi
- Strategic merge patch targeting workclub-frontend deployment
- frontend/src/app/api/health/route.ts
- Missing health endpoint (declared in base manifest but not implemented)
- Simple Next.js route handler returning {status: 'ok'}
Resource Limits (Dev vs Base):
- Dev: 50m-200m CPU, 128Mi-256Mi memory (50% of base)
- Base: 100m-500m CPU, 256Mi-512Mi memory
Verification:
- kustomize build succeeds (exit 0)
- All deployments replicas=1
- Lower resource limits applied correctly
- Image tags set to dev
- Frontend /api/health route registered
- Evidence saved to .sisyphus/evidence/task-25-kustomize-dev.yaml (495 lines)
Note: commonLabels deprecated warning (non-blocking), consider using labels in future.
2026-03-03 21:11:18 +01:00
WorkClub Automation
ba024c45be
feat(domain): add core entities — Club, Member, WorkItem, Shift with state machine
...
- Create domain entities in WorkClub.Domain/Entities: Club, Member, WorkItem, Shift, ShiftSignup
- Implement enums: SportType, ClubRole, WorkItemStatus
- Add ITenantEntity interface for multi-tenancy support
- Implement state machine validation on WorkItem with C# 14 switch expressions
- Valid transitions: Open→Assigned→InProgress→Review→Done, Review→InProgress (rework)
- All invalid transitions throw InvalidOperationException
- TDD approach: Write tests first, 12/12 passing
- Use required properties with explicit Guid/Guid? for foreign keys
- DateTimeOffset for timestamps (timezone-aware, multi-tenant friendly)
- RowVersion byte[] for optimistic concurrency control
- No navigation properties yet (deferred to EF Core task)
- No domain events or validation attributes (YAGNI for MVP)
2026-03-03 14:09:25 +01:00
OpenCode Assistant
cf7b47cb69
infra(docker): add Docker Compose with PostgreSQL and Keycloak
...
- Add docker-compose.yml (v3.9) with postgres:16-alpine and keycloak:26.1 services
- Configure PostgreSQL with separate workclub and keycloak databases
- Setup Keycloak with database backend, admin user, and realm import capability
- Create PostgreSQL init script to provision development databases and users
- Add placeholder realm-export.json for Keycloak realm configuration
- Configure healthchecks and app-network bridge for service discovery
- Document configuration and patterns in learnings.md
2026-03-03 14:07:29 +01:00