Vue d'ensemble de la stack technique¶
KanjiIQ est construit avec une philosophie auto-hébergée et open-source en priorité. Chaque composant s'exécute sur une infrastructure que nous contrôlons, sans dépendance fournisseur.
Résumé des technologies¶
| Couche | Technologie | Fonction |
|---|---|---|
| Frontend | Flutter Web | Framework d'interface multi-plateforme |
| Backend | Dart Frog | Serveur d'API REST léger |
| Base de données | PostgreSQL 15 | Stockage de données principal avec JSONB |
| Traduction | OpenAI API | Traduction dynamique du contenu |
| Orchestration | k3s (Kubernetes) | Orchestration de conteneurs |
| Ingress | Traefik | Reverse proxy, terminaison TLS, limitation de débit |
| TLS | cert-manager + Let's Encrypt | Gestion automatisée des certificats SSL |
| CI/CD | Forgejo Actions | Automatisation du build, push et déploiement |
| Registre de conteneurs | Forgejo Container Registry | Stockage des images Docker |
| Contrôle de version | Forgejo (fork de Gitea) | Plateforme Git auto-hébergée |
| Hébergement | Hetzner Dedicated Server | Fournisseur d'infrastructure |
| Administration | Flutter Web | Tableau de bord administrateur pour la gestion des locales/analyses |
Pourquoi ces choix ?¶
Dart partout¶
Le choix architectural le plus distinctif est l'utilisation de Dart à la fois pour le frontend et le backend :
- Flutter (Dart) pour le frontend
- Dart Frog (Dart) pour le backend
Cela permet :
- Le partage des définitions de modèles entre le client et le serveur
- Une expertise dans un seul langage pour toute l'équipe
- Des outils cohérents (analyseur Dart, formateur, framework de test)
- La possibilité de partager des packages de logique métier
Stack auto-hébergée¶
KanjiIQ évite délibérément les services cloud managés au profit d'alternatives auto-hébergées :
| Service managé | KanjiIQ utilise | Avantage |
|---|---|---|
| GitHub/GitLab | Forgejo | Contrôle total, pas de tarification par utilisateur |
| Docker Hub | Forgejo Container Registry | Co-localisé avec le code source |
| GitHub Actions | Forgejo Actions | Même syntaxe YAML, runners auto-hébergés |
| AWS RDS | PostgreSQL on k8s | Pas de frais horaires pour la base de données |
| AWS ALB | Traefik | Intégré à k3s, gratuit |
| AWS ACM | cert-manager + Let's Encrypt | Certificats TLS gratuits |
Efficacité des coûts¶
L'intégralité de la stack de production s'exécute sur un seul serveur dédié Hetzner, ce qui maintient les coûts mensuels prévisibles et significativement inférieurs aux services cloud managés équivalents. Voir Infrastructure pour les détails.
Principes d'architecture¶
- Conteneurs d'abord : Chaque composant est conteneurisé avec des builds Docker multi-étapes
- Infrastructure as code : Tous les manifestes Kubernetes sont versionnés
- Exécution non-root : Tous les conteneurs s'exécutent en tant que UID 1000 pour la sécurité
- Vérifications de santé : Chaque conteneur dispose de sondes de liveness et readiness
- Capable hors ligne : Le frontend fonctionne sans Internet grâce au cache SQLite local
- Respectueux de la vie privée : Analyses conformes GDPR/CCPA avec anonymisation automatique