- 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>
30 lines
1.4 KiB
Markdown
30 lines
1.4 KiB
Markdown
# CLAUDE.md — ordinarthur-os
|
|
|
|
Avant toute action, lire dans cet ordre :
|
|
|
|
1. [`README.md`](./README.md)
|
|
2. [`PLAN.md`](./PLAN.md)
|
|
3. [`ARCHITECTURE.md`](./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`
|