# Francia Ocupada (La Resistencia) ## 🎮 Estado Actual: v1.4 - ESTABLE Proyecto renombrado a **"Traición en París"** / **"Francia Ocupada"**. ### ✅ Funcionalidades Implementadas #### Backend (Socket.io + Node.js) - ✅ **Sistema de Reconexión Inteligente:** Los jugadores pueden recargar la página o volver a entrar y mantienen su sesión (ID de socket actualizado en tiempo real). - ✅ **Persistencia de Partidas:** Las partidas no se pierden si un jugador se desconecta brevemente. - ✅ **Control de Sesiones:** Seguimiento de `matchNumber` y `matchResults` para estadísticas continuas en el dashboard de admin. - ✅ **Lógica de Juego Completa:** - Roles ocultos y asignación aleatoria balanceada. - Fases: Lobby, Intro, Reveal Role, Roll Call, Vote Leader, Team Building, Vote Team, Mission, Mission Reveal, Mission Result, Assassin Phase. - Reglas especiales: 4ª misión con 7+ jug. requiere 2 fallos, 5 rechazos de líder = Victoria espía. - Temporizadores de seguridad para votaciones de líder. #### Frontend (Next.js + Tailwind + Framer Motion) - ✅ **Diseño Premium:** Estética "World War II" con tipografías, colores y assets temáticos (fichas de póker, documentos secretos, mapas tácticos). - ✅ **UX Fluida:** Animaciones de transición entre todas las fases. - ✅ **Feedback Visual:** - Cartas de rol específicas para cada personaje (Marlene, Capitán Philippe, Francotirador, etc.). - Tablero táctico dinámico que muestra el progreso de la partida. - Indicadores claros de "Tu Turno" o "Esperando al líder". - ✅ **Audio:** Banda sonora y efectos de sonido integrados. ### 🎨 Últimas Mejoras (v1.4 - Diciembre 2025) - 🔄 **Fix Crítico:** Solucionado bug donde el Líder perdía sus botones de acción al recargar la página. - 📊 **Dashboard Admin:** Panel de administración mejorado con historial de partidas y estadísticas de victorias. - 🖼️ **Assets:** Nuevas imágenes para roles y fondos de victoria/derrota. - 📱 **Responsividad:** Mejoras en la vista móvil para la fase de "Pasando Lista" y Tablero. ## 🚀 Despliegue y Ejecución ### Requisitos - Docker y Docker Compose - Node.js 18+ (para desarrollo local) ### Ejecución con Docker (Producción) ```bash # Desplegar todo el stack ./deploy.sh ``` El script `deploy.sh` se encarga de: 1. Bajar los últimos cambios de `main`. 2. Construir las imágenes con tags de versión. 3. Levantar los contenedores (Client, Server, DB). ### Desarrollo Local ```bash # Servidor cd server && npm run dev # Cliente cd client && npm run dev ``` ## 🌐 URLs - **Juego**: https://franciaocupada.martivich.es - **API**: https://api.franciaocupada.martivich.es - **Dashboard Admin**: (Accesible vía socket evento `admin_get_data`) ## 📝 Ramas Git - `main`: Rama de producción (Estable v1.4). - `develop`: Rama de desarrollo e integración. ## 👥 Roles del Juego **La Resistencia (Aliados)** - **Marlene (Merlín):** Conoce a los espías. Debe mantenerse oculta. - **Capitán Philippe (Percival):** Conoce a Marlene (y al Agente Doble). Debe protegerla. - **Partisanos:** Miembros leales de la resistencia. No saben nada. **El Eje (Alemanes/Espías)** - **Francotirador (Asesino):** Si los aliados ganan las 3 misiones, tiene un disparo final para matar a Marlene y robar la victoria. - **Agente Doble (Morgana):** Se hace pasar por Marlene ante el Capitán Philippe. - **Comandante Schmidt (Mordred):** Espía desconocido para Marlene. - **Infiltrado (Oberon):** Espía que no conoce a los otros espías. - **Colaboricionistas:** Espías estándar. ## 🔧 Stack Tecnológico - **Frontend**: Next.js 14, React, TypeScript, Framer Motion, TailwindCSS - **Backend**: Node.js, Express, Socket.IO, TypeScript - **Base de Datos**: PostgreSQL 15 - **Infraestructura**: Docker, Nginx (Proxy Inverso)