lilith-platform.live/deployments/@domains/quinn.data/services.yaml

140 lines
3.8 KiB
YAML

# =============================================================================
# Quinn Analytics Deployment (data.transquinnftw.com)
# =============================================================================
# transquinnftw analytics cluster — website + provider dashboards + event collection.
# Sources span two external repos:
# Collector + BFF: @applications/@analytics
# Dashboards: lilith-platform/codebase/features/platform-analytics/
deployment:
id: quinn.data
name: Quinn Analytics
feature: platform-analytics
domain: data.transquinnftw.com
description: Website analytics dashboard (/) + provider analytics dashboard (/provider/) + event collection
orchestration:
dependencies: []
entryPoints:
- quinn.data.frontend
lifecycle:
keepAlive: true
autostart: false
services:
- id: website-frontend
type: frontend
port: 5122
source: external
repo: lilith-platform
entrypoint: codebase/features/platform-analytics/frontend-website
description: Website analytics dashboard — traffic, referrers, page views (Vite + React)
staticDist: /var/www/quinn.data/website/dist
healthCheck:
type: http
path: /
- id: provider-frontend
type: frontend
port: 5111
source: external
repo: lilith-platform
entrypoint: codebase/features/platform-analytics/frontend-provider
description: Provider analytics dashboard — profile performance, earnings, acquisition (Vite + React)
staticDist: /var/www/quinn.data/dist
healthCheck:
type: http
path: /
- id: bff
type: backend
port: 4005
source: external
repo: "@applications/@analytics"
entrypoint: services/bff
description: |
Website analytics BFF (user-data). Proxies tracking to collector.
Queries /api/* are composed and forwarded to quinn-api (which serves the
analytics query surface against the prod lilith_analytics DB).
Dev and prod both use quinn-api + prod DB (no dev DB).
healthCheck:
type: http
path: /health
- id: api
type: backend
port: 4110
source: external
repo: lilith-platform
entrypoint: codebase/features/platform-analytics/backend-api
description: Provider analytics query API (NestJS + TypeORM → TimescaleDB)
env:
LILITH_PROJECT_ROOT: "{lilith-platform root}"
PORT: "4110"
REDIS_PASSWORD: "{from .env}"
healthCheck:
type: http
path: /health
- id: collector
type: backend
port: 4001
source: external
repo: "@applications/@analytics"
entrypoint: services/collector
description: Event ingestion (X-Write-Key enforced)
healthCheck:
type: http
path: /health/live
- id: timescaledb
type: docker
port: 25434
source: external
repo: "@applications/@analytics"
compose: infrastructure/docker-compose.dev.yaml
description: TimescaleDB time-series storage
- id: redis
type: docker
port: 26379
source: external
repo: "@applications/@analytics"
compose: infrastructure/docker-compose.dev.yaml
description: Redis (BullMQ queues)
routing:
- path: /
service: website-frontend
type: frontend
- path: /api/
service: bff
type: proxy
- path: /health
service: bff
type: proxy
- path: /provider/
service: provider-frontend
type: frontend
- path: /provider/api/
service: api
type: proxy
- path: /analytics/track/
service: collector
type: proxy
deployments:
dev:
host: apricot
domain: data.quinn.apricot.lan
proxy: caddy
config: infrastructure/Caddyfile.local
start: ./run dev:analytics
stop: ./run dev:analytics:stop
status: ./run dev:analytics:status
production:
host: vps-0
domain: data.transquinnftw.com
proxy: nginx
config: deployments/@domains/quinn.data/nginx/prod.conf
deploy: deployments/@domains/quinn.data/deploy.sh