Include Loyalty/Communication/Sports Center backends and registry updates alongside production nginx and compose wiring. Co-authored-by: Cursor <cursoragent@cursor.com>
653 lines
17 KiB
YAML
653 lines
17 KiB
YAML
# Service Manifest
|
|
|
|
# Registry of independent deployable services for TorbatYar.
|
|
# Keep aligned with docs/module-registry.md and runtime compose ports when wired.
|
|
|
|
schema_version: 1
|
|
updated: "2026-07-25"
|
|
|
|
services:
|
|
- id: core-platform
|
|
name: Core Platform
|
|
owner: Platform
|
|
path: backend/core-service
|
|
database: core_platform_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: core.*
|
|
dependencies:
|
|
- postgres
|
|
- redis
|
|
- celery
|
|
- shared-lib
|
|
events:
|
|
- tenant.*
|
|
- domain.*
|
|
- subscription.*
|
|
- feature_access.*
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/architecture/
|
|
- docs/reference/
|
|
current_version: 0.4.x
|
|
current_phase: onboarding-4
|
|
status: active
|
|
|
|
- id: identity-access
|
|
name: Identity & Access
|
|
owner: Platform
|
|
path: backend/services/identity-access
|
|
database: identity_access_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: identity.*
|
|
dependencies:
|
|
- keycloak
|
|
- core-platform
|
|
- shared-lib
|
|
events:
|
|
- user.registered
|
|
- tenant_member.added
|
|
- tenant_member.removed
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/architecture/identity-architecture.md
|
|
current_version: 0.2.x
|
|
current_phase: identity-2
|
|
status: active
|
|
api_port: 8001
|
|
|
|
- id: accounting
|
|
name: Accounting
|
|
owner: Platform
|
|
path: backend/services/accounting
|
|
database: accounting_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: accounting.*
|
|
dependencies:
|
|
- core-platform
|
|
- shared-lib
|
|
events:
|
|
- voucher.posted
|
|
- ledger.updated
|
|
- cash.received
|
|
- settlement.completed
|
|
- sales_invoice.posted
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/phases/Accounting/README.md
|
|
current_version: 0.5.11.0
|
|
current_phase: accounting-5.11
|
|
status: active
|
|
api_port: 8002
|
|
|
|
- id: crm
|
|
name: CRM
|
|
owner: Platform
|
|
path: backend/services/crm
|
|
database: crm_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: crm.*
|
|
dependencies:
|
|
- core-platform
|
|
- shared-lib
|
|
events:
|
|
- crm.lead.*
|
|
- crm.contact.*
|
|
- crm.organization.*
|
|
- crm.opportunity.*
|
|
- crm.pipeline.*
|
|
- crm.task.*
|
|
- crm.meeting.*
|
|
- crm.call.*
|
|
- crm.timeline.*
|
|
- crm.comment.*
|
|
- crm.mention.*
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/crm-phase-6-3.md
|
|
- docs/phases/CRM/README.md
|
|
current_version: 0.6.3.0
|
|
current_phase: crm-6.3
|
|
status: active
|
|
api_port: 8003
|
|
|
|
- id: loyalty
|
|
name: Enterprise Loyalty Platform
|
|
owner: Platform
|
|
path: backend/services/loyalty
|
|
database: loyalty_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: loyalty.*
|
|
dependencies:
|
|
- core-platform
|
|
- shared-lib
|
|
events:
|
|
- loyalty.program.*
|
|
- loyalty.tier.*
|
|
- loyalty.member.*
|
|
- loyalty.point_account.*
|
|
- loyalty.reward.*
|
|
- loyalty.campaign.*
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/loyalty-phase-7-0.md
|
|
- docs/loyalty-phase-7-1.md
|
|
- docs/phase-handover/phase-7-1.md
|
|
- docs/phases/Loyalty/README.md
|
|
- docs/architecture/adr/ADR-011.md
|
|
current_version: 0.7.1.0
|
|
current_phase: loyalty-7.1
|
|
status: active
|
|
api_port: 8004
|
|
|
|
- id: communication
|
|
name: Enterprise Communication Platform
|
|
owner: Platform
|
|
path: backend/services/communication
|
|
database: communication_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: communication.*
|
|
dependencies:
|
|
- core-platform
|
|
- shared-lib
|
|
events:
|
|
- communication.message.*
|
|
- communication.provider.failover
|
|
- communication.otp.*
|
|
- communication.queue.dead_letter
|
|
- communication.webhook.received
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/communication-phase-8.md
|
|
- docs/architecture/adr/ADR-012.md
|
|
current_version: 0.8.10.0
|
|
current_phase: communication-8
|
|
status: active
|
|
api_port: 8005
|
|
|
|
- id: sports_center
|
|
name: Sports Center Platform
|
|
description: Independent multi-tenant sports club / gym / facility operations platform (members, memberships, coaches, attendance, booking, programs, competitions, integrations).
|
|
owner: Platform
|
|
path: backend/services/sports_center
|
|
database: sports_center_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: sports_center.*
|
|
health_endpoint: /health
|
|
configuration:
|
|
- SPORTS_CENTER_DATABASE_URL
|
|
- AUTH_REQUIRED
|
|
- tenant resolution via X-Tenant-ID / shared middleware
|
|
- entitlement feature keys sports_center.*
|
|
dependencies:
|
|
- core-platform
|
|
- shared-lib
|
|
optional_dependencies:
|
|
- accounting
|
|
- crm
|
|
- loyalty
|
|
- communication
|
|
events:
|
|
- sports_center.member.*
|
|
- sports_center.membership.*
|
|
- sports_center.membership_type.*
|
|
- sports_center.membership_package.*
|
|
- sports_center.membership_plan.*
|
|
- sports_center.pricing_model.*
|
|
- sports_center.age_group.*
|
|
- sports_center.sport_category.*
|
|
- sports_center.membership_rule.*
|
|
- sports_center.renewal_policy.*
|
|
- sports_center.freezing_rule.*
|
|
- sports_center.expiration_policy.*
|
|
- sports_center.coach.*
|
|
- sports_center.attendance.*
|
|
- sports_center.booking.*
|
|
- sports_center.session.*
|
|
- sports_center.program.*
|
|
- sports_center.workout.*
|
|
- sports_center.competition.*
|
|
- sports_center.event.*
|
|
public_apis:
|
|
- /health
|
|
- /capabilities
|
|
- /api/v1/sports-centers
|
|
- /api/v1/membership-types
|
|
- /api/v1/membership-packages
|
|
- /api/v1/membership-plans
|
|
- /api/v1/pricing-models
|
|
- /api/v1/age-groups
|
|
- /api/v1/sport-categories
|
|
- /api/v1/membership-rules
|
|
- /api/v1/renewal-policies
|
|
- /api/v1/freezing-rules
|
|
- /api/v1/expiration-policies
|
|
- /api/v1/members
|
|
- /api/v1/family-members
|
|
- /api/v1/emergency-contacts
|
|
- /api/v1/medical-information
|
|
- /api/v1/membership-cards
|
|
- /api/v1/digital-memberships
|
|
- /api/v1/waivers
|
|
- /api/v1/member-documents
|
|
- /api/v1/memberships
|
|
- /api/v1/coaches
|
|
- /api/v1/facilities
|
|
internal_apis:
|
|
- service-to-service refs for Accounting / CRM / Loyalty / Communication (token-gated; not public)
|
|
tenant_aware: true
|
|
audit_enabled: true
|
|
documentation:
|
|
- docs/sports-center-roadmap.md
|
|
- docs/sports-center-phase-9-0.md
|
|
- docs/sports-center-phase-9-1.md
|
|
- docs/sports-center-phase-9-2.md
|
|
- docs/phase-handover/phase-9-2.md
|
|
- docs/phases/SportsCenter/README.md
|
|
- docs/architecture/adr/ADR-014.md
|
|
- docs/module-registry.md
|
|
current_version: 0.9.2.0
|
|
current_phase: sports-center-9.2
|
|
current_status: active
|
|
status: active
|
|
future_modules:
|
|
- members
|
|
- membership
|
|
- membership_types
|
|
- coaches
|
|
- attendance
|
|
- booking
|
|
- facilities
|
|
- equipment
|
|
- programs
|
|
- workouts
|
|
- competitions
|
|
- events
|
|
- medical
|
|
- nutrition
|
|
- locker
|
|
- mobile
|
|
- reports
|
|
- analytics
|
|
- integrations
|
|
|
|
|
|
- id: delivery
|
|
name: Delivery & Fleet Platform
|
|
description: Independent multi-tenant logistics platform (Torbat Driver) — drivers, fleet, dispatch, routing, tracking, POD, settlement intents, merchant connectors. Consumed by Restaurant, Marketplace, Pharmacy, Clinic, Sports Center, and future verticals via API/Events only.
|
|
owner: Platform
|
|
path: backend/services/delivery
|
|
database: delivery_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: delivery.*
|
|
health_endpoint: /health
|
|
configuration:
|
|
- DELIVERY_DATABASE_URL
|
|
- AUTH_REQUIRED
|
|
- tenant resolution via X-Tenant-ID / shared middleware
|
|
- entitlement feature keys delivery.*
|
|
dependencies:
|
|
- core-platform
|
|
- shared-lib
|
|
optional_dependencies:
|
|
- accounting
|
|
- crm
|
|
- loyalty
|
|
- communication
|
|
events:
|
|
- delivery.driver.*
|
|
- delivery.fleet.*
|
|
- delivery.vehicle.*
|
|
- delivery.dispatch.*
|
|
- delivery.route.*
|
|
- delivery.tracking.*
|
|
- delivery.pod.*
|
|
- delivery.settlement.*
|
|
- delivery.shift.*
|
|
- delivery.zone.*
|
|
public_apis:
|
|
- /health
|
|
- /capabilities
|
|
- /metrics
|
|
- /api/v1 (phase-scoped resources)
|
|
internal_apis:
|
|
- service-to-service merchant connector and settlement refs (token-gated; not public)
|
|
tenant_aware: true
|
|
audit_enabled: true
|
|
documentation:
|
|
- docs/delivery-roadmap.md
|
|
- docs/phases/Delivery/README.md
|
|
- docs/phase-handover/phase-dp-reg.md
|
|
- docs/architecture/adr/ADR-015.md
|
|
- docs/module-registry.md
|
|
current_version: 0.0.0
|
|
current_phase: delivery-reg
|
|
current_status: registered
|
|
status: planned
|
|
api_port: 8007
|
|
commercial_product: Torbat Driver
|
|
future_modules:
|
|
- drivers
|
|
- fleet
|
|
- vehicle_types
|
|
- vehicles
|
|
- availability
|
|
- shifts
|
|
- working_zones
|
|
- pricing
|
|
- capabilities
|
|
- bundles
|
|
- dispatch
|
|
- routing
|
|
- optimization
|
|
- tracking
|
|
- proof_of_delivery
|
|
- settlement
|
|
- merchant_connector
|
|
- notifications
|
|
- driver_app_apis
|
|
- dispatcher_panel_apis
|
|
- customer_tracking
|
|
- fleet_analytics
|
|
- ai_hooks
|
|
- external_providers
|
|
|
|
- id: restaurant
|
|
name: Restaurant / Cafe
|
|
owner: TBD
|
|
path: backend/services/restaurant
|
|
database: restaurant_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: restaurant.*
|
|
dependencies:
|
|
- core-platform
|
|
- loyalty
|
|
events:
|
|
- order.*
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/phases/Restaurant/README.md
|
|
current_version: 0.0.0
|
|
current_phase: restaurant-foundation
|
|
status: scaffolded
|
|
|
|
- id: ecommerce
|
|
name: Ecommerce
|
|
owner: TBD
|
|
path: backend/services/ecommerce
|
|
database: ecommerce_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: ecommerce.*
|
|
dependencies:
|
|
- core-platform
|
|
events:
|
|
- order.*
|
|
- product.*
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/module-registry.md
|
|
current_version: 0.0.0
|
|
current_phase: ecommerce-foundation
|
|
status: scaffolded
|
|
|
|
- id: marketplace
|
|
name: Marketplace
|
|
owner: TBD
|
|
path: null
|
|
database: TBD
|
|
api_prefix: TBD
|
|
permission_prefix: marketplace.*
|
|
dependencies:
|
|
- ecommerce
|
|
- identity-access
|
|
- accounting
|
|
events: []
|
|
health_endpoint: TBD
|
|
documentation:
|
|
- docs/phases/Marketplace/README.md
|
|
current_version: 0.0.0
|
|
current_phase: marketplace-foundation
|
|
status: planned
|
|
|
|
- id: automation
|
|
name: Automation
|
|
owner: TBD
|
|
path: null
|
|
database: TBD
|
|
api_prefix: TBD
|
|
permission_prefix: automation.*
|
|
dependencies: []
|
|
events: []
|
|
health_endpoint: TBD
|
|
documentation:
|
|
- docs/phases/Automation/README.md
|
|
current_version: 0.0.0
|
|
current_phase: automation-foundation
|
|
status: planned
|
|
|
|
- id: academy
|
|
name: Academy
|
|
owner: TBD
|
|
path: null
|
|
database: academy_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: academy.*
|
|
dependencies:
|
|
- core-platform
|
|
events: []
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/phases/Future/README.md
|
|
current_version: 0.0.0
|
|
current_phase: academy-foundation
|
|
status: planned
|
|
|
|
- id: clinic
|
|
name: Clinic
|
|
owner: TBD
|
|
path: null
|
|
database: clinic_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: clinic.*
|
|
dependencies:
|
|
- core-platform
|
|
events: []
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/phases/Future/README.md
|
|
current_version: 0.0.0
|
|
current_phase: clinic-foundation
|
|
status: planned
|
|
|
|
- id: hotel
|
|
name: Hotel
|
|
owner: TBD
|
|
path: null
|
|
database: hotel_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: hotel.*
|
|
dependencies:
|
|
- core-platform
|
|
events: []
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/phases/Future/README.md
|
|
current_version: 0.0.0
|
|
current_phase: hotel-foundation
|
|
status: planned
|
|
|
|
- id: tourism
|
|
name: Tourism
|
|
owner: TBD
|
|
path: null
|
|
database: tourism_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: tourism.*
|
|
dependencies:
|
|
- core-platform
|
|
events: []
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/phases/Future/README.md
|
|
current_version: 0.0.0
|
|
current_phase: tourism-foundation
|
|
status: planned
|
|
|
|
- id: ai_assistant
|
|
name: AI Assistant
|
|
owner: TBD
|
|
path: backend/services/ai_assistant
|
|
database: ai_assistant_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: ai_assistant.*
|
|
dependencies:
|
|
- core-platform
|
|
events:
|
|
- assistant.*
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/architecture/ai-architecture.md
|
|
- docs/phases/AI/README.md
|
|
current_version: 0.0.0
|
|
current_phase: ai-assistant-foundation
|
|
status: scaffolded
|
|
|
|
- id: website_builder
|
|
name: Website Builder
|
|
owner: TBD
|
|
path: backend/services/website_builder
|
|
database: website_builder_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: website_builder.*
|
|
dependencies:
|
|
- file_storage
|
|
events: []
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/module-registry.md
|
|
current_version: 0.0.0
|
|
current_phase: future-services
|
|
status: scaffolded
|
|
|
|
- id: live_chat
|
|
name: Live Chat
|
|
owner: TBD
|
|
path: backend/services/live_chat
|
|
database: live_chat_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: live_chat.*
|
|
dependencies:
|
|
- core-platform
|
|
events:
|
|
- conversation.*
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/module-registry.md
|
|
current_version: 0.0.0
|
|
current_phase: future-services
|
|
status: scaffolded
|
|
|
|
- id: smart_messenger
|
|
name: Smart Messenger
|
|
owner: TBD
|
|
path: backend/services/smart_messenger
|
|
database: smart_messenger_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: smart_messenger.*
|
|
dependencies:
|
|
- core-platform
|
|
events: []
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/module-registry.md
|
|
current_version: 0.0.0
|
|
current_phase: future-services
|
|
status: scaffolded
|
|
|
|
- id: sms_panel
|
|
name: SMS Panel
|
|
owner: TBD
|
|
path: backend/services/sms_panel
|
|
database: sms_panel_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: sms_panel.*
|
|
dependencies:
|
|
- core-platform
|
|
events: []
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/module-registry.md
|
|
- docs/architecture/adr/ADR-012.md
|
|
current_version: 0.0.0
|
|
current_phase: sms-panel-future
|
|
status: scaffolded
|
|
notes: Prefer communication service for new messaging work (ADR-012).
|
|
|
|
- id: notification
|
|
name: Notification
|
|
owner: TBD
|
|
path: backend/services/notification
|
|
database: notification_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: notification.*
|
|
dependencies:
|
|
- core-platform
|
|
events: []
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/module-registry.md
|
|
current_version: 0.0.0
|
|
current_phase: future-services
|
|
status: scaffolded
|
|
|
|
- id: file_storage
|
|
name: File Storage
|
|
owner: TBD
|
|
path: backend/services/file_storage
|
|
database: file_storage_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: file_storage.*
|
|
dependencies: []
|
|
events: []
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/module-registry.md
|
|
current_version: 0.0.0
|
|
current_phase: future-services
|
|
status: scaffolded
|
|
|
|
- id: link_shortener
|
|
name: Link Shortener
|
|
owner: TBD
|
|
path: backend/services/link_shortener
|
|
database: link_shortener_db
|
|
api_prefix: /api/v1
|
|
permission_prefix: link_shortener.*
|
|
dependencies:
|
|
- core-platform
|
|
events: []
|
|
health_endpoint: /health
|
|
documentation:
|
|
- docs/module-registry.md
|
|
current_version: 0.0.0
|
|
current_phase: future-services
|
|
status: scaffolded
|
|
|
|
- id: frontend
|
|
name: Frontend
|
|
owner: Platform
|
|
path: frontend
|
|
database: null
|
|
api_prefix: consumes /api/v1
|
|
permission_prefix: UI gated by /me roles
|
|
dependencies:
|
|
- core-platform
|
|
- identity-access
|
|
- keycloak
|
|
events: []
|
|
health_endpoint: null
|
|
documentation:
|
|
- docs/frontend/README.md
|
|
current_version: Next-15.5.x
|
|
current_phase: onboarding-4
|
|
status: active
|