Refatoring : Working state

This commit is contained in:
julien
2026-03-16 15:37:57 +01:00
parent aa00bec846
commit a5ca0df375
16 changed files with 251 additions and 568 deletions

View File

@@ -3,18 +3,18 @@
![PHP](https://img.shields.io/badge/PHP-8.4.1%2B-777BB4?logo=php&logoColor=white)
![Slim](https://img.shields.io/badge/Slim-4-74a045)
![PHPStan](https://img.shields.io/badge/PHPStan-niveau%208-blue)
![Tests](https://img.shields.io/badge/tests-355%20passing-brightgreen)
![Tests](https://img.shields.io/badge/tests-442%20passing-brightgreen)
![Licence](https://img.shields.io/badge/licence-MIT-green)
Blog multi-utilisateurs modulaire développé avec Slim 4. Les domaines `Auth`, `Category`, `Media`, `User`
et `Shared` sont indépendants du domaine métier et réutilisables sans modification pour d'autres
et `Shared` portent une architecture DDD légère, lisible et réutilisable pour d'autres
projets (boutique, portfolio…).
## Fonctionnalités
- **Articles** — création, édition, suppression avec éditeur WYSIWYG, slugs stables
- **Catégories** — filtrage sur la page d'accueil et dans l'interface admin
- **Médias** — upload WebP avec déduplication SHA-256
- **Médias** — upload WebP avec déduplication SHA-256 par utilisateur
- **Recherche** — full-text FTS5 cumulable avec le filtre catégorie
- **Comptes** — trois rôles (`user`, `editor`, `admin`), réinitialisation de mot de passe par email
- **RSS** — flux 2.0 des 20 derniers articles (`/rss.xml`)
@@ -50,6 +50,8 @@ php bin/provision.php
php -S localhost:8080 -t public
```
Le projet est encore en développement : l'historique des migrations a été simplifié en une baseline courte. Si vous aviez une ancienne base locale, supprimez `database/app.sqlite` puis reprovisionnez.
Pour surveiller les modifications SCSS et recompiler automatiquement en développement :
```bash
@@ -177,11 +179,11 @@ Le contenu du blog (articles publiés) est soumis à [CC BY-SA 4.0](https://crea
## Provisioning
Le provisionnement (migrations + seed admin) s'execute explicitement via `php bin/provision.php`.
Le provisionnement (migrations + seed admin) s'exécute explicitement via `php bin/provision.php`.
- Developpement local : executer `php bin/provision.php` apres `cp .env.example .env`
- Docker / production : executer `docker compose exec app php bin/provision.php` apres le demarrage du conteneur
- Développement local : exécuter `php bin/provision.php` apres `cp .env.example .env`
- Docker / production : exécuter `docker compose exec app php bin/provision.php` apres le demarrage du conteneur
Le runtime HTTP ne provisionne plus automatiquement la base. Si le schema n'est pas present, l'application echoue avec un message explicite demandant d'executer la commande de provisionnement.
Le runtime HTTP ne provisionne plus automatiquement la base. Si le schéma n'est pas présent, l'application echoue avec un message explicite demandant d'exécuter la commande de provisionnement.
Pour repartir d'un schema frais en developpement apres un nettoyage de l'historique des migrations, supprimez d'abord la base SQLite locale puis relancez le provisionnement : `rm -f database/app.sqlite` (ou votre fichier SQLite configure), puis `php bin/provision.php`.
Pour repartir d'un schéma frais en développement apres un nettoyage de l'historique des migrations, supprimez d'abord la base SQLite locale puis relancez le provisionnement : `rm -f database/app.sqlite` (ou votre fichier SQLite configure), puis `php bin/provision.php`.