feat(context): add NestJS backend, PostgreSQL database, and migrate web app from Supabase to API

- Create NestJS backend on port 3020 with 4 modules (space, document, ai, token)
- Add Drizzle schema with 5 tables (spaces, documents, token_transactions, model_prices, user_tokens)
- Rewrite web services (spaces, documents, tokens, ai) to use shared API client instead of Supabase
- Move AI API keys server-side (Azure OpenAI, Google Gemini)
- Add seed script for model prices (gpt-4.1, gemini-pro, gemini-flash)
- Add 70 unit tests across 4 test suites (space, document, token, ai services)
- Add monorepo integration (setup-databases.sh, generate-env.mjs, docker init-db, root scripts)
- Remove @supabase/supabase-js dependency and delete supabase.ts from web app
- Update CLAUDE.md with full API documentation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-03-19 09:28:01 +01:00
parent 7f4edb3dfb
commit ea4b585f37
50 changed files with 4041 additions and 361 deletions

View file

@ -157,6 +157,14 @@
"dev:worldream:web": "pnpm --filter @worldream/web dev",
"context:dev": "turbo run dev --filter=context...",
"dev:context:mobile": "pnpm --filter @context/mobile dev",
"dev:context:web": "pnpm --filter @context/web dev",
"dev:context:backend": "pnpm --filter @context/backend dev",
"dev:context:app": "turbo run dev --filter=@context/web --filter=@context/backend",
"dev:context:full": "./scripts/setup-databases.sh context && ./scripts/setup-databases.sh auth && concurrently -n auth,backend,web -c blue,green,cyan \"pnpm dev:auth\" \"pnpm dev:context:backend\" \"pnpm dev:context:web\"",
"context:db:push": "pnpm --filter @context/backend db:push",
"context:db:studio": "pnpm --filter @context/backend db:studio",
"context:db:seed": "pnpm --filter @context/backend db:seed",
"setup:db:context": "./scripts/setup-databases.sh context",
"planta:dev": "turbo run dev --filter=planta...",
"dev:planta:web": "pnpm --filter @planta/web dev",
"dev:planta:backend": "pnpm --filter @planta/backend dev",
@ -194,7 +202,13 @@
"storage:db:studio": "pnpm --filter @storage/backend db:studio",
"storage:db:seed": "pnpm --filter @storage/backend db:seed",
"mukke:dev": "turbo run dev --filter=mukke...",
"dev:mukke:mobile": "pnpm --filter @mukke/mobile dev",
"dev:mukke:web": "pnpm --filter @mukke/web dev",
"dev:mukke:landing": "pnpm --filter @mukke/landing dev",
"dev:mukke:backend": "pnpm --filter @mukke/backend dev",
"dev:mukke:app": "turbo run dev --filter=@mukke/web --filter=@mukke/backend",
"dev:mukke:full": "./scripts/setup-databases.sh mukke && ./scripts/setup-databases.sh auth && concurrently -n auth,backend,web -c blue,green,cyan \"pnpm dev:auth\" \"pnpm dev:mukke:backend\" \"pnpm dev:mukke:web\"",
"mukke:db:push": "pnpm --filter @mukke/backend db:push",
"mukke:db:studio": "pnpm --filter @mukke/backend db:studio",
"traces:dev": "turbo run dev --filter=traces...",
"dev:traces:mobile": "pnpm --filter @traces/mobile dev",
"dev:traces:backend": "pnpm --filter @traces/backend start:dev",