Skip to content

TupacGodoy/GastroIngenio

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

273 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gastroingenio

Que es Gastroingenio?

GastroIngenio es una innovadora página web diseñada para facilitar el acceso a recetas de cocina de todo tipo. Esta plataforma está orientada a usuarios que buscan mejorar sus habilidades culinarias o descubrir nuevas ideas para sus menús diarios. A través de una interfaz intuitiva y atractiva, GastroIngenio ofrece una experiencia completa, desde la búsqueda de recetas hasta la visualización detallada de ingredientes y pasos de preparación.

Docker

Si desea ejecutar este proyecto, es necesario instalar Docker y Docker Compose para poder correr los contenedores que incluyen la base de datos y el frontend del proyecto. Para asegurarnos de que se alla descargado introduciremos los siguientes comandos en la terminal:

docker version

debe aparacer lo siguiente:

App Screenshot

Y cuando ingresamos este comando:

docker compose version

debe aparacer lo siguiente:

App Screenshot

Si se cumple lo mostrado anteriormente podemos continuar.

Backend

El proyecto está respaldado por un robusto backend donde se emplea un servidor Express.js, que gestiona las solicitudes y respuestas de la aplicación, asegurando una estructura de rutas flexible y optimizada para el manejo de las recetas. Se implementa el uso de CORS para permitir el acceso controlado a recursos desde diferentes dominios. Por otro lado, tambien usamos dotev donde permite cargar las variables de entorno desde un archivo .env. Y por ultimo, El paquete pg nos permite interactuar con la base de datos PostgreSQL

como se inicia el backend?

1- Debemos asegurarnos que las dependencias se encuentren en el proyecto.

Vamos al siguiente directorio: GastroIngenio/backend. Y asegurese de que las dependencias aparezcan en tu archivo package.json.

App Screenshot

Dependencias:

  • cors
  • dotenv
  • express
  • pg

Si no están instaladas, puedes ejecutarlas con el siguiente comando en la teminal (una por una):

npm install (dependencia)

Por ejemplo:

npm install cors

Complete la instalacion con cada una de las dependecias hasta que aparecan todas en el anterior archivo mencionado.

2- Levantamos el contenedor que contiene la base de datos usando el siguiente comando, desde la terminal, en el directorio donde se encuentra el docker-compose.yml del backend.

Directorio: GastroIngenio/backend

docker compose up -d

App Screenshot

3- Ingresamos a la base de datos ingresando los siguientes comandos.
Ejecutamos el container donde se encuentra la base de datos

docker exec -it bd_gastroingenio bash

App Screenshot

Luego accedemos a la base de datos con el siguiente comando

psql -U postgres -d gastroingenio

App Screenshot

4- Las tablas y la estructura de la base de datos están definidas en el archivo schemas.sql. Asegúrate de ejecutar las sentencias SQL para crear las tablas necesarias.

CREATE TABLE usuarios (id SERIAL PRIMARY KEY, nombre VARCHAR(30) NOT NULL, apellido VARCHAR(30) NOT NULL, edad INTEGER NOT NULL, usuario VARCHAR(30) UNIQUE NOT NULL, contrasena VARCHAR(50) NOT NULL, foto_perfil TEXT);

CREATE TABLE recetas (id SERIAL PRIMARY KEY, id_usuario INTEGER NOT NULL REFERENCES usuarios(id) ON DELETE CASCADE, nombre VARCHAR(50) NOT NULL, ingredientes TEXT[] NOT NULL, descripcion TEXT NOT NULL, tiempo_preparacion INTEGER CHECK (tiempo_preparacion >= 0), comensales INTEGER CHECK (comensales > 0), imagen_url TEXT, fecha_creacion TIMESTAMPTZ DEFAULT NOW(), elegida_comunidad BOOLEAN DEFAULT FALSE);

CREATE TABLE pasos (id SERIAL PRIMARY KEY, id_receta INTEGER NOT NULL REFERENCES recetas(id), numero_paso INTEGER NOT NULL, descripcion TEXT NOT NULL, imagen_url TEXT);

CREATE TABLE comentarios (id SERIAL PRIMARY KEY, id_usuario INTEGER, id_receta INTEGER, descripcion TEXT NOT NULL, likes INTEGER DEFAULT 0, dislikes INTEGER DEFAULT 0, puntaje INTEGER DEFAULT 0, FOREIGN KEY (id_usuario) REFERENCES usuarios(id), FOREIGN KEY (id_receta) REFERENCES recetas(id));

5- (opcional) Si quiere agregar registros de prueba para la base de datos, ingrese lo siguiente a la misma:

INSERT INTO usuarios (nombre, apellido, edad, usuario, contrasena, foto_perfil) VALUES ('Carlos','García',28,'carlosg','pass1234','https://randomuser.me/api/portraits/men/1.jpg'),('María','López',34,'marialopez','securePass!1','https://randomuser.me/api/portraits/women/2.jpg')

INSERT INTO recetas (id_usuario, nombre, ingredientes, descripcion, tiempo_preparacion, comensales, imagen_url) VALUES (1,'Tacos de Carnitas',ARRAY['cerdo','tortillas','cebolla','cilantro','limón'],'Deliciosos tacos de cerdo confitado al estilo mexicano.',60,4,'https://images.unsplash.com/photo-1552332386-f8dd00dc2f85')

INSERT INTO comentarios (id_usuario, id_receta, descripcion, likes, dislikes, puntaje) VALUES (2,1,'Increíbles, la carne quedó súper jugosa. Los hago cada semana.',18,0,5),(3,1,'Le agregué chile de árbol y quedaron perfectos.',12,1,5);

INSERT INTO pasos (id_receta, numero_paso, descripcion, imagen_url) VALUES (1,1,'Cortar el cerdo en trozos y sazonar con sal, ajo y jugo de naranja.','https://images.unsplash.com/photo-1604908176997-125f25cc6f3d');

Al finalizar con la base de datos ingrese "exit" dos veces para salir de la base de datos y de su contenedor de docker.

6- Una vez configurada la base de datos, abri otra terminal en el directorio del backend y ejecuta el siguiente comando para levantar el servidor del backend.

Directorio: GastroIngenio/backend

npm run dev

App Screenshot

Con esto ya tendriamos el backend.

Frontend

1- Levantamos el contenedor que contiene el Frontend con el siguiente comando en el directorio raiz.

docker-compose up -d

App Screenshot

2- Ingresamos en esta URL desde un navegador.

http://localhost:8080/

Con todos estos pasos hechos, usted podra acceder al proyecto e interactuar con el.

About

Pagina web para recetas ingeniosas.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 43.8%
  • HTML 30.8%
  • CSS 25.3%
  • Dockerfile 0.1%