Include Loyalty/Communication/Sports Center backends and registry updates alongside production nginx and compose wiring. Co-authored-by: Cursor <cursoragent@cursor.com>
2.9 KiB
2.9 KiB
Module Template
How to implement a module (bounded feature set) inside an existing service.
Use when the domain clearly belongs to an already-owned database/service (e.g. CRM sales engine phases inside crm, Accounting sub-phases inside accounting).
If the capability must be reused across many business domains, create an independent service (service-template.md) instead.
Registry field template: templates/module-template.md.
When to Add a Module vs a Service
| Choose module | Choose service |
|---|---|
| Same aggregate ownership | Shared platform capability |
| Same DB already owns the data | New sole DB required |
| Extends existing permission prefix | New permission prefix {service}.* |
| Phase slice of an active service | Cross-module reuse (Loyalty, Communication) |
Design Steps
- Confirm ownership in module-boundaries.md and module-registry.md.
- Define Objective / Scope / Out of Scope with phase-template.md.
- Add entities (entity-template.md), repositories, services, validators, permissions, events, APIs.
- Additive Alembic migration in the owning service only.
- Tests + docs + handover.
- Update module registry “Current Phase” / version / events / permissions.
Module Checklist
Architecture
- Stays within service boundary
- No cross-DB access
- No foreign model imports
- Provider contracts only if calling platforms
Ownership
| Field | Value |
|---|---|
| Parent service | |
| Permission prefix | (usually parent’s {service}.*) |
| Database | Parent DB |
| Public surface | APIs + events listed in phase doc |
Implementation Layers
| Layer | Standard |
|---|---|
| Models | entity-template.md |
| Repositories | repository-template.md |
| Services | service-layer-template.md |
| APIs | api-template.md |
| Events | event-template.md |
| Tests | testing-template.md |
Tenant Awareness
tenant_idon business tables- Filters on all queries
- Isolation tests
Documentation
- Phase doc
- Module registry entry updated
- Event catalog / API reference if public surface changed
- Progress / next-steps
- Handover
Non-Responsibilities
List what this module must not own (copy from parent boundaries and phase Out of Scope):