﻿# Projet local

Stack :
- PHP 8.3.14
- Laravel
- MySQL 9.1
- Keycloak

# Règles générales

- Réponses en français
- Code complet uniquement
- Pas d'explications basiques
- Modifier uniquement ce qui est demandé
- Ne pas proposer de refactor inutile
- Commencer par lire le contenu de l'existant
- Créer les fichiers directement dans le bon sous-dossier du projet
- Modifier directement le code
- Tous les messages de confirmation doivent s'afficher dans des fenêtres modales dont la gestion est externalisée (principe DRY de Laravel)
- Aucune purge / suppression en masse (tables ACL, scans, données, etc.) sans autorisation explicite de l'utilisateur
- Interdiction de modifier les fichiers des autres applications sans autorisation explicite de l'utilisateur
- Interdiction de modifier les paramètres PHP et WAMP

# PHP

- Utiliser PHP 8+ strict
- PDO pour accès DB (si hors Laravel)
- Requêtes préparées obligatoires
- Pas de code obsolète (mysql_* interdit)

# Laravel

- Respecter conventions Laravel
- Utiliser Eloquent sauf demande contraire
- Utiliser migrations pour DB
- Utiliser services/controllers propres
- Pas de logique métier dans les controllers si possible

# MySQL

- SQL explicite et lisible
- Index si performance critique
- Pas de requêtes non paramétrées
- Respect schéma existant

# Keycloak

- Authentification par Keycloak via LoginLibrary
- Interdiction de modifier les fichiers de LoginLibrary
- Rôles renvoyé par Keycloak
- Groupes renvoyé par Keycloak

# Divers

- Messages de confirmation dans des fenêtres modales
- Messages d'alerte dans des fenêtres modales
- Fenêtres modales toutes sur le même modèle

# API / intégrations

- JSON standard
- REST privilégié
- Toujours gérer erreurs HTTP

# Sécurité

- Validation des inputs obligatoire
- Pas d'injection SQL
- Pas de secrets en dur dans le code


