Skip to content

Architecture ​

Le dépôt ​

text
dwa-platform/
├── apps/
│   ├── extension/     Extension VS Code + serveur de langage (TypeScript, LSP)
│   ├── theme-hub/     Portail des thèmes (Cloudflare Workers, D1, R2, Better Auth, React)
│   ├── mcp/           Serveur MCP (à construire)
│   └── site/          Ce site de documentation (VitePress)
├── packages/
│   └── core/          Catalogue Core v1 et validateur des thèmes, partagés
├── theme/
│   ├── DWA.css        Thème de référence (@theme DWA)
│   └── archive/       Anciennes versions — ne pas modifier ni enregistrer
├── docs/language/     Guide du langage (référence), nomenclature, catalogue visuel
├── examples/          Présentations d’essai
└── scripts/           test-changed.mjs : parcours e2e touchés par une modification

Comment les pièces s’emboîtent ​

text
            ┌──────────────── Poste de l’auteur ────────────────┐
            │                                                    │
 Markdown ──┤  VS Code ── Extension DWA ── Serveur de langage    │
            │                 │   │                              │
            │                 │   └── Rendu Chromium (mesure)    │
            │                 └────── Export PPTX                │
            │                 │                                  │
            └─────────────────┼──────────────────────────────────┘
                              │  HTTPS, jeton révocable
                              ▼
                     Portail des thèmes (Worker)
                       ├── D1 : droits, thèmes, versions, rapports
                       ├── R2 ou stockage de l’organisation : CSS privés
                       └── API Claude (facultatif) : assistant de l’éditeur
  • Le cœur partagé (packages/core/) contient le catalogue du langage (src/catalog.ts) et le validateur des thèmes (src/theme-rules/). L’extension, le portail (serveur et éditeur) et ce site l’importent en source : une règle n’est écrite qu’une fois.
  • Le reste du cœur du langage (apps/extension/src/language/, render/, export/) ne dépend pas de VS Code. Il sera extrait quand le serveur MCP en aura besoin.
  • L’extension appelle l’API des extensions du portail (src/hub/ ↔ apps/theme-hub/worker/routes/device.ts, /device-api/v2). Toute modification de l’API garde les deux côtés compatibles.
  • Ce site importe le catalogue partagé et le package.json de l’extension pour générer la référence des classes et les commandes et paramètres ; les exemples de slides sont rendus avec Marp Core et theme/DWA.css à la construction.

Le portail en détail ​

text
apps/theme-hub/
├── worker/            API (Cloudflare Worker)
│   ├── routes/        account, orgs, themes, device (API des extensions)
│   ├── auth.ts        Better Auth : code email + SSO OIDC
│   ├── storage.ts     stockage multicloud (R2, S3 compatible, Azure)
│   └── ai.ts          assistant de l’éditeur (Claude)
├── web/               interface React + shadcn/ui + Tailwind (Vite), servie par le Worker
│   └── src/editor/    éditeur, validation en Web Worker, mesure géométrique en iframe isolée
├── migrations/        base D1 (SQLite)
└── tests/             parcours e2e : API, intégrations, interface (Chromium)

L’extension en détail ​

FichierRôle
src/extension.tsIntégration VS Code (commandes, suggestions inline, export)
src/server.tsServeur de langage : complétion, survol, diagnostics, corrections
src/language/catalog.tsRéexporte le catalogue de packages/core
src/language/language.tsAnalyse du Markdown et règles
src/language/activation.tsDétection du thème et activation
src/language/transitions.tsRéserve des titres et légendes (expérimental)
src/render/renderer.tsMesure du rendu, dans un processus séparé
src/render/callout-fit.tsTaille automatique des callouts
src/export/pptx.tsExport PowerPoint, indépendant de VS Code
src/hub/hub.tsThèmes d’organisation : connexion, choix, vérification, barre d’état, validation
src/hub/hub-client.tsClient de l’API des extensions, indépendant de VS Code
src/hub/store.tsThèmes installés dans le stockage global, une version active par thème
src/hub/theme-server.tsServeur 127.0.0.1 qui expose les thèmes installés à Marp

Documentation du langage DWA Core v1, de l’extension VS Code, du CLI et du portail des thèmes.