ldc-boutique-cnc-sable/README.md
2026-10-27 09:58:12 +01:00

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 -->
[![SASS](https://img.shields.io/badge/SASS-hotpink.svg?style=for-the-badge&logo=SASS&logoColor=white)](https://sass-lang.com/)
[![TypeScript](https://img.shields.io/badge/TS-blue.svg?style=for-the-badge&logo=TYPESCRIPT&logoColor=white)](https://www.typescriptlang.org/)
[![Vite](https://img.shields.io/badge/vite-%23646CFF.svg?style=for-the-badge&logo=vite&logoColor=white)](https://vite.dev/)
[![PHP](https://img.shields.io/badge/php-%23777BB4.svg?style=for-the-badge&logo=php&logoColor=white)](https://www.php.net/)
[![Laravel](https://img.shields.io/badge/laravel-%23FF2D20.svg?style=for-the-badge&logo=laravel&logoColor=white)](https://laravel.com/docs/master)
[![Vue.js](https://img.shields.io/badge/vuejs-%234FC08D.svg?style=for-the-badge&logo=vue.js&logoColor=white)](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.