Skip to content

Latest commit

 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aplicación de crucigrama

El repositorio tiene la siguiente estructura de carpetas:

.
└── crosswords/
    ├── back/
    │   ├── crosswords/
    │   │   └── ...
    │   └── src/
    │       └── ...
    ├── docs
    ├── front
    ├── 0_palabras_todas.txt
    ├── compose.yml
    ├── dump-ndjson.py
    ├── README.md
    ├── spanish-words.txt
    └── xwords.json
  • back: API de la aplicación hecha con Express que utiliza MongoDB y Elasticsearch
  • back/crosswords: Contiene las plantillas de los crucigramas, las soluciones y las pistas
  • front: Aplicación hecha en React para jugar al crucigrama
  • docs: Documentación del proyecto del crucigrama
  • dump-ndjson: Script que convierte el archivo 0_palabras_todas.txt al formato ndjson
  • xwords.json: Documentos para importar en MongoDB

Prerequisitos

Para arrancar el proyecto tiene que instalar estos compoenetes:

Antes de iniciar el backend o el front ejecuta en la raiz del repositorio:

Linux y Windows

docker compose up -d
docker compose down -v  # Para quitar los contenedores

Una vez iniciado los contenedores:

  1. Importa los crucigramas del archivo xwords.json a la instancia de MongoDB:
docker exec crossword-mongo-1 mongoimport --db=xword --collection=crosswords --file=/data/xwords.json
  1. Puebla elasticsearch con las palabras del diccionario del archivo spanish-words.txt (Tarda aproximadamente 1 minuto):
# En la raiz del repositorio
curl localhost:9200/_bulk/?pretty -X POST -H "Content-Type: application/x-ndjson" --data-binary @spanish-words.txt

Backend

Para ejecutar el servidor de Express tiene que ejecutar dentro de la carpeta back lo siguiente:

cd back # Si ya está en la carpeta back no hace falta ejecutar este comando
npm install   # Descarga las dependencias del proyecto
npm run build  # Transpila el código typescript y lo convierte a javascript, crea una carpeta dist
node dist/index.js

Frontend

Para ejecutar la aplicación de React con Node ejecuta:

Linux y Windows

cd front
npm install
npm run dev

Useful commands

Docker

docker ps -a # List all containers
docker start container
docker stop container

Elasticsearch

Formatear la respuesta json y que se vea bien.

curl localhost:9200/words/_search/?pretty

Buscar palabras con que cumplen el formato

curl -X GET "localhost:9200/words/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "wildcard": {
      "word": {
        "value": "?a?a"
      }
    }
  },
  "size": 20,
  "from": 10
}
'

Poblar índice con documentos en ElasticSearch

curl -X POST http://localhost:9200/_bulk -H "Content-Type: application/json" -d'
{ "index" : { "_index" : "words" } }
{ "word": "sana" }
{ "index" : { "_index" : "words" } }
{ "word": "gana" }
{ "index" : { "_index" : "words" } }
{ "word": "zebra" }
{ "index" : { "_index" : "words" } }
{ "word": "mono" }
{ "index" : { "_index" : "words" } }
{ "word": "portatil" }
'

About

Aplicación de crucigrama

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages