ADR-001 (learnkorean) — Client mobile : Capacitor
Statut : accepté (2026-07-19)
Contexte
La v1 vise Google Play, la v4 ajoutera le web et iOS — idéalement avec la même base de code. Je maîtrise HTML/CSS/JS/Tailwind (portfolio), mon temps est compté (alternance + Mastère), et la chaîne de build doit tourner self-hosted dans Woodpecker (pas de service de build cloud).
Comparatif pondéré
Question : avec quoi construire l'application mobile ?
1. Filtre éliminatoire (licence libre)
Flutter (BSD-3), React Native (MIT), Capacitor (MIT) : tous libres — aucun écarté. Écartés hors notation : app native Kotlin pure (pas de mutualisation web v4, courbe maximale), PWA seule (pas de présence Google Play, mon choix explicite).
2. Critères et pondérations (total = 100)
| Critère | Poids | Pourquoi |
|---|---|---|
| Adéquation v1→v4 (Android now, web v4, hors-ligne possible) | 30 | La même base de code doit servir la roadmap entière |
| Compétences existantes / courbe | 20 | Temps limité : chaque semaine d'apprentissage retarde la v1 |
| Build self-hosted en CI (APK dans Woodpecker) | 15 | Chaîne 100 % libre et chez nous, comme le reste |
| Valeur CV | 15 | Le projet est aussi une vitrine |
| Performance / ressenti natif | 10 | App de cartes et de quiz : exigence modérée |
| Écosystème et pérennité | 10 |
3-4. Candidats et notation
| Critère (poids) | Capacitor 7 | React Native + Expo | Flutter |
|---|---|---|---|
| Adéquation v1→v4 (30) | 5 — l'app EST une app web embarquée : le site v4 est déjà écrit ; hors-ligne via SQLite/IndexedDB | 4 — Android ✓, web via react-native-web correct sans plus | 3 — Android excellent, mais web rendu en canvas (lourd, SEO nul) |
| Compétences (20) | 4 — HTML/JS/Tailwind déjà acquis | 2 — React + outillage natif à apprendre | 1 — Dart + paradigme widgets : tout est nouveau |
| Build CI self-hosted (15) | 5 — build web + Gradle dans un conteneur, simple | 3 — possible en local mais l'écosystème pousse vers EAS (cloud payant) | 4 — image Docker flutter, correct |
| Valeur CV (15) | 3 — moins « mobile natif » aux yeux des recruteurs | 5 — React = énorme demande | 4 — très demandé aussi |
| Performance (10) | 4 — WebView moderne : largement suffisant pour des flashcards | 5 | 5 |
| Écosystème (10) | 4 — porté par l'équipe Ionic, mature | 5 | 5 |
| Score pondéré / 5 | 4,30 | 3,80 | 3,30 |
5. Recommandation
Capacitor. C'est le seul candidat qui rend la roadmap cumulative : le code écrit pour la v1 Android est littéralement le site web de la v4, et iOS n'est qu'une cible de build supplémentaire. Avec mes compétences web déjà acquises, c'est aussi le chemin le plus court vers une v1 publiée. Ce que les chiffres ne captent pas : le ressenti « natif » est un cran en dessous de Flutter/RN — acceptable pour des cartes et des quiz, à réévaluer si un jour l'app devient très animée. Le manque à gagner CV est compensé par l'ADR-002 (React, compétence n°1 du marché front).
Décision
Capacitor 7. Je le valide le 2026-07-19 : une seule base de code web pour toute la roadmap (Android v1 → web v4 → iOS), buildée dans ma CI.
Conséquences
- Une seule base de code web (React, cf. ADR-002) empaquetée par Capacitor ; plugins natifs (notifications, stockage) disponibles au besoin.
- La CI construit l'APK/AAB avec Gradle dans un conteneur — à outiller en phase 3 (image Android SDK).
- Signature de l'app et compte Google Play (25 $) à prévoir en phase 5.