Juego de vocabulario en castellano: cada carta plantea una regla de letra (empieza por, contiene o termina en) y el jugador responde con palabras válidas. Validación tolerante (acentos, espacios, mayúsculas) y modo multijugador en tiempo real. Ejercicio sobre arquitectura cliente-servidor con comunicación bidireccional: API REST para datos y WebSocket para partidas.
- Pipeline de normalización determinista: cada respuesta atraviesa la cadena
trim → collapse whitespace → lowercase → strip accents → strip puntuación. La Ñ se preserva como letra distinta del abecedario, no se normaliza a N. La integridad del mazo se valida en carga: regla,target_letteryvalid_answersdeben ser coherentes. - Una jugada = trabajo coordinado en BBDD: cada respuesta dispara registro del intento, actualización agregada de estadísticas del jugador autenticado y, en multijugador , emisión del evento a la sala. Las stats se acumulan jugada a jugada: un cierre forzoso de la app no pierde progreso.
- Multijugador vía WebSocket: cada partida es una sala con canal bidireccional persistente. El servidor hace broadcasting de eventos (respuesta acertada, fallida u omitida, fin de turno) a todos los conectados. Redis sostiene presencia online y estado efímero de la sala; PostgreSQL guarda lo durable.
- Backend Go con binario único:
Gin + GORM + PostgreSQL + Redis + JWT HS256passwordless. Compilación en local yscpal VPS, detrás de Nginx consystemd. Sin Docker en producción. La concurrencia de las salas se sostiene con goroutines. - Desarrollo guiado por especificaciones · cómo se aplica