# Treasure Hunt API avec Laravel Sail

Ce projet se lance via Laravel Sail (Docker). Ce guide explique comment demarrer l'environnement et executer les commandes courantes.

## Prerequis

-   Docker Desktop ou Engine avec Docker Compose actif.
-   Si `vendor/` est absent, installez d'abord les dependances pour recuperer Sail: `composer install` (en local) ou `./vendor/bin/sail composer install`.
-   Copiez le fichier `.env.example` vers `.env` et adaptez les valeurs utiles (`APP_PORT`, `VITE_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`, `FORWARD_DB_PORT`).

## Demarrage rapide

1. Lancer la stack: `./vendor/bin/sail up -d`.
2. Generer la cle d'application: `./vendor/bin/sail artisan key:generate`.
3. Initialiser la base: `./vendor/bin/sail artisan migrate`.
4. (Optionnel) Ajouter un alias shell pour simplifier: `alias sail="./vendor/bin/sail"`.

## Ports et services

-   Application: `APP_PORT` (80 par defaut).
-   Vite: `VITE_PORT` (5173 par defaut).
-   MySQL 8.0: `FORWARD_DB_PORT` (3306 par defaut). Les donnees sont stockees dans le volume Docker `sail-mysql`.
-   Les conteneurs sont definis dans `compose.yaml` (service principal `laravel.test` et base `mysql`).

## Commandes courantes

-   Demarrer: `sail up -d` (ou `./vendor/bin/sail up -d` sans alias).
-   Arreter: `sail down`.
-   Rebuild si l'image change: `sail up -d --build` ou `sail build --no-cache`.
-   Logs: `sail logs -f laravel.test` ou `sail logs -f mysql`.
-   Shell applicatif: `sail shell` (ou `sail bash`).
-   Artisan: `sail artisan migrate`, `sail artisan migrate:fresh --seed`, `sail artisan tinker`.
-   Tests: `sail artisan test`.

## Base de donnees

-   Acces host: `127.0.0.1:<FORWARD_DB_PORT>` avec les identifiants definis dans `.env`.
-   Pour repartir de zero: `sail down -v` (supprime les volumes, donc les donnees) puis `sail up -d` et `sail artisan migrate --seed`.

## Debug et outils

-   Activer Xdebug en ajoutant dans `.env`: `SAIL_XDEBUG_MODE=develop,debug` et `SAIL_XDEBUG_CONFIG=client_host=host.docker.internal`, puis `sail up -d --build`.
-   Composer/PHP direct: `sail composer <cmd>`, `sail php -v`.
-   Nettoyage des images intermediaires: `sail down` puis `docker system prune` (optionnel).
