# Project: MJ 2026 (AI Driven)

Ce document récapitule l'état du projet au mardi 7 avril 2026.

## 🚀 État Actuel
Le site est fonctionnel avec une interface immersive. 
Le Maître du Jeu (MJ) est piloté par l'IA (Multi-fournisseurs via Prism) et communique par voix (synthèse et reconnaissance).

### Composants Clés
1. **Interface (UI) :** 
   - Composant Livewire Volt : `resources/views/livewire/game.blade.php`.
   - Design : Tailwind CSS 4.0 avec styles standardisés dans `resources/css/app.css`.
   - Interaction : Reconnaissance vocale (STT) et Synthèse vocale (TTS) via Web Speech API (Navigateur).

2. **Application Mobile (Flutter) :**
   - Dossier : `flutter/`.
   - Support : Android Auto (Media App) pour jouer à la voix.
   - Fonctionnalités : Login, Liste des campagnes, TTS/STT pour le MJ.

3. **Cerveau (IA) :**
   - Service : `app/Services/GameMasterService.php`.
   - Abstraction : [Prism](https://prism.echolabs.dev/) (permet de basculer entre OpenAI, Gemini, Anthropic, Ollama, etc.).
   - Modèle par défaut : `gpt-4o-mini` (configurable via `AI_PROVIDER` et `AI_MODEL`).
   - Rôle : MJ narratif, gère les combats automatiquement, joue les PNJ, mémorise le contexte.

3. **Persistance (Données) :**
   - Tables : `campaigns`, `characters`, `messages`.
   - Stockage : SQLite (par défaut).
   - Logique : Chaque interaction est sauvegardée pour permettre de reprendre l'histoire.

## 🛠 Configuration Requise
- **Variables d'environnement :** 
  - `AI_PROVIDER` (ex: `openai`, `gemini`, `anthropic`)
  - `AI_MODEL` (ex: `gpt-4o-mini`, `gemini-2.0-flash`)
  - Clés API correspondantes (`OPENAI_API_KEY`, `GEMINI_API_KEY`, etc.) dans le `.env`.
- **Assets :** Toujours lancer `npm run dev` ou `npm run build` après modification des styles.
- **Route principale :** Accessible via `/game` (nommé `game`).

## 📜 Règles de Codage & Standards
- **PHP :** Strict types (`declare(strict_types=1)`), PHPDoc complète, conformité PHPStan/PHPMD.
- **CSS :** Utilisation de classes sémantiques dans `app.css` (@layer components) pour éviter de surcharger le Blade.
- **Layout :** Utilise le composant standard Laravel `<x-layouts.app>` situé dans `resources/views/components/layouts/app.blade.php`.
- **Langue :** Narration et interface exclusivement en **Français**.
- **Sécurité:** N'expose jamais de clé API, de secrets, de passwords, ou de tokens. Fais attention aux failles SQL, XSS...

---
*Ce fichier a été généré pour assurer la continuité du développement.*
