Voici une version améliorée et enrichie du fichier README.md
de votre projet :
Ce projet est une application Angular Todo List développée en suivant les principes de la Clean Architecture. Le but est de pratiquer et d'explorer la Clean Architecture côté front en séparant strictement la logique métier de la technologie front utilisée (Angular). Cette approche permettrait de réutiliser les couches métier et adaptateur dans une autre stack front, comme React.
- Découpler la logique métier de la stack technologique (framework ou UI).
- Garantir la testabilité et la maintenabilité grâce à une architecture modulaire.
- Pratiquer la Clean Architecture dans un contexte frontend.
apps
: Contient l'application Angulartodolist-clean-archi
.package/domain
: Contient la logique métier (use cases, entités, ports).package/adapter
: Contient les adaptateurs (présentateurs et contrôleurs) qui servent de pont entre la logique métier et l'interface utilisateur.
- Domaine (
package/domain
) :
- Contient les entités métier, les cas d'utilisation (Use Cases), et les interfaces des ports.
- Exemple :
- Entité :
Todolist
(représente une tâche). - Use Case :
AjouterTodolistUseCase
(implémente la logique pour ajouter une tâche).
- Entité :
- Adaptateur (
package/adapter
) :
- Implémente les ports définis dans le domaine.
- Contient les :
- Présentateurs : Formatte les données du domaine pour les rendre lisibles par l'interface utilisateur.
- Contrôleurs : Coordonne les interactions entre l'interface utilisateur et le domaine.
- Application (
apps/todolist-clean-archi
) :
- Contient l'application Angular.
- Se limite à la gestion de la vue et s'appuie sur les couches adaptateur et domaine pour la logique.
- L'utilisateur interagit avec l'interface utilisateur (Angular Form).
- Les données sont envoyées au contrôleur via un composant Angular.
- Le contrôleur appelle un cas d'utilisation (
UseCase
) du domaine. - Le
UseCase
effectue la logique métier et notifie un présentateur. - Le présentateur met à jour un
ViewModel
, qui est observé par le composant Angular. - L'interface utilisateur est mise à jour automatiquement via l'observable.
-
Installez les dépendances :
npm install
-
Lancez l'application :
nx serve todolist-clean-archi
-
Ouvrez votre navigateur à l'adresse suivante : http://localhost:4200.
- Remplissez les champs
titre
etvaleur
dans le formulaire. - Cliquez sur le bouton "Valider".
- Les détails de la tâche ajoutée s'affichent dans la section "Détails de la Todo ajoutée".
Exécutez les tests unitaires pour vérifier la logique des différentes couches :
nx test <nom_du_projet>
Utilisez lint
pour garantir la qualité et la cohérence du code :
nx lint <nom_du_projet>
$vm
est une projection de l'état du composant Angular.- Il encapsule les données formatées spécifiquement pour la vue.
- Utilise un observable pour mettre à jour l'interface utilisateur de manière réactive.
-
Le présentateur (
AjouterTodolistPresenter
) met à jour leViewModel
avec les données formatées :notifyTodolist(todolist: Todolist): void { this.vm.id = todolist.id; this.vm.titre = todolist.titre; this.vm.valeur = todolist.valeur; this.notifyVM(); // Notifie les observateurs }
-
Le composant Angular souscrit au
ViewModel
via$vm
:$vm: Observable<AjouterTodolistPresenterVM> = new Observable(subscriber => this.ajouterTodolistController.subscribeVM(vm => subscriber.next(vm)) );
-
La vue Angular affiche les données mises à jour :
<div *ngIf="($vm | async) as todo" class="todo-preview"> <h2>Détails de la Todo ajoutée</h2> <ul> <li><strong>ID:</strong> {{todo.id}}</li> <li><strong>Titre:</strong> {{todo.titre}}</li> <li><strong>Valeur:</strong> {{todo.valeur}}</li> </ul> </div>