Socle de développement partagé : packages @eqs/*, doctrine, cadre de tests, cahiers des charges
  • TypeScript 89.5%
  • JavaScript 9.9%
  • Shell 0.6%
Find a file
Nicolas Fryder 894b109bab
All checks were successful
ci / porte (push) Successful in 5m45s
ci / secrets (push) Successful in 7s
ci / vulns (push) Successful in 25s
ci / sast (push) Successful in 41s
ci / workflows (push) Successful in 7s
ci / securite (push) Successful in 0s
Merge pull request 'Journal Nest structuré, conformité, lint sans cache (#171, #159, #154, #155, #167)' (#172) from nicolas-fryder/dev into main
Reviewed-on: #172
2026-10-17 13:37:44 +00:00
.changeset fix(testing): la porte lance ESLint sans --cache ; testing.lint-en-cache le garde 2026-10-17 09:47:43 +02:00
.claude/commands Le guide d'initialisation disait de s'arrêter à l'étape 1 2026-09-09 11:44:54 +02:00
.forgejo/workflows fix: plus de shell là où il n'en fallait pas ; une CI pour le socle (chasse 53) 2026-10-16 02:49:46 +02:00
.githooks fix(testing): la porte lance ESLint sans --cache ; testing.lint-en-cache le garde 2026-10-17 09:47:43 +02:00
depots-lies feat(auth,cli): le schéma Prisma de l'authentification se compose ; twoFactor sans éditer le généré (D-077) 2026-10-15 07:00:51 +00:00
docs fix(testing): la porte lance ESLint sans --cache ; testing.lint-en-cache le garde 2026-10-17 09:47:43 +02:00
packages fix(testing): la porte lance ESLint sans --cache ; testing.lint-en-cache le garde 2026-10-17 09:47:43 +02:00
reference fix(testing): la porte lance ESLint sans --cache ; testing.lint-en-cache le garde 2026-10-17 09:47:43 +02:00
scripts fix: plus de shell là où il n'en fallait pas ; une CI pour le socle (chasse 53) 2026-10-16 02:49:46 +02:00
.editorconfig Structure du socle EQS Platform : doctrine, décisions, cahiers des charges 2026-09-06 19:20:55 +02:00
.gitattributes Fins de ligne LF forcées, hooks sh inclus 2026-09-06 19:21:15 +02:00
.gitignore Publier éprouve les tarballs, pas l'arbre de travail 2026-09-10 10:56:32 +02:00
.npmrc La porte descend à deux paquets en parallèle, et va plus vite 2026-09-11 15:56:36 +02:00
.prettierignore Le socle éprouvé sur un vrai satellite : onze corrections 2026-09-07 12:33:09 +02:00
.prettierrc.json Structure du socle EQS Platform : doctrine, décisions, cahiers des charges 2026-09-06 19:20:55 +02:00
AGENTS.md chore: pnpm check:node-minimal, les tests sous la version minimale d'engines 2026-10-14 14:55:44 +02:00
CLAUDE.md Structure du socle EQS Platform : doctrine, décisions, cahiers des charges 2026-09-06 19:20:55 +02:00
eslint.config.mjs feat(tooling): ESLint refuse enterWith (chasse 38) 2026-10-14 14:51:56 +02:00
ETAT.md fix(testing): la porte lance ESLint sans --cache ; testing.lint-en-cache le garde 2026-10-17 09:47:43 +02:00
knip.ts Les contrôles de télémétrie sur le binaire réel, et un diagnostic qui ne ment plus 2026-10-07 14:28:36 +02:00
package.json chore: pnpm check:node-minimal, les tests sous la version minimale d'engines 2026-10-14 14:55:44 +02:00
pnpm-lock.yaml feat(auth,config,platform-nest): REDIS_URL partage sessions et compteurs entre répliques (D-076) 2026-10-15 06:57:41 +00:00
pnpm-workspace.yaml feat(auth): better-auth 1.7.7, gardé en dépendance (D-067) 2026-10-15 06:23:45 +00:00
README.md eqs-fleet reporté (D-030), Entra à la main (D-031), organisation Infrastructure 2026-09-06 19:44:28 +02:00
ROADMAP.md docs: Entra réel dans le bac à sable, CI rétablie par l'organisation publique 2026-10-14 16:24:33 +02:00
tsconfig.json knip tourne enfin — et sa base publiée était refusée par knip 2026-09-10 11:45:50 +02:00

EQS Platform

Le socle de développement partagé des applications d'Équilibre Structures : les packages @eqs/*, la doctrine, le cadre de tests, et les cahiers des charges des dépôts liés (template, workflows, flotte, image de base).

Ce dépôt ne contient encore aucun code. Il contient ce qu'il faut pour l'écrire sans rediscuter : un cahier des charges par package, conforme à ce qui a été audité et décidé. Voir ETAT.md pour ce qui est vrai aujourd'hui, ROADMAP.md pour l'ordre.

Pour qui, pour quoi

Les packages sont faits pour les dépôts neufs. Un satellite créé depuis le template les importe tous et n'écrit que son métier. Les applications existantes ne sont pas forcées : HQ est le modèle dont on extrait le code, ATLAS sera rétrofitté, Topologie est déjà proche du socle. Le jour où une application adopte un package, elle trouve ici ses défauts et son chemin.

Carte

eqs-platform/
├── README.md                 ← vous êtes ici
├── AGENTS.md                 règles de travail dans ce dépôt (30 lignes)
├── ETAT.md                   ce qui est vrai, mis à jour quand ça change
├── ROADMAP.md                ordre d'extraction et critères de « terminé »
├── reference/decisions.md    D-001… : chaque arbitrage, tranché ou ouvert
├── docs/
│   ├── doctrine.md           les invariants, les règles d'extraction, la langue
│   ├── profils.md            nest · next-fullstack · front : ce que chacun expose
│   ├── conformite.md         comment un package exporte sa suite ; eqs-audit.json
│   ├── cadre-tests-qualite.md  exemplaire canonique du cadre de tests
│   ├── glossaire.md
│   ├── plan/                 le plan d'architecture d'origine
│   └── audit/                l'audit de l'existant et la note d'extraction
├── packages/                 un dossier par package, chacun avec son cahier
│   ├── tooling/              tsconfig, eslint, prettier, knip, stryker, gitleaks.json
│   ├── config/               contrat d'environnement, cohérence, refus de démarrer
│   ├── errors/               enveloppe d'erreur, x-request-id, ApiError
│   ├── telemetry/            OTel, logs corrélés, eqs.operation_id
│   ├── auth/                 4 fournisseurs, permission = operationId, roles.yaml
│   ├── http/                 le mutator Orval, 60 lignes
│   ├── platform-nest/        createEqsApp(), /health, /version, /openapi.json
│   ├── platform-next/        profil front et profil full-stack
│   ├── testing/              eqs check, base jetable, suites génériques, runConformance
│   └── cli/                  eqs doctor · inspect · openapi export · migrate
└── depots-lies/              cahiers des dépôts qui vivent ailleurs
    ├── eqs-satellite-template/
    ├── eqs-workflows/
    ├── eqs-fleet/            reporté (D-030) ; la liste des satellites est dans reference/satellites.md
    └── eqs-node-base/        reporté (D-029) ; le gabarit Dockerfile y est décrit

Lire dans l'ordre

  1. docs/doctrine.md : dix minutes, tout le reste en découle.
  2. reference/decisions.md : ce qui est tranché, ce qui ne l'est pas.
  3. Le cahier du package sur lequel on travaille.
  4. docs/conformite.md avant d'écrire la première assertion.

Le plan d'origine et l'audit sont là pour la traçabilité, pas pour le travail quotidien : un cahier des charges qui contredit le plan a raison, parce qu'il a été écrit après avoir lu le code.

Démarrer (quand il y aura du code)

pnpm install
pnpm check

prepare installe les hooks git (.githooks/, voir D-017). Le pre-commit refuse un secret ; le pre-push lance pnpm check.