first commit
This commit is contained in:
51
docs/ARCHITECTURE.md
Normal file
51
docs/ARCHITECTURE.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# Architecture de netslim-core
|
||||
|
||||
`netslim-core` fournit un noyau technique et des modules réutilisables pour plusieurs applications.
|
||||
|
||||
## Contenu du package
|
||||
|
||||
- `src/Kernel/` : bootstrap, runtime, container DI, routing, migrations, Twig, checks de démarrage.
|
||||
- `src/Identity/` : identité, authentification, comptes, autorisation et reset de mot de passe.
|
||||
- `src/Settings/` : paramètres applicatifs clé / valeur typés.
|
||||
- `src/AuditLog/` : journalisation des actions transverses.
|
||||
- `src/Notifications/` : envoi et suivi des emails transactionnels.
|
||||
- `src/Taxonomy/` : taxonomie réutilisable et contrats publics associés.
|
||||
- `src/Media/` : médiathèque partagée et contrats publics associés.
|
||||
|
||||
## Principes
|
||||
|
||||
- un seul runtime applicatif par projet consommateur ;
|
||||
- les projets consommateurs possèdent leurs templates, assets, points d’entrée HTTP et leurs modules métier propres ;
|
||||
- tous les chemins runtime persistants (logs, cache, base SQLite, médias) sont résolus depuis le projet consommateur ;
|
||||
- les dépendances inter-modules passent par des contrats publics minimaux ;
|
||||
- le noyau ne connaît pas le métier applicatif des projets consommateurs ;
|
||||
- les exigences d'environnement métier (par exemple le provisionnement admin d'`Identity`) restent portées par les modules concernés, pas par le bootstrap du noyau.
|
||||
|
||||
## Surface publique et frontière package / application
|
||||
|
||||
Le package expose comme points d'intégration :
|
||||
- `Netig\Netslim\Kernel\Runtime\...` pour le bootstrap et le runtime ;
|
||||
- les interfaces applicatives publiques des modules partagés ;
|
||||
- les contrats publics sous `*/Contracts/` ;
|
||||
- les classes `*Module`.
|
||||
|
||||
Les implémentations `Infrastructure/`, les repositories PDO, les détails de wiring et les templates internes doivent être considérés comme des détails d'implémentation. Voir aussi `docs/PUBLIC_API.md`.
|
||||
|
||||
## Responsabilités d'une application consommatrice
|
||||
|
||||
Une application qui consomme `netslim-core` doit fournir :
|
||||
- un manifeste de modules (`config/modules.php`) ;
|
||||
- un point d'entrée HTTP ;
|
||||
- les templates réellement applicatifs ;
|
||||
- les assets attendus par les layouts et écrans qu'elle utilise.
|
||||
|
||||
Contrats implicites actuels côté UI :
|
||||
- `@Kernel/layout.twig` attend `/assets/css/main.css` ;
|
||||
- l'écran admin de `Media` attend `/assets/js/media-admin.js` côté projet consommateur ;
|
||||
- `Identity` ne suppose pas la présence d'un module éditorial : la destination back-office se règle via `ADMIN_HOME_PATH` (défaut : `/admin`).
|
||||
|
||||
Contraintes d'environnement côté modules :
|
||||
- `Identity` requiert `ADMIN_*` uniquement si le projet exécute le provisionnement initial du compte administrateur ;
|
||||
- `Notifications` requiert les variables `MAIL_*` seulement si l'application active l'envoi réel d'emails transactionnels.
|
||||
|
||||
> Quand `netslim-core` est installé via Composer, les chemins runtime détectent automatiquement la racine du projet consommateur pour les scripts CLI et les suites de tests qui n'appellent pas explicitement `Bootstrap::create()`.
|
||||
Reference in New Issue
Block a user