ADR-0001: Facilities Service
- Status: Accepted
- Date: 2025-07-21
- Author: @digiwedge/engineering
- Supersedes: Facility tables embedded in tee-sheet
Context
The tee-sheet module originally defined FacilityResource and related tables inside libs/prisma/tee-sheet-data. Sport Club Ledger (SCL) lacked a matching model, preventing other modules from sharing facility data without coupling directly to tee-sheet.
This blocked:
- Cross-module reporting
- Integration with Member Club Admin (MCA)
- Shared maintenance tracking
Decision
Create a dedicated Facilities Service to manage all facility resources with:
-
Dedicated Prisma Schema containing:
FacilityResource- physical assetsMaintenanceLog- maintenance trackingResourceUsage- booking assignments
-
REST and GraphQL APIs so tee-sheet, SCL, and MCA can reference facilities without owning the data
-
Multi-tenant Architecture with required
tenantIdscoping on all operations
Implementation
| Component | Location |
|---|---|
| Prisma Schema | libs/prisma/facilities-data |
| Service Module | libs/facilities/facilities-service |
| API Application | apps/facilities/facilities-api |
| Documentation | apps/facilities/facilities-docs |
Consequences
Positive
- Decoupling: Tee-sheet no longer owns facility data
- Reusability: SCL and MCA can consume the same API
- Consistency: Single source of truth for facilities
- Maintainability: Clear ownership and boundaries
Negative
- Network Overhead: Cross-service calls instead of direct DB access
- Migration Complexity: Data migration from tee-sheet required
- Deployment Dependency: Facilities API must be available
Migration Path
- Deploy Facilities API with empty database
- Run migration scripts to copy data from tee-sheet
- Update tee-sheet to call Facilities API
- Drop facility tables from tee-sheet schema
- Update SCL to use Facilities API
Follow-ups
- ✅ Create
facilities-dataPrisma library - ✅ Create
facilities-serviceNestJS module - ✅ Create
facilities-apiapplication - ✅ Add maintenance log and resource usage APIs
- ⏳ Write migration scripts for tee-sheet data
- ⏳ Publish client libraries for SCL and MCA