ordinarthur-os/AGENTS.md
ordinarthur 9c93e74318 replace Supabase with Postgres + Drizzle ORM
- 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>
2026-04-16 10:15:34 +02:00

1.4 KiB

AGENTS.md — ordinarthur-os

Avant toute action, lire dans cet ordre :

  1. README.md
  2. PLAN.md
  3. ARCHITECTURE.md

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/confirm exé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 (via packages/db).

Phases

Voir PLAN.md. Implémentation séquentielle Phase 0 → 7. Phase 8 (finance) reportée.

Conventions repo

  • Monorepo pnpm + Turborepo
  • apps/pwa Vite + React + TanStack Router/Query + Tailwind + shadcn
  • apps/api NestJS (modules par domaine), Drizzle ORM via @ordinarthur-os/db
  • packages/shared types + zod DTOs partagés PWA ↔ API
  • packages/db schéma Drizzle + migrations/ SQL versionnées (runner pnpm --filter @ordinarthur-os/db migrate)
  • Pas de fichier .env commité, juste .env.example