Jeu de plateau tactique Warstruck implémenté avec NestJS (serveur) et Next.js (client web). Ce prototype inclut un plateau de jeu interactif 8x8 avec système de tours, gestion des pièces, et mécaniques de jeu complètes.
✨ Nouveau : Gestion complète des parties avec UUID, persistance MongoDB, historique et système de replay !
🎯 Dernières Modifications (v1.1.0) :
- Decks pré-enregistrés avec deck par défaut (2 Colonels, 10 Fantassins, 7 Éclaireurs)
- Restrictions de déplacement dans la colonne des renforts (seules H8/H1 déployables)
- Phase post-turn avec déplacement automatique des renforts et ajout optionnel
📖 Voir docs/modifications-v1.1.0/ pour la documentation complète.
📚 Documentation Organisée : Tous les guides sont maintenant dans docs/ - Consultez docs/README.md pour l'index complet.
- Plateau de jeu 8x8 avec zones spéciales (renforts, frontière, déploiement)
- Système de tours avec gestion des points d'action
- 4 types de pièces : Général, Colonel, Fantassin, Éclaireur (avec capacités)
- Mécanique de jeu complète : déplacement, attaque, destruction, déploiement
- Renforts et réserve : système de file avec pièces face cachée
- Condition de victoire : élimination du général adverse
- Interface interactive : sélection et déplacement de pièces en temps réel
- 🆕 Gestion des parties : UUID unique, URLs persistantes, rechargement (F5) sans perte
- 🆕 Historique complet : Chaque action est enregistrée avec timestamp
- 🆕 Système de replay : Rejouer une partie action par action ou par tour
- 🆕 Liste des parties : Vue d'ensemble de toutes les parties en cours et terminées
- Grilles de déplacement spécifiques par pièce
- Zones d'influence des hauts gradés
- Effets des capacités actives
- Système de combos d'unités
- Authentification des joueurs
- WebSockets pour multijoueur en temps réel
- Statistiques et analyse de parties
Voir IMPLEMENTATION.md et GAME_MANAGEMENT.md pour les détails complets.
Service NestJS professionnel avec :
- ✅ Architecture modulaire : common, config, game
- ✅ DTOs pour validation des données
- ✅ Intercepteurs pour logging automatique
- ✅ Filtres pour gestion des erreurs
- ✅ Configuration externalisée avec @nestjs/config
- 📚 Documentation : server/README.md
Client Next.js avec App Router :
- Interface de jeu interactive
- Composants React réutilisables
- Intégration API REST
Le repository utilise Turborepo avec pnpm workspaces pour une gestion optimisée des dépendances et des builds.
📖 Guide complet : Voir QUICKSTART.md
# Installer pnpm si nécessaire
npm install -g pnpm@9
# Installer toutes les dépendances
pnpm install# Lance le backend (3001) + frontend (3000)
pnpm devCela démarre :
- Backend API : http://localhost:3001 (NestJS)
- Frontend Web : http://localhost:3000 (Next.js)
- Ouvrir http://localhost:3000
- Cliquer sur "🎮 Jouer (Mode Démo)"
- Cliquer sur "Configurer la partie de démo"
- Sélectionner une pièce et la déplacer sur une case verte
- Terminer le tour quand les points d'action sont épuisés
# Backend uniquement
cd server && pnpm dev
# Frontend uniquement
cd web && pnpm dev
# Build tout
pnpm build- Échiquier 8x8 avec notation standard (A-H, 1-8)
- Colonne H : colonne des renforts
- Lignes 4-5 : frontière
- Lignes 1 et 8 : lignes de déploiement
- Réserve : zone hors plateau (pièces face cachée)
- Chaque joueur prépare un deck de 20 pièces
- Jet de pièce pour déterminer attaquant/défenseur
- Placement du général et 4 pièces en renforts (face cachée sauf la 1ère)
- Le défenseur joue en premier, l'attaquant avance son général d'une case
- À chaque tour : actions selon les points disponibles
- Victoire : éliminer le général adverse
- Déplacer une pièce
- Attaquer une pièce adverse
- Utiliser une capacité
- Déployer depuis les renforts (sur ligne de déploiement)
- Ajouter une pièce de la réserve aux renforts
- 1 de base par tour
- +2 par Général sur le plateau
- +1 par Colonel sur le plateau
GET /game/config- Obtenir les règles et pièces du jeu
POST /game/create- Créer une nouvelle partieGET /game/list- 🆕 Liste de toutes les partiesGET /game/:gameId- Obtenir l'état d'une partiePOST /game/:gameId/select-deck- Sélectionner le deck (20 pièces)POST /game/:gameId/place-general- Placer le général (setup)POST /game/:gameId/setup-reinforcements- Configurer les renforts (setup)POST /game/:gameId/start- Démarrer la partiePOST /game/:gameId/action- Exécuter une action
GET /game/:gameId/history- 🆕 Historique complet d'une partieGET /game/:gameId/replay/action/:actionId- 🆕 Rejouer jusqu'à une actionGET /game/:gameId/replay/turn/:turnNumber- 🆕 Rejouer jusqu'à un tour
- NestJS 11 : Framework Node.js progressif
- TypeScript : Typage statique
- @nestjs/config : Configuration centralisée
- class-validator : Validation des DTOs
- uuid : Identifiants uniques
- Next.js 14 : Framework React avec App Router
- React 18 : Interface utilisateur
- Mantine UI : Composants UI
- TypeScript : Typage statique
- Turborepo : Orchestration monorepo
- pnpm : Gestionnaire de packages rapide
- ts-node : Exécution TypeScript
- node --watch : Hot reload
- MongoDB pour persistence
- WebSockets / Socket.io pour temps réel
- Docker pour déploiement
Toute la documentation est organisée dans le dossier docs/ :
| Document | Description |
|---|---|
| docs/README.md | 📚 Index complet de toute la documentation |
| QUICKSTART.md | 🚀 Guide de démarrage rapide |
| CHANGELOG.md | � Historique des changements |
| CHECKLIST.md | ✅ Checklist de développement |
Les dernières modifications sont dans docs/modifications-v1.1.0/ :
- QUICK_START ⚡ - Résumé en 30 secondes
- RÉCAPITULATIF - Vue d'ensemble complète
- RÈGLES - Nouvelles règles du jeu
- TESTS - Guide de test
- DÉBOGAGE - Aide au débogage
| Thème | Documents |
|---|---|
| Architecture | PROJECT_STRUCTURE, SUMMARY, REFACTORING |
| Règles du Jeu | IMPLEMENTATION, RÈGLES_MODIFICATIONS |
| API | API_TESTING, server/README.md |
| Parties | GAME_MANAGEMENT, USAGE_GUIDE |
| Multijoueur | REALTIME_1VS1, QUICKSTART_1VS1 |
| Base de Données | MONGODB_QUICKSTART, MONGODB_MIGRATION |
Voir IMPLEMENTATION.md pour les fonctionnalités manquantes et les prochaines étapes.
MIT