Files
Pena/.claude/rules/architecture.md
T

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.) depuis application/ ou commands/ — passer par injection de dépendance ou par le point d'assemblage (lib.rs).
  • Mettre de la logique métier dans commands/ ou ui/.
  • Mettre des appels Tauri (invoke) dans ui/ — 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/