- Drop @supabase/supabase-js entirely; add drizzle-orm + postgres (porsager) driver - New packages/db: schema (pgSchema ordinarthur_os), client factory, migrate runner, drizzle-kit config - SQL migrations: 0000_init (pgcrypto + schema), 0001_jobs (jobs + job_search_criteria, no RLS) - Rewrite apps/api db module with DI symbols DB/DB_HANDLE + @InjectDb() decorator - Rewrite jobs.service.ts with Drizzle queries (upsert via onConflictDoUpdate, arrayOverlaps for stack filter) - Replace SUPABASE_* env vars with DATABASE_URL in env config + .env.example - Add docker-compose.yml (Postgres 16-alpine, dev only) - Add deploy/k8s/postgres.yaml (StatefulSet + PVC), migrate.job.yaml, updated secrets.template.yaml - Update all docs (README, PLAN, ARCHITECTURE, CLAUDE.md, AGENTS.md, packages/db/README.md) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1.4 KiB
1.4 KiB
AGENTS.md — ordinarthur-os
Avant toute action, lire dans cet ordre :
Règles non-négociables
- Pas de Next.js, pas de Vercel. Stack = Vite/React + NestJS, déploiement k3s.
- L'IA ne mute jamais la DB sans clic de confirmation utilisateur. Le backend renvoie des
ProposedAction[], la PWA confirme via modal, puis/ai/command/confirmexécute. - Single-user. Bearer token statique, pas de multi-tenant.
- Design = portfolio arthurbarre.fr (cream
#F5F1EA, ink#0F0F0F, accent orange#FF4A1C, mono labels, bordures, italique = orange). PAS le violet/cyan du HTML jobs. - FR only côté IA (prompts + STT lang=fr).
- Postgres standalone dans le k3s (plus de Supabase), schéma dédié
ordinarthur_os. ORM = Drizzle (viapackages/db).
Phases
Voir PLAN.md. Implémentation séquentielle Phase 0 → 7. Phase 8 (finance) reportée.
Conventions repo
- Monorepo pnpm + Turborepo
apps/pwaVite + React + TanStack Router/Query + Tailwind + shadcnapps/apiNestJS (modules par domaine), Drizzle ORM via@ordinarthur-os/dbpackages/sharedtypes + zod DTOs partagés PWA ↔ APIpackages/dbschéma Drizzle +migrations/SQL versionnées (runnerpnpm --filter @ordinarthur-os/db migrate)- Pas de fichier
.envcommité, juste.env.example