- Add CLAUDE.md at root and AGENTS.md in apps/api, apps/indexer, apps/backoffice, crates/parsers with module-specific guidelines - Unify all service ports to 70XX (no more internal/external split): API 7080, Indexer 7081, Backoffice 7082 - Update docker-compose.yml, Dockerfiles, config.rs defaults, .env.example, backoffice routes, bench.sh, smoke.sh Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
Stripstream Librarian
Gestionnaire de bibliothèque de bandes dessinées/ebooks. Workspace Cargo multi-crates avec backoffice Next.js.
Architecture
| Service | Dossier | Port local |
|---|---|---|
| API REST (axum) | apps/api/ |
7080 |
| Indexer (background) | apps/indexer/ |
7081 |
| Backoffice (Next.js) | apps/backoffice/ |
7082 |
| PostgreSQL | infra | 6432 |
| Meilisearch | infra | 7700 |
Crates partagés : crates/core (config env), crates/parsers (CBZ/CBR/PDF).
Commandes
# Build
cargo build # workspace entier
cargo build -p api # crate spécifique
cargo build --release # version optimisée
# Linting / format
cargo clippy
cargo fmt
# Tests
cargo test
cargo test -p parsers
# Infra (dépendances uniquement) — docker-compose.yml est à la racine
docker compose up -d postgres meilisearch
# Backoffice dev
cd apps/backoffice && npm install && npm run dev # http://localhost:7082
# Migrations
sqlx migrate run # DATABASE_URL doit être défini
Environnement
cp .env.example .env # puis éditer les valeurs REQUIRED
Variables requises au démarrage : DATABASE_URL, MEILI_URL, MEILI_MASTER_KEY, API_BOOTSTRAP_TOKEN.
Gotchas
- Dépendances système : 4 outils requis —
unrar(CBR listing),unar(CBR extraction),pdfinfo(PDF page count),pdftoppm(PDF rendu).unrar≠unar. - Port backoffice :
npm run devécoute sur 7082, pas 3000. - LIBRARIES_ROOT_PATH : les chemins en DB commencent par
/libraries/; en dev local, définir cette variable pour remapper vers le dossier réel. - Thumbnails : stockés dans
THUMBNAIL_DIRECTORY(défaut/data/thumbnails), générés par l'API (pas l'indexer) — l'indexer déclenche un checkup viaPOST /index/jobs/:id/thumbnails/checkup. - Workspace Cargo : les dépendances externes sont définies dans le
Cargo.tomlracine, pas dans les crates individuels. - Migrations : dossier
infra/migrations/, géré par sqlx. Toujours migrer avant de démarrer les services.
Fichiers clés
| Fichier | Rôle |
|---|---|
crates/core/src/config.rs |
Config depuis env (API, Indexer, AdminUI) |
crates/parsers/src/lib.rs |
Détection format, extraction métadonnées |
apps/api/src/books.rs |
Endpoints CRUD livres |
apps/api/src/pages.rs |
Rendu pages + cache LRU |
apps/indexer/src/scanner.rs |
Scan filesystem |
infra/migrations/*.sql |
Schéma DB |
Voir
AGENTS.mdpour les conventions de code détaillées (error handling, patterns sqlx, async/tokio). DesAGENTS.mdspécifiques existent dansapps/api/,apps/indexer/,apps/backoffice/,crates/parsers/.