# 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 ` (ne pas écrire en libre dans `.project/`).