Files
festipod/AGENTS.md
T
Sylvain Duchesne 0294e3992f docs(concepts): migrate project docs into 7 concepts + code-grounded audit
Migrate .project/{knowledge,decisions,briefs} and the always-loaded
AGENTS.md/CLAUDE.md into the in-repo `concept` system (hook-delivered,
typed leaves). Then audit the actual code to verify the migrated doctrine
and capture knowledge that lived only in the source.

Concepts (53 leaves):
- functional-domain — produit : point de rencontre greffé, acteurs, déduplication
- app-architecture — modules, invariant d'imports, routing, écrans, styling-system,
  screen-pattern, cookbook d'ajout d'écran
- tech-stack — Bun-first, APIs, build pipeline, deployment (Dockerfile), commandes
- data-layer — NextGraph mono-store, shapes, modes, règles + caveats (suppression,
  champs non persistés, internals du contexte)
- bdd-testing — Cucumber multi-couches, contrat de couches, harness, cookbook
- app-security — posture actuelle (mono-store, confiance broker), auth wallet,
  brief matrice d'autorisations cible
- nextgraph-platform — NextGraph système externe + briefs (multi-store, shim, fork)

Audit corrections:
- décision SPARQL-delete annulée (superseded) → caveat (le code utilise ngSet.delete,
  persistance possiblement partielle)
- divergences relevées : routing path-based (pas hash), thème moderne sous components/sketchy,
  ConnectScreen hors registre, build:orm au chemin périmé, champs d'event perdus en connecté

Strip migrated sources; AGENTS.md/CLAUDE.md réduits au cœur (but, invariants,
carte des concepts) + pointeurs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 14:58:44 +02:00

2.2 KiB

Festipod

Web app mobile-first où les utilisateurs créent des points de rencontre qui se greffent sur des événements publics existants, pour favoriser les rencontres. L'événement n'est qu'un prétexte/ancrage ; la valeur, c'est le point de rencontre — on s'inscrit à un point de rencontre, pas à un événement. Stack : Bun + React + NextGraph (P2P, local-first, chiffré).

Invariants à toujours garder

  • Architecture feature-based : le code est organisé par domaine métier, pas par couche technique.
    src/modules/{event,user,home,auth,workshop,meeting,notification}/
    src/shared/          # Composants, context, data — importable par tous les modules
    src/app/             # App shell (router, providers, entrée)
    src/screens/index.ts # Registre d'écrans (utilisé par Storybook)
    
  • Un module n'importe QUE depuis shared/ — jamais d'un autre module. C'est l'invariant qui rend l'archi réelle.
  • Bun-first : bun / bun install / bun test / bun build, jamais node/npm/vite/jest. bun run dev (port 3000).

Doctrine du projet — concepts (livrée automatiquement)

La connaissance détaillée vit dans .project/concepts/ (système concept) : fiches courtes, typées, livrées par un hook quand tu touches leur territoire — tu n'as pas à les charger d'avance. Les 6 concepts :

Concept Couvre
functional-domain Modèle produit : point de rencontre, acteurs, concepts métier, défi déduplication
app-architecture Modules, invariant d'imports, app shell, routing path-based, écrans
tech-stack Bun-first, APIs Bun, build pipeline, commandes
data-layer NextGraph actuel (mono-store), shapes, modes connected/demo, règles + pièges (suppression, champs perdus, internals)
bdd-testing Cucumber multi-couches FR, contrat @ui/@data/@e2e, harness broker, cookbook
app-security Posture de sécurité actuelle (mono-store, confiance broker), auth wallet, modèle d'autorisations cible
nextgraph-platform NextGraph système externe (stores, inbox, SDK) + briefs prospectifs (multi-store, fork, shim)

Pour documenter un fait projet : /concept document <sujet> (ne pas écrire en libre dans .project/).