ADR 0009 proposé (PWA en TypeScript) ; plan de l'étape 0d.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
14d1186e84
commit
03b26ccba7
@@ -46,3 +46,9 @@ construire ou tester ; rien n'est embarqué dans l'application.
|
||||
| Python 3 | PSF | `ustagammon/build-c` | Comparateur des références |
|
||||
| jq | MIT | `ustagammon/build-c` | Lecture du JSON dans les tests |
|
||||
| Emscripten | MIT / NCSA | `emscripten/emsdk:3.1.64` | Compilation du moteur en WebAssembly (étape 0b) |
|
||||
|
||||
### 2026-11-02 — Outils de l'application web (étape 0d)
|
||||
|
||||
Validés par Pierre avec l'ADR 0009, dans Docker, jamais embarqués :
|
||||
TypeScript (`tsc`, Apache-2.0), Biome (MIT ou Apache-2.0),
|
||||
`@cucumber/cucumber` (MIT), `dependency-cruiser` (MIT).
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
# 0009. Socle : PWA en TypeScript, moteur en WebAssembly
|
||||
|
||||
- **Statut** : proposé
|
||||
- **Date** : 2026-11-02
|
||||
- **Décideurs** : Pierre (langage, outils), sur proposition de Claude Code ;
|
||||
le socle sera accepté après les mesures sur le Fairphone 4
|
||||
|
||||
## Contexte
|
||||
|
||||
L'étape 0 doit trancher entre une PWA (moteur en WebAssembly) et une
|
||||
application Android native (`docs/etape-0.md`). L'étape 0b a produit le moteur
|
||||
en WebAssembly (MR !9) : même suite de contrat qu'en natif (écart maximal
|
||||
9,5e-4 pour une tolérance de 0,002), 7,3 Mo compressés à télécharger (seuil
|
||||
40 Mo). Sur le PC de développement (i5-2450M, 2011), le meilleur coup à 2 plis
|
||||
prend au plus 0,3 s sous Chromium et 2,3 s sous Firefox (seuil sur le
|
||||
téléphone : 3 s). Les mesures sur le Fairphone 4 restent à faire.
|
||||
|
||||
L'ADR 0007 renvoyait au choix du socle le langage de l'interface et l'outil de
|
||||
vérification des dépendances.
|
||||
|
||||
## Décision
|
||||
|
||||
Sous réserve des mesures sur le Fairphone 4 :
|
||||
|
||||
- **Socle : PWA**, installable et utilisable hors ligne, moteur en WebAssembly
|
||||
dans un Web Worker. L'étape 0c (Android natif) n'est pas faite.
|
||||
- **Langage : TypeScript**, compilé par `tsc` en modules JavaScript standard,
|
||||
sans framework d'interface ni empaqueteur.
|
||||
- **Lint et formatage : Biome.**
|
||||
- **Scénarios exécutés** (ADR 0008) par `@cucumber/cucumber`, sous Node, sur le
|
||||
domaine branché au vrai moteur WebAssembly.
|
||||
- **Règles d'architecture vérifiées** (ADR 0007) par `dependency-cruiser` :
|
||||
le domaine n'importe ni l'interface, ni le stockage, ni le moteur ; aucun
|
||||
écran n'importe le moteur.
|
||||
- Tous ces outils tournent dans Docker et ne sont jamais embarqués dans
|
||||
l'application.
|
||||
|
||||
## Alternatives écartées
|
||||
|
||||
- **Android natif (Kotlin, NDK)** : un seul système, une chaîne de build lourde
|
||||
(Gradle, NDK) sur une machine de 2011, et aucun gain mesuré à ce stade sur
|
||||
les temps de calcul. Reste le plan B si les mesures du téléphone échouent.
|
||||
- **JavaScript annoté (JSDoc) vérifié par TypeScript** : pas d'étape de build,
|
||||
mais des types moins lisibles ; Pierre a choisi TypeScript.
|
||||
- **Un framework d'interface** (React, Vue…) : inutile pour un plateau et
|
||||
quelques écrans, et contraire à la règle de simplicité (ADR 0007).
|
||||
|
||||
## Conséquences
|
||||
|
||||
- La distribution sur F-Droid et le Play Store demandera plus tard une
|
||||
enveloppe Android minimale autour de la PWA (à décider à l'étape 1).
|
||||
- Si les mesures du Fairphone 4 dépassent les seuils, cet ADR passe au statut
|
||||
« obsolète » et l'étape 0c est lancée.
|
||||
@@ -15,3 +15,4 @@ l'ancien passe au statut « remplacé par NNNN ». Voir l'ADR 0001.
|
||||
| [0006](0006-merge-requests-systematiques.md) | Merge requests systématiques, fusionnées par Claude Code | accepté |
|
||||
| [0007](0007-architecture-et-conventions-de-code.md) | Architecture et conventions de code | accepté |
|
||||
| [0008](0008-glossaire-et-scenarios-source-unique.md) | Glossaire et scénarios : une source unique pour le code, l'aide et les tests | accepté |
|
||||
| [0009](0009-socle-pwa-typescript.md) | Socle : PWA en TypeScript, moteur en WebAssembly | proposé |
|
||||
|
||||
Reference in New Issue
Block a user