You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
dev 5e41363f76
Define platform contracts, shared models and localization
22 hours ago
cmd/games2 Initialize games2 foundation 2 days ago
contracts Define platform contracts, shared models and localization 22 hours ago
db/migrations Initialize games2 foundation 2 days ago
deploy Initialize games2 foundation 2 days ago
docs Define platform contracts, shared models and localization 22 hours ago
frontend Define platform contracts, shared models and localization 22 hours ago
internal Define platform contracts, shared models and localization 22 hours ago
.env.example Initialize games2 foundation 2 days ago
.gitignore Initialize games2 foundation 2 days ago
README.md Define platform contracts, shared models and localization 22 hours ago
go.mod Initialize games2 foundation 2 days ago
package-lock.json Initialize games2 foundation 2 days ago
package.json Define platform contracts, shared models and localization 22 hours ago

README.md

Juegoland — games2

Proyecto independiente para la nueva plataforma de juegos. El frontend está en Svelte 5 y TypeScript; la API y el servidor de dominio están en Go. La carpeta no importa archivos de games, usa puertos propios y no modifica su despliegue.

Para continuar el trabajo en otro proyecto de Codex, leer el handoff del 6 de octubre de 2026 antes de cambiar el árbol de trabajo.

Estado actual: base ejecutable. El catálogo está conectado desde el navegador a la API Go y empieza vacío porque ningún juego está instalado/publicado en este proyecto. Salas, cuentas, chat, motor, PostgreSQL y tiempo real aún no están habilitados. /ready describe expresamente esta fase como foundation; no acredita preparación para producción.

Requisitos

  • Go 1.26 o superior.
  • Node.js 24 o superior y npm.

Desarrollo

En una terminal, desde la raíz de games2:

go run ./cmd/games2

La API escucha por defecto en 127.0.0.1:8082. Se puede elegir otro puerto con GAMES2_API_ADDR. Para usar otro puerto hay que actualizar también el destino del proxy de desarrollo en frontend/vite.config.ts.

En otra terminal:

cd frontend
npm ci
npm run dev

Abre http://127.0.0.1:4174. El frontend consulta /api/v2/catalog a través del proxy local hacia Go. En producción, un proxy HTTPS servirá el frontend estático y enviará /api al backend; esta configuración aún no está desplegada.

Las herramientas para validar contratos del motor y modelos compartidos tienen dependencias propias en la raíz del proyecto:

npm ci
npm run contracts:check

Comprobar:

go test ./...
npm run contracts:check
cd frontend
npm run check
npm run build

Rutas de la primera fase: GET /live, GET /ready, GET /api/v2/bootstrap y GET /api/v2/catalog. Las dos últimas devuelven requestId y data; el catálogo devuelve items: [] y nextCursor: null hasta la primera publicación. No hay rutas de creación o publicación de juegos para usuarios.

Estructura

cmd/games2/               arranque y apagado del proceso Go
internal/api/httpapi/     entrega HTTP y contratos de respuesta
internal/server/          casos de uso y capacidades habilitadas
internal/domain/catalog/  lectura de juegos publicados
internal/domain/          identidad, seguridad, salas, chat y moderación
internal/engine/          núcleo del motor propio
internal/games/           reglas Go propias publicadas internamente
internal/infra/           PostgreSQL y proveedores externos
internal/jobs/            plazos y outbox
frontend/                 aplicación Svelte 5 y Vite
contracts/                índice de contratos ejecutables
db/migrations/            futuras migraciones PostgreSQL
deploy/                   futuro despliegue independiente
docs/platform/            políticas y arquitectura de producto
docs/game-engine/         formato, esquemas y ejemplos del motor propio
docs/ROADMAP.md           próximos hitos y criterios de aceptación

El directorio docs/ contiene una copia de los contratos y propuestas de v2 para trabajar sin depender de archivos de la aplicación anterior. Documentan el destino; las funciones no disponibles siguen marcadas como pendientes. La arquitectura, las políticas, la política de idiomas, el perfil multidispositivo por juego, el objetivo de capacidad y el plan de implementación indican los límites de esta primera fase. La exploración visual no está aprobada; la identidad y los tokens quedan por definir.

La portada inicial es un prototipo visual no aprobado con selector de español/inglés. El catálogo envía Accept-Language; el servidor responde con Content-Language y marca el idioma real de cada ficha. Los juegos publicados, sus reglas y recursos aún deberán cumplir la política de traducción antes de aparecer en el catálogo.

El perfil propuesto de jugadores virtuales permite preparar plazas controladas por agentes IA: cada juego debe declarar esa opción en sus propiedades e incluir las instrucciones versionadas del agente. El motor conserva la validación de reglas y el servidor limita el agente a la información de su asiento. No hay jugadores IA implementados ni soporte de este perfil en los esquemas v1 actuales.

El perfil multidispositivo propone TVBoard (TV pública + mando móvil), Desktop y Mobil (estado autorizado + controles). Distingue mesas por QR sin invitaciones y TV personal tras invitación, con cambio a móvil completo. El perfil de sincronización recoge técnicas de la industria y propone reloj/rondas, acierto en ventana y compensación experimental con empates; aún sin runtime ni esquemas v2 ejecutables.

El perfil común de comunicación prepara mandos web y una app Flutter posterior solo de controles, con las mismas acciones y proyección player-controller. Tableros y vistas completas se representan en la web; el paso a móvil completo desde Flutter abre Mobil web conservando jugador y recibos. Propone HTTPS/WSS, SDK TypeScript/Dart, acceso y controles por runtime, QR y recuperación; sigue siendo diseño, sin app nativa ni binding nuevo implementados.

Los modelos compartidos tienen fuente JSON Schema y DTOs generados para TypeScript, Go y Dart bajo contracts/shared/. Incluyen un núcleo común de error, mensajes, correlación y catálogo. npm run contracts:generate actualiza tipos; contracts:check comprueba deriva, fixtures y relaciones. Go/Dart verifican lectura y serialización del mismo JSON. Los validadores/adaptadores de errores de red se incorporan en los siguientes cortes.

Powered by TurnKey Linux.