Get Started
Structure du dépôt
Arborescence réelle du monorepo nAI'vi et rôle de chaque dossier
Structure du dépôt
Le dépôt est un workspace Bun. Chaque application est déployée séparément, à partir de la même base de code.
naivi-bots/
├── apps/
│ ├── server/ # API du back-office (Bun, Hono, oRPC, Drizzle)
│ │ ├── drizzle/ # Migrations SQL
│ │ ├── src/
│ │ │ ├── index.ts # App Hono : CORS, /api/auth, /rpc, /health, /api/i18n
│ │ │ ├── db/schema/ # auth.ts (Better Auth), naivi.ts (fichiers, chunks, Q&R, tags, rôles, index)
│ │ │ ├── lib/ # auth.ts, orpc.ts (procédures), context.ts, i18n.ts
│ │ │ ├── routers/ # auth.ts, naivi.ts, roles-tags.ts, index.ts
│ │ │ ├── utils/ # Traitement des fichiers, Q&R, tags, client document-processor
│ │ │ └── scripts/ # migrate.ts, check-migrations.ts
│ │ └── tests/ # Autorisations des procédures, upload Q&R, finetuned
│ │
│ ├── web/ # Interface du back-office (React 19, Vite, TanStack Router)
│ │ ├── src/
│ │ │ ├── routes/ # Routes fichiers : (public), (auth), (protected), (protected)/admin
│ │ │ ├── features/ # Pages et composants métier : admin, auth, common, public
│ │ │ ├── components/ui/ # Composants shadcn/ui
│ │ │ ├── hooks/ # Hooks TanStack Query (fichiers, chunks, Q&R, tags)
│ │ │ ├── lib/ # auth-client.ts, i18n
│ │ │ └── utils/ # orpc.ts (client typé), runtime-env.ts, types.ts
│ │ ├── vite.config.ts # Plugin runtime-env (window.RUNTIME_ENV)
│ │ └── tests/ # Garde des routes (Vitest)
│ │
│ ├── rag-agent/ # Deux services Python : agent (POST /chat) et API d'index
│ │ ├── src/rag_agent/
│ │ │ ├── interfaces/agent/app.py # FastAPI : POST /chat (SSE), GET /healthz
│ │ │ ├── interfaces/index/index_api.py # FastAPI : régénération de l'index
│ │ │ ├── core/orchestration.py # Orchestration des requêtes
│ │ │ └── rag/ # Indexation FAISS et recherche
│ │ ├── src/common/ # db.py, litellm.py (appels HTTP au proxy LiteLLM)
│ │ ├── src/config/ # Paramètres RAG et i18n
│ │ └── tests/
│ │
│ └── document-processor/ # Parsing et découpage (FastAPI, Docling)
│ ├── src/
│ │ ├── main.py # App FastAPI et routes (dont /health)
│ │ ├── parsers/ # Un parseur par famille de formats
│ │ ├── chunking.py # Découpage en fragments
│ │ ├── job_queue.py, job_store.py # File de jobs asynchrones
│ │ └── config.py # Variables DOCLING_* et limites de taille
│ └── tests/
│
├── docs/ # Site de documentation (Next.js, Fumadocs)
│ └── content/docs/ # Pages MDX
│
├── helm/ # Chart Helm (un déploiement par bot)
│ ├── values.yaml
│ └── templates/ # Deployments, services, ingress, configmap, secrets
│
├── data/ # Ignoré par Git, sauf mock-docs/ et fake_csv.csv
├── scripts/ # convert_i18n_to_helm_values.py
├── biome.json # Lint TypeScript (Biome)
├── docker-compose.yml # Stack locale
├── Dockerfile, Dockerfile.local # Images de production et de développement
├── .env.example # Variables d'environnement
├── i18n.json.example # Source des traductions (copiée dans helm/values.yaml)
└── package.json # Scripts racine (dev, build, check-types, db:*)Où modifier quoi
- Nouvelle procédure oRPC :
apps/server/src/routers/, puis l'exposer dansrouters/index.ts. Elle doit figurer dans une seule liste deapps/server/tests/authorization.test.ts:PUBLIC,SIGNED_INouADMIN_ONLY. - Nouvelle page web : fichier dans
apps/web/src/routes/(routage fichier, généré par TanStack Router), composants dansfeatures/. - Nouveau format de fichier : parseur dans
apps/document-processor/src/parsers/, puis enregistrement dansregistry.py. - Paramètres RAG :
apps/rag-agent/src/config/. - Textes de l'interface :
i18n.json.example, puisscripts/convert_i18n_to_helm_values.py.
Pour le détail de chaque application, voir Serveur, Base de données et RAG.