CLAUDE.md
CLAUDE.mdCLAUDE.mdroot
Quality
82/100
Scores the file, not the repository.Length
972 words
18 headings · 9 code blocksRepository
0
— · pushed 178 days agoLast changed
3 days ago
First indexed 3 days ago.1# Claude.md — Guide pour Claude Code (📦 projet: <anaylseur web>)23> But: permettre à Claude Code (claude.ai/code) d’intervenir efficacement sur ce repo **sans contexte superflu**, avec sorties en **diffs appliquables**, **tests**, et **docs à jour**.45---67## 1) Aperçu Projet (à compléter rapidement)89Si des infos manquent, pose-moi exactement 3 questions ciblées pour compléter :1011- **Objectif produit** : …12- **Fonctions clés** : …13- **Public cible / plans** : …1415---1617## 2) Stack & Contraintes1819- **Framework**: Next.js **15** (App Router) • **TypeScript strict**20- **UI**: Tailwind CSS v4 • shadcn/ui21- **Auth**: Better Auth (multi-organisation, rôles)22- **Billing**: Stripe (abos/quotas)23- **DB**: PostgreSQL + Prisma (auth/billing) • Supabase (domaine métier) _(si utilisé ici)_24- **Email**: React Email + Resend25- **Tests**: Vitest (unit) • Playwright (e2e)26- **Queue**: Redis _(si workflows async)_27- **Workflows**: n8n (webhooks HMAC, sync<5s / async≥5s)28- **Contraintes**: responsive, idempotence, rate-limit, logs corrélés (runId), zéro secret en clair2930---3132## 3) Conventions d’IO pour Claude Code3334Toujours produire des **fichiers** et **diffs unifiés**:3536```txt37path: <chemin/vers/fichier.ext>38<contenu complet du fichier>3940diff41--- a/<chemin/ancien>42+++ b/<chemin/nouveau>43@@44<patch>45```4647**Exigé pour chaque tâche de code** :48491. Fichiers modifiés/créés ✅502. **Tests** (unit/integration/e2e selon le scope) ✅513. **Mise à jour docs** (README concerné / Claude.md si specs changent) ✅5253Interdits : commandes shell réelles, secrets, tokens, clés `service_role`.5455---5657## 4) Points chauds du repo (où regarder/écrire)5859- `app/` : pages & routes (App Router)60- `src/components/` : UI (shadcn/ui dans `ui/`, customs dans `nowts/`)61- `src/features/` : logique par feature62- `src/lib/` : configs, services, clients API63- `src/hooks/` : hooks React64- `emails/` : templates React Email65- `prisma/` : `schema.prisma`, migrations, seed66- `__tests__/` : unit67- `e2e/` : e2e (Playwright)6869---7071## 5) Intégration n8n & Supabase — _Context packs_7273Quand tu touches un workflow, charge **uniquement** son pack minimal :7475```76/workflows/<slug>/77 workflow.json # export n8n SANITISÉ (aucun credential)78 input.schema.json # schéma d’entrée (Zod/JSON Schema)79 output.schema.json # schéma de sortie80 README.md # Trigger, I/O, SLA (sync/async), erreurs81/workflows/index.yml # mapping → routes API, SLA, webhooks82```8384Accès BD métier via **Supabase** (si présent) :8586```87/supabase/migrations/*.sql # schéma88/supabase/rls/*.sql # policies RLS + tests89/docs/erd.md # diagramme tables90```9192**Garde-fous** : jamais de headers `Authorization`/API keys dans `workflow.json`. Remplacer par `PLACEHOLDER_*`.9394---9596## 6) Contrats API & Sécurité (exemple)9798**Routes type** :99100```101POST /api/orgs/[orgSlug]/audits/single102POST /api/orgs/[orgSlug]/audits/batch103GET /api/orgs/[orgSlug]/audits/status # nouveauté Phase 4104GET /api/orgs/[orgSlug]/audits/status/[runId]105POST /api/orgs/[orgSlug]/audits/webhook/n8n # callbacks106```107108**Validation** : Zod côté server.109110```ts111export const SingleAuditSchema = z.object({112 url: z.string().url(),113 email: z.string().email(),114 deliveryMethod: z.enum(["email", "dashboard"]),115});116117export const BatchAuditSchema = z.object({118 csvData: z.string().min(10, 'CSV trop court'),119 batchName: z.string().optional(),120});121```122123**API Status (Phase 4)** : Récupération du statut des audits d'une organisation.124125```ts126// GET /api/orgs/[orgSlug]/audits/status127// Réponse format:128{129 success: true,130 audits: FormattedAudit[], // Liste des audits formatés131 stats: AuditStats, // Statistiques agrégées132 quota: QuotaInfo, // Informations quota133 organization: OrgInfo, // Infos organisation134 meta: MetaInfo // Métadonnées135}136```137138**HMAC pour webhooks** :139140```ts141import { createHmac, timingSafeEqual } from "crypto";142export function isValidHMAC(payload: string, signature: string) {143 const h = createHmac("sha256", process.env.N8N_WEBHOOK_SECRET!)144 .update(payload)145 .digest("hex");146 return timingSafeEqual(Buffer.from(signature), Buffer.from(h));147}148```149150**Idempotence** : header `Idempotency-Key` + store (clé = userId+route+hash(payload)).151152---153154## 7) Auth, Billing & Quotas (exigences)155156- Better-Auth : helpers `getUser()`/`getRequiredUser()`, organisations, rôles.157- Stripe : produits/plans, webhooks `invoice.paid`/`customer.subscription.updated`.158- Quotas : middleware server (bloque si limite atteinte), compteur mensuel par org.159- UI : afficher quota restant, erreurs “quota_exceeded”, retries guidés.160161---162163## 8) UX & États (shadcn/ui)164165États standard pour toute feature :166167- `idle` | `loading` | `success` | `error` | `quota_exceeded`168- Async : barre de progression + ETA, suivi par `runId`, mise à jour par polling (2s) ou WebSocket/SSE.169170---171172## 9) Commandes Dév (pnpm)173174**Core**175176- `pnpm dev` • `pnpm build` • `pnpm start`177- `pnpm ts` (type-check) • `pnpm lint` • `pnpm lint:ci`178- `pnpm clean` • `pnpm format`179180**Tests**181182- `pnpm test:ci` (unit) • `pnpm test:e2e:ci` (e2e)183184**DB / Auth**185186- `pnpm prisma:seed` • `pnpm better-auth:migrate`187188**Outils**189190- `pnpm email` • `pnpm stripe-webhooks` • `pnpm knip`191192_(ajoute tes scripts custom si besoin)_193194---195196## 10) Règles & Checklist avant code197198**Toujours** vérifier avant un CCODE.\* :199200- [ ] Trigger, Inputs, Outputs, Durée (sync/async) clairs201- [ ] Schémas I/O (Zod) alignés avec `workflow.json` (n8n)202- [ ] Auth/Idempotence/HMAC/Rate-limit traités203- [ ] Tables & RLS Supabase (si concerné) précisées204- [ ] Cas d’erreurs + messages UX définis205- [ ] Variables d’env présentes dans `.env.example`206207**Sécurité**208209- ❌ Pas de secrets, tokens, `service_role` ou credentials dans le code/JSON210- ❌ Pas de commandes shell exécutées211- ✅ Placeholder uniquement + doc mise à jour212213---214215## 11) Tests & Observabilité (minimum)216217- **Unit** : logique (schémas, quotas, mappers)218- **Intégration** : routes API ↔ n8n (mocks), Prisma219- **E2E** : parcours clé (single, batch, affichage rapport)220- **Logs** : structurés (JSON), corrélation par `runId`221- **Métriques** : temps d’exécution, taux d’échec, quotas222223---224225## 12) Variables d’Environnement (placeholders)226227```bash228# n8n229N8N_BASE_URL=<https://n8n.example.com>230N8N_WEBHOOK_SECRET=<REQUIRED>231232# Supabase (si utilisé côté serveur uniquement)233SUPABASE_URL=<...>234SUPABASE_ANON_KEY=<...>235SUPABASE_SERVICE_KEY=<SERVER_ONLY>236237# Stripe238STRIPE_SECRET_KEY=<...>239STRIPE_WEBHOOK_SECRET=<...>240241# Redis (si file d’attente)242REDIS_URL=<redis://...>243```244245---246247## 13) Tâches types pour Claude Code248249- **Implémenter une route audit**250 1. Créer handler Next.js + schémas Zod251 2. Appel n8n (HMAC + idempotence)252 3. Tests unit + intégration (mocks n8n)253 4. Doc (README workflow + cette section si specs changent)254255- **Brancher un workflow n8n async**256 1. Endpoint POST + création `runId`257 2. Polling/WebSocket pour suivi258 3. Webhook callback + MAJ statut259 4. UI états + tests e2e260261_(Toujours livrer en fichiers + diff + tests + docs.)_262263```264265---266267Si tu préfères passer par **Claude Code**, dis-le et je te fournis la **version “path: Claude.md”** (même contenu, prêt pour un coller-coller direct dans l’outil).268```269
Similar configs
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| Adit-Jain-srm/NightmareNetCLAUDE.md · 45 | CLAUDE.md | buildtestlint-formatstyle+6 | 100/100 | 3 days ago | |
| bagisto/bagistoCLAUDE.md · 28k | CLAUDE.md | setupbuildteststyle+5 | 100/100 | 3 days ago | |
| microsoft/playwrightCLAUDE.md · 94k | CLAUDE.md | buildtestlint-formatstyle+7 | 100/100 | 3 days ago | |
| dotCMS/corecore-web/CLAUDE.md · 949 | CLAUDE.md | teststylearchtesting-strategy+3 | 100/100 | 3 days ago | |
| nimbalyst/nimbalystpackages/android/CLAUDE.md · 1.4k | CLAUDE.md | setupbuildstylearch+2 | 100/100 | 3 days ago | |
| filamentphp/filamentCLAUDE.md · 32k | CLAUDE.md | buildtestlint-formatstyle+7 | 100/100 | 3 days ago | |
| dotCMS/coreCLAUDE.md · 949 | CLAUDE.md | setupbuildteststyle+7 | 99/100 | today | |
| lollipopkit/flutter_server_boxCLAUDE.md · 8.3k | CLAUDE.md | buildteststylearch+2 | 98/100 | 3 days ago |
