2.1 KiB
2.1 KiB
Règles — Architecture (Pena-tauri)
Principe
L'architecture est Clean Architecture. Toute nouvelle fonctionnalité doit respecter ce découpage sans exception.
Structure Rust (src-tauri/src/)
domain/ — entités et traits purs, zéro dépendance externe
application/ — services métier, dépend uniquement de domain/
infrastructure/ — implémentations concrètes des traits de domain/
commands/ — points d'entrée Tauri (#[tauri::command]), orchestrent application/
Structure JS (src/)
services/ — appels Tauri (invoke), logique de données
state/ — état global de l'application
ui/ — composants d'affichage, sans logique métier
Règles de dépendance
| Couche | Peut dépendre de | Ne peut PAS dépendre de |
|---|---|---|
domain |
rien | application, infrastructure, commands |
application |
domain |
infrastructure, commands |
infrastructure |
domain |
application, commands |
commands |
application, domain |
infrastructure directement |
ui/ (JS) |
services/, state/ |
rien d'externe hors Tauri |
services/ (JS) |
invoke Tauri | ui/ |
Ce qui est interdit
- Instancier une implémentation concrète (
ComrakRenderer,FileRepository, etc.) depuisapplication/oucommands/— passer par injection de dépendance ou par le point d'assemblage (lib.rs). - Mettre de la logique métier dans
commands/ouui/. - Mettre des appels Tauri (
invoke) dansui/— les déléguer àservices/. - Créer un module hors de ces quatre couches Rust sans justification explicite.
Point d'assemblage
lib.rs est le seul endroit où les implémentations concrètes sont instanciées et câblées aux services.
Nouveau code
Avant d'ajouter un fichier, se poser la question : dans quelle couche appartient cette responsabilité ?
- Règle métier / contrat →
domain/ - Orchestration d'un cas d'usage →
application/ - Accès I/O, filesystem, bibliothèque tierce →
infrastructure/ - Commande exposée à Tauri →
commands/