feat(services): create mana-analytics, remove feedback/analytics/ai from auth

Extract feedback, analytics, and AI modules from mana-core-auth into
standalone mana-analytics service (Hono + Bun, Port 3064).

New service (services/mana-analytics/):
- User feedback CRUD with voting
- AI-powered feedback title generation via mana-llm
- Simplified from DuckDB analytics to pure PostgreSQL
- ~550 LOC

Removed from mana-core-auth:
- feedback/ module (6 files)
- analytics/ module (4 files)
- ai/ module (3 files)
- db/schema/feedback.schema.ts

mana-core-auth now contains ONLY pure auth:
- Better Auth (JWT, Sessions, 2FA, Passkeys, OIDC, Magic Links)
- Organizations/Guilds (membership management)
- API Keys, Security, Me (GDPR), Health, Metrics
- Ready for Phase 5: Hono rewrite

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-03-28 02:29:24 +01:00
parent 30e124e609
commit 753c685ef7
21 changed files with 562 additions and 83 deletions

View file

@ -752,34 +752,7 @@ services:
retries: 3
start_period: 60s
skilltree-backend:
build:
context: .
dockerfile: apps/skilltree/apps/backend/Dockerfile
image: skilltree-backend:local
container_name: mana-app-skilltree-backend
restart: always
depends_on:
mana-auth:
condition: service_healthy
environment:
NODE_ENV: production
PORT: 3038
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/skilltree
DB_HOST: postgres
DB_PORT: 5432
DB_USER: postgres
MANA_CORE_AUTH_URL: http://mana-auth:3001
CORS_ORIGINS: https://skilltree.mana.how,https://mana.how
GLITCHTIP_DSN: http://93548ec4e2a14586bfef9f4f98e72fe1@glitchtip:8020/16
ports:
- "3038:3038"
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3038/health"]
interval: 120s
timeout: 10s
retries: 3
start_period: 60s
# skilltree-backend: REMOVED — migrated to local-first (mana-sync handles CRUD)
# photos-backend: REMOVED — migrated to local-first (talks to mana-media directly)
@ -856,35 +829,7 @@ services:
retries: 3
start_period: 60s
citycorners-backend:
build:
context: .
dockerfile: apps/citycorners/apps/backend/Dockerfile
image: citycorners-backend:local
container_name: mana-app-citycorners-backend
restart: always
depends_on:
mana-auth:
condition: service_healthy
environment:
NODE_ENV: production
PORT: 3042
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/citycorners
DB_HOST: postgres
DB_PORT: 5432
DB_USER: postgres
MANA_CORE_AUTH_URL: http://mana-auth:3001
MANA_SEARCH_URL: http://mana-search:3020
CORS_ORIGINS: https://citycorners.mana.how,https://mana.how
ADMIN_SERVICE_KEY: ${MANA_CORE_SERVICE_KEY}
ports:
- "3042:3042"
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3042/health"]
interval: 120s
timeout: 10s
retries: 3
start_period: 60s
# citycorners-backend: REMOVED — migrated to local-first (mana-sync handles CRUD)
# ============================================
# Tier 4: Matrix Stack (Ports 4000-4099)
@ -1345,21 +1290,19 @@ services:
context: .
dockerfile: apps/skilltree/apps/web/Dockerfile
args:
PUBLIC_BACKEND_URL: http://skilltree-backend:3038
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
image: skilltree-web:local
container_name: mana-app-skilltree-web
restart: always
depends_on:
skilltree-backend:
mana-auth:
condition: service_healthy
environment:
NODE_ENV: production
PORT: 5020
PUBLIC_BACKEND_URL: http://skilltree-backend:3038
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
PUBLIC_BACKEND_URL_CLIENT: https://skilltree-api.mana.how
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
PUBLIC_SYNC_SERVER_URL: ws://mana-core-sync:3051
ports:
- "5020:5020"
healthcheck:
@ -1433,21 +1376,19 @@ services:
context: .
dockerfile: apps/citycorners/apps/web/Dockerfile
args:
PUBLIC_BACKEND_URL: http://citycorners-backend:3042
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
image: citycorners-web:local
container_name: mana-app-citycorners-web
restart: always
depends_on:
citycorners-backend:
mana-auth:
condition: service_healthy
environment:
NODE_ENV: production
PORT: 5022
PUBLIC_BACKEND_URL: http://citycorners-backend:3042
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
PUBLIC_CITYCORNERS_API_URL_CLIENT: https://citycorners-api.mana.how
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
PUBLIC_SYNC_SERVER_URL: ws://mana-core-sync:3051
ports:
- "5022:5022"
healthcheck: