Plateforme SaaS multi-tenant, open source (AGPLv3) et auto-hébergeable pour gérer un organisme de formation de bout en bout : acquisition, vente, réalisation, émargement à valeur probante, conformité Qualiopi, pilotage et facturation. Pensée souveraine (hébergement FR/UE, aucune dépendance SaaS US) et conforme eIDAS, RGAA 4.1 / WCAG 2.1 AA, RGPD.
⚖️ Cadre légal : ce dépôt encode des bonnes pratiques de conformité, pas une garantie juridique. Le niveau de signature (AES + horodatage qualifié), la facturation électronique et la conformité finale doivent être validés avec votre organisme certificateur, votre PSCo d'horodatage et un·e juriste avant exploitation.
Là où la plupart des outils s'arrêtent à une signature « simple », QualiForma produit une preuve opposable :
- Signature avancée (AES) au sens eIDAS : émargement authentifié multi-modal (code, QR dynamique anti-fraude, signature manuscrite, lien personnel à usage unique), co-signature formateur obligatoire.
- Scellement consolidé d'une demi-journée + horodatage QUALIFIÉ eIDAS (RFC 3161,
PSCo français de la liste de confiance ANSSI/UE — Datasure/Universign), TSA pluggable
(
qualified | internal | mock, refus de démarrer en prod hors mode qualifié). - Pack de preuve vérifiable hors-ligne (chaîne d'audit SHA-256, jeton d'horodatage) via
l'outil
@humanix/proof-verifier. - Immuabilité garantie au niveau SGBD (triggers) + stockage WORM (object-lock).
Voir docs/conformite/valeur-probante.md et docs/conformite/niveau-signature-juridique.md.
Catalogue & sessions — formations (CRUD + programme/RI/convocation/convention PDF), sessions, créneaux demi-journée (validation horaires), inscriptions, désinscription, gestion des comptes apprenant/formateur.
Émargement & preuve — multi-modal, hors-ligne (PWA + file IndexedDB, sync idempotente), géolocalisation consentie, scellement + pack de preuve, feuille d'émargement consolidée.
Conformité Qualiopi — tableau de bord des 32 indicateurs RNQ (auto-évaluation + statut
- preuves), alertes de complétude avant clôture de session, mapping indicateurs.
Gestion commerciale — devis → conversion en facture → encaissements, BPF (Bilan Pédagogique et Financier) ventilé par financeur, export comptable CSV, conventions.
Facturation électronique — Factur-X (profil MINIMUM, XML embarqué dans le PDF) + endpoint XML, prêt pour dépôt PDP/Chorus Pro (socle ; cf. roadmap).
Acquisition — catalogue public sans authentification (/catalogue/:slug) +
préinscription en ligne, conversion en compte + inscription.
Pilotage — tableau de bord KPI temps réel (sessions, heures, CA, satisfaction, réclamations, sessions à clôturer). Planning / agenda avec détection de conflits formateur/salle.
E-learning (LMS) — modules de cours (leçons texte / vidéo intégrée / PDF), suivi de progression apprenant.
Qualité & RGPD — questionnaires (positionnement, satisfaction, acquis) + restitution/CSV, réclamations + actions correctives, RGPD self-service (export, anonymisation), MFA TOTP.
Intégrations — API publique v1 (lecture, clés d'API hmx_<slug>_<secret> résolues
sous RLS), webhooks signés HMAC-SHA256 (scellement.created).
Exploitation — observabilité Prometheus (/metrics), quotas par tenant, jobs planifiés
(relances, purge RGPD), notifications e-mail/SMS via opérateurs FR (Brevo / Octopush),
back-office super-admin (tenants, plans, quotas).
| Couche | Choix | ADR |
|---|---|---|
| Monorepo | pnpm workspaces + Turborepo, TypeScript strict | 0001 |
| Backend | NestJS 10 + PostgreSQL 16 + Prisma 5 | 0001 |
| Multi-tenant | PostgreSQL Row-Level Security (tenant_id, rôle non-bypass) |
0002 |
| Signature/émargement | AES + horodatage qualifié RFC 3161, port QTSP/SEA | 0003 |
| Accessibilité | RGAA 4.1 / WCAG 2.1 AA, gate CI (axe, Lighthouse, pa11y) | 0004 |
| Offline émargement | PWA + file d'attente, horodatage serveur faisant foi | 0005 |
| Uploads | MinIO/Garage (S3) + ClamAV + WORM/object-lock | 0006 |
| Licence & SaaS | AGPLv3, cœur séparé des modules d'exploitation | 0007 |
| Souveraineté | services de confiance FR/UE uniquement, pas de SaaS US | 0008 |
Front : React 18 + Vite + PWA (Workbox) + Capacitor (iOS/Android), React-Aria + Tailwind, react-i18next (FR/EN), police Inter auto-hébergée (souveraine).
apps/
api/ NestJS — API, RBAC, RLS, jobs, ~33 modules métier
web/ React + Vite PWA + Capacitor (apprenant / formateur / admin OF / super-admin)
admin/ Back-office super-admin (scaffold)
packages/
domain/ Types & entités partagés (source de vérité métier)
ui/ Design system accessible (React Aria + Tailwind)
i18n/ Catalogues react-i18next FR/EN
pdf-templates/ Gabarits PDF versionnés (émargement, certificat, convention, facture, Factur-X…)
signature-engine/ Cœur probant : faisceau de preuves, audit chaîné, RFC 3161, vérification
proof-verifier/ CLI de vérification de pack de preuve hors-ligne
config/ ESLint / TS / tooling partagés
docs/
adr/ Architecture Decision Records (0001–0008)
conformite/ Qualiopi, valeur probante, niveau de signature eIDAS, RGPD (registre + DPA), sécurité
legal/ Modèles mentions légales & CGU
deploiement/ Self-host, production (PgBouncer/migrations), multiplateforme, facturation électronique
infra/docker/ Dockerfiles & compose
Stack complète (API + front + PostgreSQL + MinIO + ClamAV), avec migrations / RLS / seed automatiques :
docker compose up --build
# → Front : http://localhost:8080 · API : http://localhost:3000Comptes de démo (mot de passe Demo!Passw0rd) :
| Rôle | Tenant (en-tête x-tenant-slug) |
|
|---|---|---|
| Admin OF | admin@demo.test |
demo |
| Formateur | formateur@demo.test |
demo |
| Apprenant | sofia.nguyen@demo.test … |
demo |
| Super-admin SaaS | superadmin@humanix.test |
humanix |
Catalogue public de démo : http://localhost:8080/catalogue/demo.
pnpm install
docker compose -f infra/docker/docker-compose.dev.yml up -d # PostgreSQL, MinIO, ClamAV
pnpm --filter @humanix/api db:setup # migrations + RLS + seed
pnpm --filter @humanix/api dev # API (http://localhost:3000)
pnpm --filter @humanix/web dev # front (http://localhost:5173)Qualité : pnpm typecheck · pnpm lint · pnpm test · pnpm lint:spdx. CI : lint/typecheck/
tests, isolation RLS inter-tenant (gate bloquant), accessibilité (gate bloquant), sécurité
(audit deps, gitleaks, SBOM CycloneDX, Semgrep, Trivy, CodeQL).
- Hébergement FR (Scaleway ; cible SecNumCloud documentée), stockage WORM (MinIO/Garage).
- Horodatage qualifié par PSCo français (liste de confiance UE) — jamais de service US.
- E-mail/SMS via opérateurs FR (Brevo / OVH / Octopush). Pas de Twilio/SendGrid.
- Toutes les dépendances sont OSI, compatibles AGPLv3 (tables de licences dans les docs de déploiement). Aucun composant propriétaire, SSPL/BSL ou SaaS US obligatoire.
- Niveau juridique visé : signature AVANCÉE (AES) + horodatage QUALIFIÉ (pas la QES) — cité explicitement dans le pack de preuve.
Tronc fonctionnel au niveau des leaders du marché (Digiforma, Dendreo, Kaliio, Teachizy…), plus le différenciateur souverain. Livré : pilotage, gestion commerciale + BPF, devis→facture, catalogue public, Qualiopi 32 indicateurs, planning, LMS (1ʳᵉ tranche), API + webhooks, socle Factur-X.
Points d'extension documentés (dépendent d'accès/habilitations externes) : dépôt PDP/Chorus Pro (Factur-X), connecteurs financeurs EDOF/Kairos/OPCO, paiement en ligne PSP UE. Voir docs/deploiement/facturation-electronique-financeurs.md.
Distribué sous GNU AGPL-3.0-or-later (voir LICENSE et NOTICE).
L'AGPL impose la mise à disposition du code source modifié aux utilisateur·ice·s du service
réseau : tout déploiement SaaS de ce logiciel (y compris modifié) doit offrir l'accès au code
source correspondant.