Skip to content

馃崟馃洅 An e-commerce website to order pizza online design using Full Stack MEAN 馃崟馃洅

Notifications You must be signed in to change notification settings

fgp4321/Ineffabile-Pizza

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Repository files navigation

Ineffabile Pizza

Descripci贸n

Este repositorio contiene el c贸digo fuente de Ineffabile Pizza, una aplicaci贸n web desarrollada con Angular en el frontend y Node.js & Express en el backend.

Destacamos que el backend de la aplicaci贸n est谩 construido con Node.js y Express, mientras que la parte p煤blica de la aplicaci贸n se ha desarrollado utilizando vistas EJS, HTML, CSS y JavaScript. El backoffice de la aplicaci贸n se ha implementado utilizando Angular. Adem谩s, hemos integrado Elasticsearch para mejorar las b煤squedas de productos en la web.

Demo

Home Pizzas Carrito Backoffice

Requisitos

Antes de comenzar, aseg煤rate de tener instaladas las siguientes herramientas:

  • Node.js v14.15.5 o superior (Se recomienda el uso de NVM para gestionar las versiones de Node.js).
  • Docker y Docker Compose para el entorno de desarrollo y despliegue.
  • Insomnia u otra herramienta similar para realizar solicitudes a la API.
  • Angular CLI v13.2 para el desarrollo del frontend.
  • Nodemon (opcional) para facilitar el proceso de desarrollo y compilaci贸n en el backend.

1. Elasticsearch

*Es preferible seguir la gu铆a "Guia-Docker-Elasticsearch.pdf" situada en Elasticsearch/ para realizar todos los pasos.

Para empezar a crear documentos e 铆ndices en elasticsearch se tendr谩n que seguir los siguientes pasos:

  • Levantar servicio: Antes de crear el 铆ndice, levantaremos el servicio de elasticsearch con Docker. Para ello nos situaremos en el directorio elasticsearch-site/ y ejecutaremos: docker-compose up Este comando levantar谩 elasticsearch y estar谩 disponible para realizar b煤squedas. Si hay alg煤n problema puede seguir la gu铆a "Guia-Docker-Elasticsearch.pdf"
- Creaci贸n de 铆ndice:

Para crear el 铆ndice, abriremos nuestra aplicacion para solicitudes API y se copiar谩 todo el contenido de mapping.txt en el JSON del body de la petici贸n y como URL se indicar谩 "http://localhost:9200/productos" en m茅todo PUT. Insomnia permite copiar cURLs para agilizar el proceso. Tambi茅n puede copiar directamente el c贸digo cURL aqui abajo:

curl --request PUT \
  --url http://localhost:9200/productos \
  --header 'Content-Type: application/json' \
  --header 'User-Agent: insomnia/8.6.1' \
  --cookie connect.sid=s%253A6wacH8qx2gVMWcfWV2n8hsUlYPZYDFX6.sqi9fTjQcHWR%252Ff3G7QTfX2PvCjVRtgpvotGLSfC7E%252Bk \
  --data '{
  "settings": {
    "analysis": {
      "analyzer": {
        "custom_lowercase_analyzer": {
          "tokenizer": "standard",
          "filter": ["lowercase", "asciifolding"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "nombre": {
        "type": "text",
        "analyzer": "custom_lowercase_analyzer"
      },
      "categoria_nombre": {
        "type": "text",
        "analyzer": "custom_lowercase_analyzer"
      },
      "descripcion": {
        "type": "text",
        "index": false
      },
      "precio_pvp": {
        "type": "float",
        "index": false 
      },
      "imagen1": {
        "type": "keyword",
        "index": false
      },
      "imagen2": {
        "type": "keyword",
        "index": false
      },
      "imagen3": {
        "type": "keyword",
        "index": false
      }
    }
  }
}
'
  • En caso de haber creado el 铆ndice sin el mapeo, podemos eliminar el 铆ndice copiando el siguiente codigo cURL:
curl --request DELETE \
  --url http://localhost:9200/productos \
  --header 'User-Agent: insomnia/8.6.1' \
  --cookie connect.sid=s%253A3Jq5y6d3pTUfpt15QeS7AbOjQKNFQSuI
  NRDvdU0bVBTncYwOSiWGwimryapHY0OmjsI01FAXmnA
  • Ejecuci贸n de script: Una vez creado el 铆ndice, ejecutaremos el script situado en Elasticsearch/ para indexar todos los documentos en el 铆ndice previamente creado.

Sistemas Linux

./script.sh

Sistemas Windows

script.bat

Para comprobar que todo ha ido correctamente, visitaremos http://localhost:9200/productos/_search o haremos una petici贸n GET a esta URL y se deber铆an de ver todos los productos indexados en JSON.

2. Variables de Entorno

Estando situados en ./Backend, generaremos el archivo .env.example a .env y modificaremos el contenido del archivo para indicar nuestras credenciales.

cp .env.example .env

3. Configuraci贸n del Frontend

  1. Abre una terminal en Frontend/adminCRUD e instala las dependencias.
npm i -force
  1. Una vez que hayas configurado el frontend, puedes ejecutar la aplicaci贸n con el siguiente comando:
npx ng serve

Esto iniciar谩 el servidor de desarrollo frontend y podr谩s acceder a la aplicaci贸n desde http://localhost:4200/ en tu navegador.

4. Configuraci贸n del Backend

  1. Abre una terminal en Backend/ e instala las dependencias.
npm i
  1. Accede a /seeds para poblar las bases de datos:
node usuarios.seed.js && node pedidos.seed.js && node productos.seed.js
  1. Situado en ./Backend, ejecutar el servidor:

Con nodemon (recomendado para desarrollo):

nodemon index.js

Con Node.js:

node index.js

Esto iniciar谩 el servidor de desarrollo backend y podr谩s acceder a la aplicaci贸n desde http://localhost:9100/ en tu navegador.

Si desea ver o probar las APIs funcionales de Ineffabile Pizza, podr谩 visitar la documentaci贸n desde http://localhost:9100/api-docs en tu navegador.

5. Despliegue en producci贸n

  • Este proyecto ha sido desplegado en producci贸n a trav茅s de Vercel pero esta en fase Beta ya que hay algunas funcionalidades que no se realizan correctamente. Actualmente, es solo una versi贸n para ver el UI de Ineffabile Pizza. Pr贸ximamente, se realizar谩n las correcciones correspondientes para que la app funcione correctamente en Vercel.

https://ineffabile-pizza.vercel.app/