Apparence
Bibliothèques et services utilisés
Inventaire des dépendances directes du projet : celles que nous avons choisies et que nous maintenons. Les dépendances transitives (celles que pip et npm installent en cascade) ne sont pas listées — elles se lisent dans backend/requirements.txt résolu et dans les fichiers de verrouillage npm.
Les versions sont celles réellement installées, pas les intervalles déclarés dans requirements.txt. C'est un relevé, pris à la dernière exécution de make docs : une version de correctif publiée en amont le rend légèrement obsolète sans que personne n'ait touché au dépôt. Ce qui est garanti à jour, en revanche, c'est la liste des paquets et leur rôle — la CI échoue sur une dépendance ajoutée ou retirée sans mise à jour.
Backend — exécution (Python 3.13.15)
Installées dans l’image et nécessaires pour servir l’API.
| Paquet | Version | Licence | Rôle dans le projet |
|---|---|---|---|
| Django | 6.0.8 | BSD-3-Clause | Framework web et ORM : routage, modèles, migrations, back-office d'administration |
| djangorestframework | 3.16.1 | BSD License | Couche API REST au-dessus de Django : sérialisation, vues, permissions |
| djangorestframework_simplejwt | 5.5.1 | MIT License | Authentification par jeton JWT, utilisée par le SPA pour se connecter |
| django-otp | 1.7.0 | Unlicense | Second facteur TOTP du back-office et codes de secours à usage unique |
| drf-spectacular | 0.28.0 | BSD License | Schéma OpenAPI de l'API et interface Swagger (/api/docs/) |
| django-storages | 1.14.6 | BSD License | Envoi des fichiers joints vers un stockage objet S3 (MinIO ici) |
| boto3 | 1.43.74 | Apache-2.0 | Client S3 dont django-storages se sert pour parler à MinIO |
| django-redis | 5.4.0 | BSD License | Cache, sessions et compteurs de limitation de débit, stockés dans Redis |
django-cors-headers | 4.9.0 | MIT | Autorise le SPA, servi sur un autre domaine, à appeler l'API (CORS) |
| django-environ | 0.14.0 | MIT | Lecture de la configuration depuis les variables d'environnement |
mysqlclient | 2.2.8 | GPL-2.0-or-later | Pilote MySQL utilisé par l'ORM |
whitenoise | 6.12.0 | MIT | Service des fichiers statiques (back-office, Swagger) directement par Gunicorn |
| gunicorn | 26.1.0 | MIT | Serveur d'application qui exécute Django en production |
| celery | 5.6.3 | BSD-3-Clause | Tâches de fond et tâches planifiées (jours fériés, imports CEGI et purge du journal d’audit) |
| requests | 2.34.2 | Apache Software License | Appels HTTP sortants, aujourd'hui vers l'API des jours fériés de l'État |
| paramiko | 5.0.0 | LGPL-2.1 | Client SSH/SFTP du connecteur qui collecte les exports CEGI |
Backend — développement et tests
Présentes dans l’image de développement, jamais requises pour servir l’API.
| Paquet | Version | Licence | Rôle dans le projet |
|---|---|---|---|
| pytest | 8.4.2 | MIT License | Lanceur des tests du backend |
pytest-django | 4.14.0 | BSD License | Branche pytest sur Django : base de test, réglages, fixtures |
| ruff | 0.16.3 | MIT | Linter et formateur Python — la référence de make lint et make format |
| mypy | 2.3.1 | MIT | Vérification statique des types Python |
| django-stubs | 6.1.0 | MIT | Types de Django, pour que mypy comprenne l'ORM et le back-office |
| djangorestframework-stubs | 3.18.0 | MIT | Types de Django REST Framework, pour mypy |
| types-requests | 2.33.0.20260712 | Apache-2.0 | Types de requests, qui n'en fournit pas lui-même |
| types-paramiko | 5.0.0.20260617 | Apache-2.0 | Types statiques de Paramiko utilisés par mypy |
Frontend — exécution
Embarquées dans le bundle servi au navigateur.
| Paquet | Version | Licence | Rôle dans le projet |
|---|---|---|---|
@base-ui/react | 1.6.0 | MIT | Primitives d'interface accessibles sur lesquelles reposent nos composants |
@fontsource-variable/plus-jakarta-sans | 5.3.0 | OFL-1.1 | Police Plus Jakarta Sans, servie avec l'application plutôt que depuis un CDN |
@tanstack/react-query | 5.101.3 | MIT | Cache, rechargement et invalidation des données venant de l'API |
@tanstack/react-table | 8.21.3 | MIT | Moteur des tableaux : tri, filtres, colonnes, pagination |
axios | 1.18.1 | MIT | Client HTTP vers l'API, cantonné à src/api/ par une règle de lint |
class-variance-authority | 0.7.1 | Apache-2.0 | Déclaration des variantes de style d'un composant (taille, ton) |
clsx | 2.1.1 | MIT | Composition conditionnelle de classes CSS |
lucide-react | 1.25.0 | ISC | Jeu d'icônes de l'interface |
react | 19.2.7 | MIT | Bibliothèque d'interface du SPA |
react-dom | 19.2.7 | MIT | Rendu de React dans le navigateur |
react-router | 8.3.0 | MIT | Routage du SPA : URL, navigation, gardes d'accès |
shadcn | 4.13.1 | MIT | CLI qui installe les primitives d'interface dans src/components/ui/ |
tailwind-merge | 3.6.0 | MIT | Résolution des classes Tailwind contradictoires lors d'une surcharge |
tw-animate-css | 1.4.0 | MIT | Animations prêtes à l'emploi pour Tailwind |
zustand | 5.0.14 | MIT | État client partagé : session, rôle actif, espace de travail |
Frontend — outillage
Build, qualité et tests : rien de tout cela n’atteint le navigateur.
| Paquet | Version | Licence | Rôle dans le projet |
|---|---|---|---|
@playwright/test | 1.61.1 | Apache-2.0 | Tests de bout en bout dans un vrai navigateur, desktop et mobile |
@tailwindcss/vite | 4.3.3 | MIT | Intégration de Tailwind CSS v4 au build Vite |
@types/node | 22.20.1 | MIT | Types Node, pour les fichiers de configuration du build |
@types/react | 19.2.17 | MIT | Types de React |
@types/react-dom | 19.2.3 | MIT | Types de React DOM |
@vitejs/plugin-react | 4.7.0 | MIT | Support de React dans Vite : JSX et rafraîchissement à chaud |
oxfmt | 0.61.0 | MIT | Formateur JavaScript/TypeScript (remplace Prettier) |
oxlint | 1.76.0 | MIT | Linter JavaScript/TypeScript (remplace ESLint) |
tailwindcss | 4.3.3 | MIT | Framework CSS utilitaire, socle du design system |
typescript | 5.9.3 | Apache-2.0 | Compilateur et vérificateur de types du frontend |
vite | 7.3.6 | MIT | Serveur de développement et bundler de production |
vite-plugin-pwa | 1.3.0 | MIT | Transforme l'application en PWA installable : service worker et manifeste |
Outillage du dépôt
Construction du portail de documentation. Rien de tout cela n’est déployé dans une image applicative.
| Paquet | Version | Licence | Rôle dans le projet |
|---|---|---|---|
mermaid | 11.16.1 | MIT | Moteur de rendu des diagrammes, requis par le greffon VitePress |
vitepress | 1.6.4 | MIT | Construit le portail de documentation à partir des fichiers de docs/ |
vitepress-plugin-mermaid | 2.0.17 | MIT | Rend les diagrammes mermaid du portail, que GitHub rend déjà nativement |
Services et images
Logiciels tiers exécutés à côté du code, orchestrés par Docker Compose.
| Service | Image | Rôle dans le projet |
|---|---|---|
proxy | construite depuis ./infra/nginx | nginx : unique point d'entrée HTTP, route vers le front ou l'API selon le nom de domaine |
certbot | construite depuis ./infra/certbot | Obtention et renouvellement du certificat TLS (inactif hors profil tls) |
frontend | construite depuis ./frontend | Le SPA : serveur Vite en développement, build statique derrière nginx en production |
docs | construite depuis Dockerfile.docs | Portail de documentation : le contenu de docs/, construit par VitePress et servi en statique |
backend | construite depuis ./backend | L'API Django et le back-office, servis par Gunicorn |
worker | construite depuis ./backend | Exécutant Celery : traite les tâches de fond |
sftpgo | drakkan/sftpgo:v2.7.5-slim@sha256:021e23c5336ebf0a12b663dcb773081f7537e0ef330cbd1534f446ce26c77faa | Serveur SFTP isolé qui reçoit les exports CEGI et expose son administration sur localhost |
beat | construite depuis ./backend | Ordonnanceur Celery : déclenche les tâches planifiées |
db | mysql:8.4 | MySQL : toutes les données applicatives |
redis | redis:7.4-alpine | Cache et sessions (base 0), file des tâches Celery (base 1) |
minio | minio/minio:latest | Stockage objet compatible S3 pour les fichiers joints |
minio-init | minio/mc:latest | Conteneur éphémère qui crée le bucket au premier démarrage |
haproxy | construite depuis ./infra/haproxy | Accès MySQL filtré par IP, pour les outils d'administration de base de données |