Aller au contenu

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.json par scripts/docs/generate-packages-map.mjs. Ne l’éditez pas à la main : lancez pnpm docs:generate aprè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.

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.

PaquetRôleDépend deConsommé par
atlas-amarreApplication de gestion des conventions.atlas-auth, atlas-baas, atlas-errors, atlas-logos-cli, atlas-shared-config, atlas-sveltekit-csp, atlas-sveltekit-handler, atlas-test-utils-sveltekit, atlas-ui, atlas-validators
atlas-crf-dashboardTableau de bord interne — vue d’ensemble des dictionnaires REDCap et de leur conformité.atlas-crf-logs, atlas-shared-config, atlas-sveltekit-csp
atlas-dashboardInternal dashboard tracking npm and GitHub stats (releases, downloads) of the published Atlas packagesatlas-cache, atlas-shared-config, atlas-stats, atlas-sveltekit-csp
atlas-ecrinApplication de gestion des projets et de leurs dossiers d’avis éthiques.atlas-auth, atlas-baas, atlas-errors, atlas-logos-cli, atlas-shared-config, atlas-sveltekit-csp, atlas-sveltekit-handler, atlas-test-utils-sveltekit, atlas-validators
atlas-find-an-expertOutil de recherche d’expertise, basé sur l’agrégation des publications via OpenAlex.atlas-auth, atlas-baas, atlas-citation-fetch, atlas-effect-socle, atlas-errors, atlas-logos-cli, atlas-shared-config, atlas-sveltekit-csp, atlas-sveltekit-handler, atlas-test-utils-sveltekit, atlas-validators
atlas-sillagePlateforme communautaire de mise en relation autour de projets ECRIN.atlas-auth, atlas-baas, atlas-errors, atlas-shared-config, atlas-sveltekit-csp, atlas-ui, atlas-validators

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.

PaquetRôleDépend deConsommé par
atlas-crfCRF Service - HTTP microservice for complex reporting formsatlas-crf-client, atlas-crf-core, atlas-effect-socle, atlas-shared-configatlas-crf-cli

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.

PaquetRôleDépend deConsommé par
atlas-authShared authentication service for Atlas SvelteKit applicationsatlas-baas, atlas-errors, atlas-shared-config, atlas-validatorsatlas-amarre, atlas-ecrin, atlas-find-an-expert, atlas-sillage
atlas-baasShared Backend-as-a-Service (Appwrite) client utilities for Atlas applicationsatlas-errors, atlas-shared-configatlas-amarre, atlas-auth, atlas-ecrin, atlas-find-an-expert, atlas-sillage
atlas-cacheCache de flux partagé : interface unique, back-ends fichier et Postgres (ADR 0085)atlas-shared-configatlas-crf-logs, atlas-dashboard, atlas-stats
atlas-citationOpenAlex citation graph data mining library with DuckDB, ML embeddings, and string groupingatlas-citation-types, atlas-fetch-one-api-page, atlas-shared-configatlas-citation-cli
atlas-citation-fetchPaginated fetch client for the OpenAlex citation graph API with rate limiting and queue-based stateatlas-citation-types, atlas-fetch-one-api-page, atlas-shared-config, atlas-test-utils-effectatlas-citation-cli, atlas-citation-validate, atlas-find-an-expert, atlas-researcher-profiles, atlas-researcher-profiles-cli
atlas-citation-typesTypeScript types and branded types for the OpenAlex citation graph APIatlas-shared-configatlas-biblio-cli, atlas-citation, atlas-citation-fetch, atlas-citation-validate, atlas-researcher-profiles, atlas-researcher-profiles-cli
atlas-citation-validateCLI tools for OpenAlex bibliographic data validation and reliabilityatlas-citation-fetch, atlas-citation-types, atlas-fetch-one-api-page, atlas-shared-configatlas-biblio-cli
atlas-cli-toolkitFramework-agnostic CLI boilerplate for the atlas monorepo: env reading, argv flag parsing and fatal-error/exit-code handling.atlas-effect-socle, atlas-shared-configatlas-biblio-cli, atlas-citation-cli, atlas-crf-cli, atlas-net-cli, atlas-researcher-profiles-cli
atlas-crf-clientComplex reporting form (CRF) API client for Atlas - Effect-based typed clientatlas-crf-core, atlas-net, atlas-shared-configatlas-crf, atlas-crf-cli, atlas-researcher-profiles
atlas-crf-corePure functional core for Complex reporting form (CRF) domain logic with Effectatlas-shared-configatlas-crf, atlas-crf-client, atlas-crf-fixtures, atlas-crf-openapi, atlas-crf-project-template
atlas-crf-fixturesCRF data-dictionary CSV parser and deterministic fake-record generator for tests and fixtures in the atlas monorepo.atlas-crf-core, atlas-shared-config
atlas-crf-logsComplex reporting form (CRF) audit log fetching, enrichment and rolling-window analyticsatlas-cache, atlas-shared-configatlas-crf-dashboard, atlas-crf-stats-cli
atlas-crf-project-templateDeclarative, typed CRF project template (instruments, fields, metadata) built with Effect Schema.atlas-crf-core, atlas-shared-config
atlas-effect-socleSocle d’exécution Effect partagé : runtime central (ManagedRuntime + AppLayer), logger configurable, pour les services et CLIs du monorepo atlas.atlas-shared-configatlas-cli-toolkit, atlas-crf, atlas-find-an-expert, atlas-test-utils-effect
atlas-errorsShared error classes for Atlas applicationsatlas-shared-configatlas-amarre, atlas-auth, atlas-baas, atlas-ecrin, atlas-find-an-expert, atlas-sillage, atlas-sveltekit-handler, atlas-validators
atlas-fetch-one-api-pageA monadic API fetch library for paginated requestsatlas-shared-configatlas-citation, atlas-citation-fetch, atlas-citation-validate
atlas-netNetwork diagnostic utilities for Atlasatlas-shared-configatlas-crf-client, atlas-net-cli
atlas-researcher-profilesResearcher profiles service layer: REDCap/CSV ingestion, OpenAlex matching, PDF/reference extractionatlas-citation-fetch, atlas-citation-types, atlas-crf-client, atlas-shared-configatlas-researcher-profiles-cli
atlas-statsGitHub releases and npm package stats fetching, caching and computation for the Atlas monorepoatlas-cache, atlas-shared-configatlas-dashboard, atlas-stats-cli
atlas-sveltekit-cspShared Content-Security-Policy directives and security headers helpers for SvelteKit apps in the atlas monorepo.atlas-shared-configatlas-amarre, atlas-crf-dashboard, atlas-dashboard, atlas-ecrin, atlas-find-an-expert, atlas-sillage
atlas-sveltekit-handlerShared SvelteKit +server.ts handler wrapper (try/catch + uniform error mapping) for the atlas monorepo.atlas-errors, atlas-shared-config, atlas-test-utils-sveltekitatlas-amarre, atlas-ecrin, atlas-find-an-expert
atlas-test-utils-effectShared Effect test helpers (test layer providers, in-memory doubles) for the atlas monorepo. Consumed only by other packages’ tests; never built or published.atlas-effect-socle, atlas-shared-configatlas-citation-fetch
atlas-test-utils-sveltekitShared SvelteKit endpoint test helpers (route-event builder, anti-XSS assertion) for the atlas monorepo.atlas-shared-configatlas-amarre, atlas-ecrin, atlas-find-an-expert, atlas-sveltekit-handler
atlas-validatorsShared validation utilities for Atlas applicationsatlas-errors, atlas-shared-configatlas-amarre, atlas-auth, atlas-ecrin, atlas-find-an-expert, atlas-sillage, atlas-ui

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).

PaquetRôleDépend deConsommé par
atlas-biblio-cliCLI entry point for OpenAlex bibliographic data validationatlas-citation-types, atlas-citation-validate, atlas-cli-toolkit, atlas-shared-config
atlas-citation-cliCLI for OpenAlex citation graph researcher data curationatlas-citation, atlas-citation-fetch, atlas-cli-toolkit, atlas-shared-config
atlas-crf-cliCRF CLI - REDCap connectivity test and CRF server managementatlas-cli-toolkit, atlas-crf, atlas-crf-client, atlas-shared-config
atlas-crf-openapiComplex reporting form (CRF) source analysis, OpenAPI spec extraction, and API documentation toolsatlas-crf-core, atlas-shared-config
atlas-crf-stats-cliCLI to test CRF (REDCap) project tokens and inspect API responsesatlas-crf-logs, atlas-shared-config
atlas-logos-cliCLI to copy Atlas logo assets into a target directory (typically a SvelteKit app’s static/ folder)atlas-logosatlas-amarre, atlas-ecrin, atlas-find-an-expert
atlas-net-cliNetwork diagnostic CLI for Atlasatlas-cli-toolkit, atlas-net, atlas-shared-config
atlas-researcher-profiles-cliResearcher profiles CLI: fetch OpenAlex works from CSV or REDCap and write to REDCapatlas-citation-fetch, atlas-citation-types, atlas-cli-toolkit, atlas-researcher-profiles, atlas-shared-config
atlas-stats-cliCLI interactif pour visualiser les statistiques GitHub et npm du dépôt Atlasatlas-shared-config, atlas-stats

Les composants d’interface partagés entre applications, pour garantir une cohérence visuelle sans dépendre d’un designer dédié.

PaquetRôleDépend deConsommé par
atlas-uiShared Svelte UI components for the atlas monorepo, previewed via Storybook.atlas-shared-config, atlas-validatorsatlas-amarre, atlas-sillage

Les configurations transverses partagées (TypeScript, ESLint, Prettier, Vitest…) factorisées une fois et réutilisées par tous les paquets.

PaquetRôleDépend deConsommé par
atlas-shared-configShared TypeScript, ESLint, and Prettier configuration for Atlas projectsatlas-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

Les ressources statiques (logos, images) consommées par les applications.

PaquetRôleDépend deConsommé par
atlas-logosLogos and brand assets for Atlas projectsatlas-logos-cli

Les bancs d’essai et prototypes isolés : terrain d’expérimentation qui n’est jamais consommé par un paquet publiable (ADR 0021).

PaquetRôleDépend deConsommé par
atlas-amarre-sandboxLocal 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-sandboxCRF (REDCap) testing sandbox - Docker environment and contract tests for validating OpenAPI specsatlas-shared-config
atlas-sillage-sandboxLocal 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

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).

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.

PaquetCatégorieRôle
atlas-amarreapps/Application de gestion des conventions.
atlas-crf-dashboardapps/Tableau de bord interne — vue d’ensemble des dictionnaires REDCap et de leur conformité.
atlas-dashboardapps/Internal dashboard tracking npm and GitHub stats (releases, downloads) of the published Atlas packages
atlas-ecrinapps/Application de gestion des projets et de leurs dossiers d’avis éthiques.
atlas-find-an-expertapps/Outil de recherche d’expertise, basé sur l’agrégation des publications via OpenAlex.
atlas-sillageapps/Plateforme communautaire de mise en relation autour de projets ECRIN.

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).

PaquetCatégorieRôle
atlas-biblio-clicli/CLI entry point for OpenAlex bibliographic data validation
atlas-citation-clicli/CLI for OpenAlex citation graph researcher data curation
atlas-crf-clicli/CRF CLI - REDCap connectivity test and CRF server management
atlas-crf-openapicli/Complex reporting form (CRF) source analysis, OpenAPI spec extraction, and API documentation tools
atlas-crf-stats-clicli/CLI to test CRF (REDCap) project tokens and inspect API responses
atlas-net-clicli/Network diagnostic CLI for Atlas
atlas-researcher-profiles-clicli/Researcher profiles CLI: fetch OpenAlex works from CSV or REDCap and write to REDCap
atlas-stats-clicli/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.

PaquetCatégorieRôle
atlas-crf-fixturespackages/CRF data-dictionary CSV parser and deterministic fake-record generator for tests and fixtures in the atlas monorepo.
atlas-crf-project-templatepackages/Declarative, typed CRF project template (instruments, fields, metadata) built with Effect Schema.

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).

PaquetCatégorieRôle
atlas-amarre-sandboxsandbox/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-sandboxsandbox/CRF (REDCap) testing sandbox - Docker environment and contract tests for validating OpenAPI specs
atlas-sillage-sandboxsandbox/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.

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