Carte des paquets
Cette page liste tous les paquets Node/TypeScript du monorepo (les huit
catégories pnpm) : leur rôle, leur catégorie, et leurs dépendances internes —
qui consomme quoi. Elle répond à la question « pour comprendre un paquet,
lesquels dois-je lire ? ». Une section dédiée recense les
paquets racines — ceux qu’aucun autre paquet n’appelle — et
explique, pour chacun, pourquoi. La neuvième catégorie, dataops/ (code
Python hors du graphe pnpm —
ADR 0055), n’apparaît pas
dans cette carte ; voir
la structure du monorepo.
Page générée. Le contenu ci-dessous est dérivé des
package.jsonparscripts/docs/generate-packages-map.mjs. Ne l’éditez pas à la main : lancezpnpm docs:generateaprès un changement de dépendances. La fraîcheur est vérifiée en CI (plan « Documentation vérifiable »).
Pour la vue d’ensemble par catégorie et les règles transverses, voir la structure du monorepo.
Applications (apps/)
Section intitulée « Applications (apps/) »Les applications destinées aux utilisateurs finaux (interfaces web). Elles consomment les services et les bibliothèques sans être consommées par personne — ce sont les feuilles de l’arbre de dépendances.
Services (services/)
Section intitulée « Services (services/) »Les services HTTP déployés (back-ends). Ils exposent une API consommée par les applications et orchestrent l’accès aux plateformes externes.
| Paquet | Rôle | Dépend de | Consommé par |
|---|---|---|---|
atlas-crf | CRF Service - HTTP microservice for complex reporting forms | atlas-crf-client, atlas-crf-core, atlas-effect-socle, atlas-shared-config | atlas-crf-cli |
Bibliothèques (packages/)
Section intitulée « Bibliothèques (packages/) »Les bibliothèques réutilisables : toute la logique métier vit ici, jamais dans les applications ni les CLIs (ADR 0008). C’est le socle partagé du monorepo.
Outils en ligne de commande (cli/)
Section intitulée « Outils en ligne de commande (cli/) »Les outils en ligne de commande. Ils restent fins : ils orchestrent et appellent les bibliothèques de packages/, sans porter de logique métier propre (ADR 0008).
| Paquet | Rôle | Dépend de | Consommé par |
|---|---|---|---|
atlas-biblio-cli | CLI entry point for OpenAlex bibliographic data validation | atlas-citation-types, atlas-citation-validate, atlas-cli-toolkit, atlas-shared-config | — |
atlas-citation-cli | CLI for OpenAlex citation graph researcher data curation | atlas-citation, atlas-citation-fetch, atlas-cli-toolkit, atlas-shared-config | — |
atlas-crf-cli | CRF CLI - REDCap connectivity test and CRF server management | atlas-cli-toolkit, atlas-crf, atlas-crf-client, atlas-shared-config | — |
atlas-crf-openapi | Complex reporting form (CRF) source analysis, OpenAPI spec extraction, and API documentation tools | atlas-crf-core, atlas-shared-config | — |
atlas-crf-stats-cli | CLI to test CRF (REDCap) project tokens and inspect API responses | atlas-crf-logs, atlas-shared-config | — |
atlas-logos-cli | CLI to copy Atlas logo assets into a target directory (typically a SvelteKit app’s static/ folder) | atlas-logos | atlas-amarre, atlas-ecrin, atlas-find-an-expert |
atlas-net-cli | Network diagnostic CLI for Atlas | atlas-cli-toolkit, atlas-net, atlas-shared-config | — |
atlas-researcher-profiles-cli | Researcher profiles CLI: fetch OpenAlex works from CSV or REDCap and write to REDCap | atlas-citation-fetch, atlas-citation-types, atlas-cli-toolkit, atlas-researcher-profiles, atlas-shared-config | — |
atlas-stats-cli | CLI interactif pour visualiser les statistiques GitHub et npm du dépôt Atlas | atlas-shared-config, atlas-stats | — |
Interface partagée (ui/)
Section intitulée « Interface partagée (ui/) »Les composants d’interface partagés entre applications, pour garantir une cohérence visuelle sans dépendre d’un designer dédié.
| Paquet | Rôle | Dépend de | Consommé par |
|---|---|---|---|
atlas-ui | Shared Svelte UI components for the atlas monorepo, previewed via Storybook. | atlas-shared-config, atlas-validators | atlas-amarre, atlas-sillage |
Configuration (config/)
Section intitulée « Configuration (config/) »Les configurations transverses partagées (TypeScript, ESLint, Prettier, Vitest…) factorisées une fois et réutilisées par tous les paquets.
| Paquet | Rôle | Dépend de | Consommé par |
|---|---|---|---|
atlas-shared-config | Shared TypeScript, ESLint, and Prettier configuration for Atlas projects | — | atlas-amarre, atlas-amarre-sandbox, atlas-auth, atlas-baas, atlas-biblio-cli, atlas-cache, atlas-citation, atlas-citation-cli, atlas-citation-fetch, atlas-citation-types, atlas-citation-validate, atlas-cli-toolkit, atlas-crf, atlas-crf-cli, atlas-crf-client, atlas-crf-core, atlas-crf-dashboard, atlas-crf-fixtures, atlas-crf-logs, atlas-crf-openapi, atlas-crf-project-template, atlas-crf-sandbox, atlas-crf-stats-cli, atlas-dashboard, atlas-ecrin, atlas-effect-socle, atlas-errors, atlas-fetch-one-api-page, atlas-find-an-expert, atlas-net, atlas-net-cli, atlas-researcher-profiles, atlas-researcher-profiles-cli, atlas-sillage, atlas-sillage-sandbox, atlas-stats, atlas-stats-cli, atlas-sveltekit-csp, atlas-sveltekit-handler, atlas-test-utils-effect, atlas-test-utils-sveltekit, atlas-ui, atlas-validators |
Ressources (assets/)
Section intitulée « Ressources (assets/) »Les ressources statiques (logos, images) consommées par les applications.
| Paquet | Rôle | Dépend de | Consommé par |
|---|---|---|---|
atlas-logos | Logos and brand assets for Atlas projects | — | atlas-logos-cli |
Bancs d’essai (sandbox/)
Section intitulée « Bancs d’essai (sandbox/) »Les bancs d’essai et prototypes isolés : terrain d’expérimentation qui n’est jamais consommé par un paquet publiable (ADR 0021).
| Paquet | Rôle | Dépend de | Consommé par |
|---|---|---|---|
atlas-amarre-sandbox | Local Docker sandbox for the amarre app: bundles a CRF (REDCap) instance, a self-hosted BaaS (Appwrite), and the wiring scripts needed to run amarre end-to-end without depending on production services. | atlas-shared-config | — |
atlas-crf-sandbox | CRF (REDCap) testing sandbox - Docker environment and contract tests for validating OpenAPI specs | atlas-shared-config | — |
atlas-sillage-sandbox | Local Docker sandbox for the sillage app: bundles a CRF (REDCap) instance, a self-hosted BaaS (Appwrite), and the wiring scripts needed to run sillage end-to-end without depending on production services. | atlas-shared-config | — |
Paquets racines
Section intitulée « Paquets racines »Un paquet est racine quand aucun autre paquet du dépôt ne le consomme. La colonne « Consommé par » de la carte ci-dessus le marque d’un « — ». Ce n’est pas un défaut en soi : un livrable est racine par construction. Les sous-sections ci-dessous regroupent ces paquets par raison d’être racine, de l’attendu (un livrable au sommet) au suspect (un paquet interne que plus personne n’appelle).
Livrables applicatifs
Section intitulée « Livrables applicatifs »Applications et services : on les déploie et on les exécute, pas on ne les importe. Être au sommet de l’arbre est leur nature même.
| Paquet | Catégorie | Rôle |
|---|---|---|
atlas-amarre | apps/ | Application de gestion des conventions. |
atlas-crf-dashboard | apps/ | Tableau de bord interne — vue d’ensemble des dictionnaires REDCap et de leur conformité. |
atlas-dashboard | apps/ | Internal dashboard tracking npm and GitHub stats (releases, downloads) of the published Atlas packages |
atlas-ecrin | apps/ | Application de gestion des projets et de leurs dossiers d’avis éthiques. |
atlas-find-an-expert | apps/ | Outil de recherche d’expertise, basé sur l’agrégation des publications via OpenAlex. |
atlas-sillage | apps/ | Plateforme communautaire de mise en relation autour de projets ECRIN. |
Outils en ligne de commande
Section intitulée « Outils en ligne de commande »Points d’entrée lancés par un humain ou un script. Ils consomment des bibliothèques internes mais ne sont eux-mêmes jamais importés (les CLIs restent fins, la logique vit dans packages/ — cf. ADR 0008).
| Paquet | Catégorie | Rôle |
|---|---|---|
atlas-biblio-cli | cli/ | CLI entry point for OpenAlex bibliographic data validation |
atlas-citation-cli | cli/ | CLI for OpenAlex citation graph researcher data curation |
atlas-crf-cli | cli/ | CRF CLI - REDCap connectivity test and CRF server management |
atlas-crf-openapi | cli/ | Complex reporting form (CRF) source analysis, OpenAPI spec extraction, and API documentation tools |
atlas-crf-stats-cli | cli/ | CLI to test CRF (REDCap) project tokens and inspect API responses |
atlas-net-cli | cli/ | Network diagnostic CLI for Atlas |
atlas-researcher-profiles-cli | cli/ | Researcher profiles CLI: fetch OpenAlex works from CSV or REDCap and write to REDCap |
atlas-stats-cli | cli/ | CLI interactif pour visualiser les statistiques GitHub et npm du dépôt Atlas |
Bibliothèques publiées sans consommateur interne
Section intitulée « Bibliothèques publiées sans consommateur interne »Paquets publiables (non private) qu’aucun autre paquet du dépôt n’importe : leur public est en aval, hors du monorepo. C’est légitime — un paquet peut être livré pour d’autres sans qu’on s’en serve ici.
| Paquet | Catégorie | Rôle |
|---|---|---|
atlas-crf-fixtures | packages/ | CRF data-dictionary CSV parser and deterministic fake-record generator for tests and fixtures in the atlas monorepo. |
atlas-crf-project-template | packages/ | Declarative, typed CRF project template (instruments, fields, metadata) built with Effect Schema. |
Bancs d’essai
Section intitulée « Bancs d’essai »Démonstrateurs isolés : ils consomment le reste du dépôt pour l’illustrer mais ne sont jamais consommés en retour (cf. ADR 0021).
| Paquet | Catégorie | Rôle |
|---|---|---|
atlas-amarre-sandbox | sandbox/ | Local Docker sandbox for the amarre app: bundles a CRF (REDCap) instance, a self-hosted BaaS (Appwrite), and the wiring scripts needed to run amarre end-to-end without depending on production services. |
atlas-crf-sandbox | sandbox/ | CRF (REDCap) testing sandbox - Docker environment and contract tests for validating OpenAPI specs |
atlas-sillage-sandbox | sandbox/ | Local Docker sandbox for the sillage app: bundles a CRF (REDCap) instance, a self-hosted BaaS (Appwrite), and the wiring scripts needed to run sillage end-to-end without depending on production services. |
Graphes de dépendances par livrable
Section intitulée « Graphes de dépendances par livrable »Le graphe complet (toutes les dépendances internes d’un coup) est
illisible. On le découpe par livrable : chaque application ou outil en
ligne de commande — un paquet que personne d’autre ne consomme — a son
propre graphe, limité à ses dépendances transitives. Une flèche
A --> B signifie « A dépend de B » (tous champs de dépendances confondus).
Un livrable sans dépendance interne n’a pas de graphe.
flowchart TD _univ_lehavre_atlas_amarre["atlas-amarre"] _univ_lehavre_atlas_auth["atlas-auth"] _univ_lehavre_atlas_baas["atlas-baas"] _univ_lehavre_atlas_errors["atlas-errors"] _univ_lehavre_atlas_logos["atlas-logos"] _univ_lehavre_atlas_logos_cli["atlas-logos-cli"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_sveltekit_csp["atlas-sveltekit-csp"] _univ_lehavre_atlas_sveltekit_handler["atlas-sveltekit-handler"] _univ_lehavre_atlas_test_utils_sveltekit["atlas-test-utils-sveltekit"] _univ_lehavre_atlas_ui["atlas-ui"] _univ_lehavre_atlas_validators["atlas-validators"] _univ_lehavre_atlas_amarre --> _univ_lehavre_atlas_auth _univ_lehavre_atlas_amarre --> _univ_lehavre_atlas_baas _univ_lehavre_atlas_amarre --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_amarre --> _univ_lehavre_atlas_logos_cli _univ_lehavre_atlas_amarre --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_amarre --> _univ_lehavre_atlas_sveltekit_csp _univ_lehavre_atlas_amarre --> _univ_lehavre_atlas_sveltekit_handler _univ_lehavre_atlas_amarre --> _univ_lehavre_atlas_test_utils_sveltekit _univ_lehavre_atlas_amarre --> _univ_lehavre_atlas_ui _univ_lehavre_atlas_amarre --> _univ_lehavre_atlas_validators _univ_lehavre_atlas_auth --> _univ_lehavre_atlas_baas _univ_lehavre_atlas_auth --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_auth --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_auth --> _univ_lehavre_atlas_validators _univ_lehavre_atlas_baas --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_baas --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_errors --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_logos_cli --> _univ_lehavre_atlas_logos _univ_lehavre_atlas_sveltekit_csp --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_sveltekit_handler --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_sveltekit_handler --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_sveltekit_handler --> _univ_lehavre_atlas_test_utils_sveltekit _univ_lehavre_atlas_test_utils_sveltekit --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_ui --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_ui --> _univ_lehavre_atlas_validators _univ_lehavre_atlas_validators --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_validators --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_cache["atlas-cache"] _univ_lehavre_atlas_crf_dashboard["atlas-crf-dashboard"] _univ_lehavre_atlas_crf_logs["atlas-crf-logs"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_sveltekit_csp["atlas-sveltekit-csp"] _univ_lehavre_atlas_cache --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_crf_dashboard --> _univ_lehavre_atlas_crf_logs _univ_lehavre_atlas_crf_dashboard --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_crf_dashboard --> _univ_lehavre_atlas_sveltekit_csp _univ_lehavre_atlas_crf_logs --> _univ_lehavre_atlas_cache _univ_lehavre_atlas_crf_logs --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_sveltekit_csp --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_cache["atlas-cache"] _univ_lehavre_atlas_dashboard["atlas-dashboard"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_stats["atlas-stats"] _univ_lehavre_atlas_sveltekit_csp["atlas-sveltekit-csp"] _univ_lehavre_atlas_cache --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_dashboard --> _univ_lehavre_atlas_cache _univ_lehavre_atlas_dashboard --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_dashboard --> _univ_lehavre_atlas_stats _univ_lehavre_atlas_dashboard --> _univ_lehavre_atlas_sveltekit_csp _univ_lehavre_atlas_stats --> _univ_lehavre_atlas_cache _univ_lehavre_atlas_stats --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_sveltekit_csp --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_auth["atlas-auth"] _univ_lehavre_atlas_baas["atlas-baas"] _univ_lehavre_atlas_ecrin["atlas-ecrin"] _univ_lehavre_atlas_errors["atlas-errors"] _univ_lehavre_atlas_logos["atlas-logos"] _univ_lehavre_atlas_logos_cli["atlas-logos-cli"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_sveltekit_csp["atlas-sveltekit-csp"] _univ_lehavre_atlas_sveltekit_handler["atlas-sveltekit-handler"] _univ_lehavre_atlas_test_utils_sveltekit["atlas-test-utils-sveltekit"] _univ_lehavre_atlas_validators["atlas-validators"] _univ_lehavre_atlas_auth --> _univ_lehavre_atlas_baas _univ_lehavre_atlas_auth --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_auth --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_auth --> _univ_lehavre_atlas_validators _univ_lehavre_atlas_baas --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_baas --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_ecrin --> _univ_lehavre_atlas_auth _univ_lehavre_atlas_ecrin --> _univ_lehavre_atlas_baas _univ_lehavre_atlas_ecrin --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_ecrin --> _univ_lehavre_atlas_logos_cli _univ_lehavre_atlas_ecrin --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_ecrin --> _univ_lehavre_atlas_sveltekit_csp _univ_lehavre_atlas_ecrin --> _univ_lehavre_atlas_sveltekit_handler _univ_lehavre_atlas_ecrin --> _univ_lehavre_atlas_test_utils_sveltekit _univ_lehavre_atlas_ecrin --> _univ_lehavre_atlas_validators _univ_lehavre_atlas_errors --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_logos_cli --> _univ_lehavre_atlas_logos _univ_lehavre_atlas_sveltekit_csp --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_sveltekit_handler --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_sveltekit_handler --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_sveltekit_handler --> _univ_lehavre_atlas_test_utils_sveltekit _univ_lehavre_atlas_test_utils_sveltekit --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_validators --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_validators --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_auth["atlas-auth"] _univ_lehavre_atlas_baas["atlas-baas"] _univ_lehavre_atlas_citation_fetch["atlas-citation-fetch"] _univ_lehavre_atlas_citation_types["atlas-citation-types"] _univ_lehavre_atlas_effect_socle["atlas-effect-socle"] _univ_lehavre_atlas_errors["atlas-errors"] _univ_lehavre_atlas_fetch_one_api_page["atlas-fetch-one-api-page"] _univ_lehavre_atlas_find_an_expert["atlas-find-an-expert"] _univ_lehavre_atlas_logos["atlas-logos"] _univ_lehavre_atlas_logos_cli["atlas-logos-cli"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_sveltekit_csp["atlas-sveltekit-csp"] _univ_lehavre_atlas_sveltekit_handler["atlas-sveltekit-handler"] _univ_lehavre_atlas_test_utils_effect["atlas-test-utils-effect"] _univ_lehavre_atlas_test_utils_sveltekit["atlas-test-utils-sveltekit"] _univ_lehavre_atlas_validators["atlas-validators"] _univ_lehavre_atlas_auth --> _univ_lehavre_atlas_baas _univ_lehavre_atlas_auth --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_auth --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_auth --> _univ_lehavre_atlas_validators _univ_lehavre_atlas_baas --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_baas --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_citation_fetch --> _univ_lehavre_atlas_citation_types _univ_lehavre_atlas_citation_fetch --> _univ_lehavre_atlas_fetch_one_api_page _univ_lehavre_atlas_citation_fetch --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_citation_fetch --> _univ_lehavre_atlas_test_utils_effect _univ_lehavre_atlas_citation_types --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_effect_socle --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_errors --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_fetch_one_api_page --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_find_an_expert --> _univ_lehavre_atlas_auth _univ_lehavre_atlas_find_an_expert --> _univ_lehavre_atlas_baas _univ_lehavre_atlas_find_an_expert --> _univ_lehavre_atlas_citation_fetch _univ_lehavre_atlas_find_an_expert --> _univ_lehavre_atlas_effect_socle _univ_lehavre_atlas_find_an_expert --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_find_an_expert --> _univ_lehavre_atlas_logos_cli _univ_lehavre_atlas_find_an_expert --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_find_an_expert --> _univ_lehavre_atlas_sveltekit_csp _univ_lehavre_atlas_find_an_expert --> _univ_lehavre_atlas_sveltekit_handler _univ_lehavre_atlas_find_an_expert --> _univ_lehavre_atlas_test_utils_sveltekit _univ_lehavre_atlas_find_an_expert --> _univ_lehavre_atlas_validators _univ_lehavre_atlas_logos_cli --> _univ_lehavre_atlas_logos _univ_lehavre_atlas_sveltekit_csp --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_sveltekit_handler --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_sveltekit_handler --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_sveltekit_handler --> _univ_lehavre_atlas_test_utils_sveltekit _univ_lehavre_atlas_test_utils_effect --> _univ_lehavre_atlas_effect_socle _univ_lehavre_atlas_test_utils_effect --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_test_utils_sveltekit --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_validators --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_validators --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_auth["atlas-auth"] _univ_lehavre_atlas_baas["atlas-baas"] _univ_lehavre_atlas_errors["atlas-errors"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_sillage["atlas-sillage"] _univ_lehavre_atlas_sveltekit_csp["atlas-sveltekit-csp"] _univ_lehavre_atlas_ui["atlas-ui"] _univ_lehavre_atlas_validators["atlas-validators"] _univ_lehavre_atlas_auth --> _univ_lehavre_atlas_baas _univ_lehavre_atlas_auth --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_auth --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_auth --> _univ_lehavre_atlas_validators _univ_lehavre_atlas_baas --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_baas --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_errors --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_sillage --> _univ_lehavre_atlas_auth _univ_lehavre_atlas_sillage --> _univ_lehavre_atlas_baas _univ_lehavre_atlas_sillage --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_sillage --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_sillage --> _univ_lehavre_atlas_sveltekit_csp _univ_lehavre_atlas_sillage --> _univ_lehavre_atlas_ui _univ_lehavre_atlas_sillage --> _univ_lehavre_atlas_validators _univ_lehavre_atlas_sveltekit_csp --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_ui --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_ui --> _univ_lehavre_atlas_validators _univ_lehavre_atlas_validators --> _univ_lehavre_atlas_errors _univ_lehavre_atlas_validators --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_biblio_cli["atlas-biblio-cli"] _univ_lehavre_atlas_citation_fetch["atlas-citation-fetch"] _univ_lehavre_atlas_citation_types["atlas-citation-types"] _univ_lehavre_atlas_citation_validate["atlas-citation-validate"] _univ_lehavre_atlas_cli_toolkit["atlas-cli-toolkit"] _univ_lehavre_atlas_effect_socle["atlas-effect-socle"] _univ_lehavre_atlas_fetch_one_api_page["atlas-fetch-one-api-page"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_test_utils_effect["atlas-test-utils-effect"] _univ_lehavre_atlas_biblio_cli --> _univ_lehavre_atlas_citation_types _univ_lehavre_atlas_biblio_cli --> _univ_lehavre_atlas_citation_validate _univ_lehavre_atlas_biblio_cli --> _univ_lehavre_atlas_cli_toolkit _univ_lehavre_atlas_biblio_cli --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_citation_fetch --> _univ_lehavre_atlas_citation_types _univ_lehavre_atlas_citation_fetch --> _univ_lehavre_atlas_fetch_one_api_page _univ_lehavre_atlas_citation_fetch --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_citation_fetch --> _univ_lehavre_atlas_test_utils_effect _univ_lehavre_atlas_citation_types --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_citation_validate --> _univ_lehavre_atlas_citation_fetch _univ_lehavre_atlas_citation_validate --> _univ_lehavre_atlas_citation_types _univ_lehavre_atlas_citation_validate --> _univ_lehavre_atlas_fetch_one_api_page _univ_lehavre_atlas_citation_validate --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_cli_toolkit --> _univ_lehavre_atlas_effect_socle _univ_lehavre_atlas_cli_toolkit --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_effect_socle --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_fetch_one_api_page --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_test_utils_effect --> _univ_lehavre_atlas_effect_socle _univ_lehavre_atlas_test_utils_effect --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_citation["atlas-citation"] _univ_lehavre_atlas_citation_cli["atlas-citation-cli"] _univ_lehavre_atlas_citation_fetch["atlas-citation-fetch"] _univ_lehavre_atlas_citation_types["atlas-citation-types"] _univ_lehavre_atlas_cli_toolkit["atlas-cli-toolkit"] _univ_lehavre_atlas_effect_socle["atlas-effect-socle"] _univ_lehavre_atlas_fetch_one_api_page["atlas-fetch-one-api-page"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_test_utils_effect["atlas-test-utils-effect"] _univ_lehavre_atlas_citation --> _univ_lehavre_atlas_citation_types _univ_lehavre_atlas_citation --> _univ_lehavre_atlas_fetch_one_api_page _univ_lehavre_atlas_citation --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_citation_cli --> _univ_lehavre_atlas_citation _univ_lehavre_atlas_citation_cli --> _univ_lehavre_atlas_citation_fetch _univ_lehavre_atlas_citation_cli --> _univ_lehavre_atlas_cli_toolkit _univ_lehavre_atlas_citation_cli --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_citation_fetch --> _univ_lehavre_atlas_citation_types _univ_lehavre_atlas_citation_fetch --> _univ_lehavre_atlas_fetch_one_api_page _univ_lehavre_atlas_citation_fetch --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_citation_fetch --> _univ_lehavre_atlas_test_utils_effect _univ_lehavre_atlas_citation_types --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_cli_toolkit --> _univ_lehavre_atlas_effect_socle _univ_lehavre_atlas_cli_toolkit --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_effect_socle --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_fetch_one_api_page --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_test_utils_effect --> _univ_lehavre_atlas_effect_socle _univ_lehavre_atlas_test_utils_effect --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_cli_toolkit["atlas-cli-toolkit"] _univ_lehavre_atlas_crf["atlas-crf"] _univ_lehavre_atlas_crf_cli["atlas-crf-cli"] _univ_lehavre_atlas_crf_client["atlas-crf-client"] _univ_lehavre_atlas_crf_core["atlas-crf-core"] _univ_lehavre_atlas_effect_socle["atlas-effect-socle"] _univ_lehavre_atlas_net["atlas-net"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_cli_toolkit --> _univ_lehavre_atlas_effect_socle _univ_lehavre_atlas_cli_toolkit --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_crf --> _univ_lehavre_atlas_crf_client _univ_lehavre_atlas_crf --> _univ_lehavre_atlas_crf_core _univ_lehavre_atlas_crf --> _univ_lehavre_atlas_effect_socle _univ_lehavre_atlas_crf --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_crf_cli --> _univ_lehavre_atlas_cli_toolkit _univ_lehavre_atlas_crf_cli --> _univ_lehavre_atlas_crf _univ_lehavre_atlas_crf_cli --> _univ_lehavre_atlas_crf_client _univ_lehavre_atlas_crf_cli --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_crf_client --> _univ_lehavre_atlas_crf_core _univ_lehavre_atlas_crf_client --> _univ_lehavre_atlas_net _univ_lehavre_atlas_crf_client --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_crf_core --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_effect_socle --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_net --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_crf_core["atlas-crf-core"] _univ_lehavre_atlas_crf_openapi["atlas-crf-openapi"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_crf_core --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_crf_openapi --> _univ_lehavre_atlas_crf_core _univ_lehavre_atlas_crf_openapi --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_cache["atlas-cache"] _univ_lehavre_atlas_crf_logs["atlas-crf-logs"] _univ_lehavre_atlas_crf_stats_cli["atlas-crf-stats-cli"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_cache --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_crf_logs --> _univ_lehavre_atlas_cache _univ_lehavre_atlas_crf_logs --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_crf_stats_cli --> _univ_lehavre_atlas_crf_logs _univ_lehavre_atlas_crf_stats_cli --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_cli_toolkit["atlas-cli-toolkit"] _univ_lehavre_atlas_effect_socle["atlas-effect-socle"] _univ_lehavre_atlas_net["atlas-net"] _univ_lehavre_atlas_net_cli["atlas-net-cli"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_cli_toolkit --> _univ_lehavre_atlas_effect_socle _univ_lehavre_atlas_cli_toolkit --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_effect_socle --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_net --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_net_cli --> _univ_lehavre_atlas_cli_toolkit _univ_lehavre_atlas_net_cli --> _univ_lehavre_atlas_net _univ_lehavre_atlas_net_cli --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_citation_fetch["atlas-citation-fetch"] _univ_lehavre_atlas_citation_types["atlas-citation-types"] _univ_lehavre_atlas_cli_toolkit["atlas-cli-toolkit"] _univ_lehavre_atlas_crf_client["atlas-crf-client"] _univ_lehavre_atlas_crf_core["atlas-crf-core"] _univ_lehavre_atlas_effect_socle["atlas-effect-socle"] _univ_lehavre_atlas_fetch_one_api_page["atlas-fetch-one-api-page"] _univ_lehavre_atlas_net["atlas-net"] _univ_lehavre_atlas_researcher_profiles["atlas-researcher-profiles"] _univ_lehavre_atlas_researcher_profiles_cli["atlas-researcher-profiles-cli"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_test_utils_effect["atlas-test-utils-effect"] _univ_lehavre_atlas_citation_fetch --> _univ_lehavre_atlas_citation_types _univ_lehavre_atlas_citation_fetch --> _univ_lehavre_atlas_fetch_one_api_page _univ_lehavre_atlas_citation_fetch --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_citation_fetch --> _univ_lehavre_atlas_test_utils_effect _univ_lehavre_atlas_citation_types --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_cli_toolkit --> _univ_lehavre_atlas_effect_socle _univ_lehavre_atlas_cli_toolkit --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_crf_client --> _univ_lehavre_atlas_crf_core _univ_lehavre_atlas_crf_client --> _univ_lehavre_atlas_net _univ_lehavre_atlas_crf_client --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_crf_core --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_effect_socle --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_fetch_one_api_page --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_net --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_researcher_profiles --> _univ_lehavre_atlas_citation_fetch _univ_lehavre_atlas_researcher_profiles --> _univ_lehavre_atlas_citation_types _univ_lehavre_atlas_researcher_profiles --> _univ_lehavre_atlas_crf_client _univ_lehavre_atlas_researcher_profiles --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_researcher_profiles_cli --> _univ_lehavre_atlas_citation_fetch _univ_lehavre_atlas_researcher_profiles_cli --> _univ_lehavre_atlas_citation_types _univ_lehavre_atlas_researcher_profiles_cli --> _univ_lehavre_atlas_cli_toolkit _univ_lehavre_atlas_researcher_profiles_cli --> _univ_lehavre_atlas_researcher_profiles _univ_lehavre_atlas_researcher_profiles_cli --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_test_utils_effect --> _univ_lehavre_atlas_effect_socle _univ_lehavre_atlas_test_utils_effect --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_cache["atlas-cache"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_stats["atlas-stats"] _univ_lehavre_atlas_stats_cli["atlas-stats-cli"] _univ_lehavre_atlas_cache --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_stats --> _univ_lehavre_atlas_cache _univ_lehavre_atlas_stats --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_stats_cli --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_stats_cli --> _univ_lehavre_atlas_stats
flowchart TD _univ_lehavre_atlas_crf_core["atlas-crf-core"] _univ_lehavre_atlas_crf_fixtures["atlas-crf-fixtures"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_crf_core --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_crf_fixtures --> _univ_lehavre_atlas_crf_core _univ_lehavre_atlas_crf_fixtures --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_crf_core["atlas-crf-core"] _univ_lehavre_atlas_crf_project_template["atlas-crf-project-template"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_crf_core --> _univ_lehavre_atlas_shared_config _univ_lehavre_atlas_crf_project_template --> _univ_lehavre_atlas_crf_core _univ_lehavre_atlas_crf_project_template --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_amarre_sandbox["atlas-amarre-sandbox"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_amarre_sandbox --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_crf_sandbox["atlas-crf-sandbox"] _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_crf_sandbox --> _univ_lehavre_atlas_shared_config
flowchart TD _univ_lehavre_atlas_shared_config["atlas-shared-config"] _univ_lehavre_atlas_sillage_sandbox["atlas-sillage-sandbox"] _univ_lehavre_atlas_sillage_sandbox --> _univ_lehavre_atlas_shared_config