# 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 [![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.