52 lines
2.9 KiB
Markdown
52 lines
2.9 KiB
Markdown
# 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()`.
|