80 lines
3.2 KiB
Markdown
80 lines
3.2 KiB
Markdown
# Boutique Click N Collect Sablé
|
|
|
|
## Table of contents
|
|
|
|
- [Boutique Click N Collect Sablé](#boutique-click-n-collect-sablé)
|
|
- [Table of contents](#table-of-contents)
|
|
- [Frameworks, Platforms and Libraries](#frameworks-platforms-and-libraries)
|
|
- [Installation](#installation)
|
|
- [Tests](#tests)
|
|
- [Deployment](#deployment)
|
|
- [Available Commands](#available-commands)
|
|
- [Changelog](#changelog)
|
|
- [Architecture](#architecture)
|
|
- [Règles d'Or (Verrouillées par les tests)](#règles-dor-verrouillées-par-les-tests)
|
|
|
|
## Frameworks, Platforms and Libraries
|
|
<!-- https://github.com/Ileriayo/markdown-badges -->
|
|
[](https://sass-lang.com/)
|
|
[](https://www.typescriptlang.org/)
|
|
[](https://vite.dev/)
|
|
[](https://www.php.net/)
|
|
[](https://laravel.com/docs/master)
|
|
[](https://vuejs.org/)
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
vi .env
|
|
composer install
|
|
php artisan storage:link
|
|
npm i
|
|
npm run prod
|
|
```
|
|
|
|
## Tests
|
|
|
|
```bash
|
|
cp .env.example .env.testing
|
|
vi .env.testing
|
|
composer install
|
|
php artisan storage:link
|
|
composer run test
|
|
```
|
|
|
|
## Deployment
|
|
|
|
```bash
|
|
php artisan schedule:run
|
|
```
|
|
|
|
## Available Commands
|
|
|
|
```bash
|
|
php artisan ldcweb:admin-secure-sync
|
|
```
|
|
|
|
**Créer un utilisateur :**
|
|
|
|
```bash
|
|
php artisan create:admin
|
|
```
|
|
|
|
## Changelog
|
|
|
|
See the [CHANGELOG.md](CHANGELOG.md) file for details.
|
|
|
|
## Architecture
|
|
|
|
Ce projet suit les principes de **l'Architecture Hexagonale (Ports et Adapteurs)** et du **Domain-Driven Design (DDD)**.
|
|
L'objectif est d'isoler au maximum la logique métier de l'infrastructure (framework Laravel, base de données, requêtes réseau) pour avoir un code robuste, pérenne et facile à tester.
|
|
|
|
### Règles d'Or (Verrouillées par les tests)
|
|
|
|
Afin de faciliter l'onboarding et d'assurer que l'architecture ne dérive pas, **Pest Arch** et **PHPStan (Level 9)** garantissent les principes suivants à chaque commit :
|
|
|
|
1. **Isolation totale du Domaine (Le Cœur)** : Le code dans `domain/` ne doit **jamais** dépendre du Framework (`Illuminate\`), de `App\`, ou de `Infrastructure\`. Il ne dépend que de PHP natif.
|
|
2. **Inversion des Dépendances** : L'Application et l'Infrastructure dépendent du Domaine, et jamais l'inverse. Le domaine expose des `Ports` (Interfaces) que l'infrastructure implémente via ses `Adapters`.
|
|
3. **Entités et Objets-Valeurs Purs** : Le domaine manipule ses propres Entités et `ValueObjects` validés et typés fortement. L'utilisation directe des modèles Eloquent est strictement interdite dans le domaine.
|
|
4. **Conventions de Nommage** : Chaque composant a une place et un suffixe stricts : `*Service`, `*Repository`, `*Exception`, `*Dto`. Les tests échoueront si la convention n'est pas respectée.
|