Objetivo de esta entrada

Publicamos el código fuente que usamos para la web del crucigrama. El código solo se carga cuando abres un archivo.

Herramientas utilizadas

  • Next.js 15, React 19, TypeScript: sala de espera, sala de juego y API
  • node:sqlite: guardado de las cuadrículas y de los registros de entradas
  • gemma4 en Ollama: diseño de cuadrículas y redacción de pistas. Se llama a través de una API compatible con OpenAI, así que se puede cambiar por otro modelo.
  • RSS de Google Noticias y API de la Wikipedia en coreano: titulares de actualidad y palabras aleatorias
  • Ranking de frecuencias en coreano de OpenSubtitles: niveles de las palabras

Estructura de carpetas

  • lib/puzzle.ts: configuración de dificultad, conversión de la cuadrícula en lista de pistas y comprobación de criterios
  • lib/gridFill.ts: validación y corrección de cuadrículas, cuadrículas dibujadas de antemano, relleno de palabras y el colocador que une palabras
  • lib/dynamicBank.ts: diseño de cuadrículas por la IA, redacción de pistas por la IA, palabras de noticias y de la wiki
  • lib/words.ts, freqRanks.ts: banco de palabras y ranking de frecuencias
  • lib/db.ts: base de datos de registros de partidas, guardado a medias y limpieza de cuadrículas vacías
  • app/page.tsx, app/play/page.tsx: sala de espera y sala de juego
  • app/api: API de cuadrícula nueva, guardado de registros, lista y continuación
  • components/CrosswordBoard.tsx: dibujo de la cuadrícula
  • scripts/text-agent.ts, ai-pipeline-test.ts: herramientas que prueban en texto el generador y el proceso de la IA

Para ejecutarlo, copia .env.local.example como .env.local y escribe la dirección del modelo. Si no hay modelo, las cuadrículas se crean solo con el banco de palabras y las palabras de la wiki. No se incluyen la base de datos de registros de partidas, los scripts de anuncios y despliegue ni el monitor del servidor.

Código fuente completo

32 archivos · 6788 líneas — abre una carpeta y haz clic en un archivo para cargar su código.

Raíz del proyecto4 archivos
.env.local.exampletext · 9 líneas · 319B

Cargando el código…

next.config.tstypescript · 16 líneas · 353B

Cargando el código…

package.jsonjson · 24 líneas · 597B

Cargando el código…

tsconfig.jsonjson · 21 líneas · 592B

Cargando el código…

app/12 archivos
app/api/game/[code]/move/route.tstypescript · 50 líneas · 1KB

Cargando el código…

app/api/game/[code]/route.tstypescript · 51 líneas · 2KB

Cargando el código…

app/api/game/abandon/route.tstypescript · 15 líneas · 522B

Cargando el código…

app/api/game/list/route.tstypescript · 17 líneas · 539B

Cargando el código…

app/api/game/route.tstypescript · 45 líneas · 2KB

Cargando el código…

app/api/puzzle/route.tstypescript · 74 líneas · 2KB

Cargando el código…

app/globals.csscss · 57 líneas · 1KB

Cargando el código…

app/layout.tsxtsx · 34 líneas · 1KB

Cargando el código…

app/page.module.csscss · 225 líneas · 3KB

Cargando el código…

app/page.tsxtsx · 172 líneas · 6KB

Cargando el código…

app/play/page.tsxtsx · 861 líneas · 29KB

Cargando el código…

app/play/play.module.csscss · 425 líneas · 6KB

Cargando el código…

components/2 archivos
components/CrosswordBoard.module.csscss · 83 líneas · 1KB

Cargando el código…

components/CrosswordBoard.tsxtsx · 98 líneas · 3KB

Cargando el código…

lib/10 archivos
lib/db.tstypescript · 433 líneas · 13KB

Cargando el código…

lib/dynamicBank.tstypescript · 360 líneas · 14KB

Cargando el código…

lib/freqRanks.tstypescript · 404 líneas · 8KB

Cargando el código…

lib/gameTypes.tstypescript · 63 líneas · 1KB

Cargando el código…

lib/gridFill.tstypescript · 970 líneas · 32KB

Cargando el código…

lib/guest.tstypescript · 60 líneas · 2KB

Cargando el código…

lib/puzzle.tstypescript · 579 líneas · 17KB

Cargando el código…

lib/recentWords.tstypescript · 33 líneas · 891B

Cargando el código…

lib/services.tstypescript · 88 líneas · 2KB

Cargando el código…

lib/words.tstypescript · 1229 líneas · 88KB

Cargando el código…

scripts/3 archivos
scripts/ai-pipeline-test.tstypescript · 41 líneas · 1KB

Cargando el código…

scripts/dev-with-ts.mjsjavascript · 91 líneas · 2KB

Cargando el código…

scripts/text-agent.tstypescript · 147 líneas · 4KB

Cargando el código…

types/1 archivo
types/node-sqlite.d.tstypescript · 13 líneas · 378B

Cargando el código…