first commit

This commit is contained in:
julien
2026-03-20 22:13:41 +01:00
commit 41f8b3afb4
323 changed files with 27222 additions and 0 deletions

107
README.md Normal file
View File

@@ -0,0 +1,107 @@
# netslim-core
`netslim-core` est le socle réutilisable de la plateforme Netslim.
Il contient :
- le `Kernel` technique ;
- les modules partageables `Identity`, `Settings`, `AuditLog`, `Notifications`, `Taxonomy` et `Media` ;
- les tests d'architecture et de modules du socle.
Ce dépôt est conçu pour être consommé par des projets applicatifs séparés via Composer.
## Installation depuis le dépôt Git en HTTPS
### Pendant le développement du core
```json
{
"repositories": [
{
"type": "vcs",
"url": "https://git.netig.net/netig/netslim-core.git"
}
],
"require": {
"netig/netslim-core": "^0.3@dev"
}
}
```
### Après la première release taguée
```json
{
"repositories": [
{
"type": "vcs",
"url": "https://git.netig.net/netig/netslim-core.git"
}
],
"require": {
"netig/netslim-core": "^0.1"
}
}
```
## Option locale pendant le développement
Pour développer le core et une application consommatrice côte à côte, un `path` repository local reste pratique, mais ce n'est pas le mode de consommation par défaut :
```json
{
"repositories": [
{
"type": "path",
"url": "../netslim-core"
}
],
"require": {
"netig/netslim-core": "^0.3@dev"
}
}
```
## Ce que doit fournir une application consommatrice
Le package ne porte pas d'application concrète. Un projet consommateur doit fournir au minimum :
- son propre `config/modules.php` ;
- son point d'entrée HTTP (`public/index.php`) ;
- ses templates applicatifs ;
- son pipeline d'assets.
Si l'application active `Identity` et exécute le provisionnement initial, elle doit aussi définir `ADMIN_USERNAME`, `ADMIN_EMAIL` et `ADMIN_PASSWORD` dans son `.env`. Ces variables ne sont plus exigées par le bootstrap du noyau seul.
Si l'application active `Notifications`, elle doit configurer `MAIL_HOST`, `MAIL_PORT`, `MAIL_USERNAME`, `MAIL_PASSWORD`, `MAIL_ENCRYPTION`, `MAIL_FROM` et `MAIL_FROM_NAME` pour permettre l'envoi effectif des emails transactionnels.
Les templates du socle supposent en particulier :
- une feuille de styles servie sous `/assets/css/main.css` pour les layouts `@Kernel` ;
- si l'UI admin du module `Media` est utilisée, un script servi sous `/assets/js/media-admin.js` ;
- les caches, logs, médias et la base SQLite sont toujours résolus depuis le projet consommateur (`var/`, `public/media/`, `database/`), jamais depuis le package installé dans `vendor/` ;
- la destination du back-office peut être redéfinie via `ADMIN_HOME_PATH` si l'application consommatrice n'utilise pas `/admin`.
## Surface publique
Le socle expose principalement :
- `Netig\Netslim\Kernel\...` pour le runtime public ;
- les interfaces applicatives documentées des modules partagés (`Netig\Netslim\Identity\Application\*ServiceInterface`, `Netig\Netslim\Settings\Application\SettingsServiceInterface`, `Netig\Netslim\AuditLog\Application\AuditLogServiceInterface`, `Netig\Netslim\Notifications\Application\NotificationServiceInterface`, `Netig\Netslim\Taxonomy\Application\TaxonomyServiceInterface`, `Netig\Netslim\Media\Application\MediaServiceInterface`) ;
- `Netig\Netslim\Settings\Contracts\...` ;
- `Netig\Netslim\AuditLog\Contracts\...` ;
- `Netig\Netslim\Notifications\Contracts\...` ;
- `Netig\Netslim\Taxonomy\Contracts\...` ;
- `Netig\Netslim\Media\Contracts\...` ;
- les classes `*Module` des modules partagés.
La frontière détaillée entre API publique et API interne est documentée dans [`docs/PUBLIC_API.md`](docs/PUBLIC_API.md).
## Vérifications locales
```bash
composer install
composer qa
```
## Gouvernance du package
- `docs/PUBLIC_API.md` définit la frontière supportée entre le package et les projets consommateurs ;
> 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()`.