Giter VIP home page Giter VIP logo

nutrimenu's Introduction

NutriMenu

Web app that informs you of the nutritional content of food items on menus.

Development environment

Setting up environment variables

In order to run the app, you need to set some environment variables first. You must create an .env file on docker-compose directory to set up all the necessary variables (replacing the angle brackets strings with your own values, WITHOUT keeping the angle brackets):

# API REST variables
API_WEB_DOCKER_PORT=8080
API_WEB_LOCAL_PORT=8080
API_RELOAD_DOCKER_PORT=35729
API_RELOAD_LOCAL_PORT=35729
API_DEBUG_DOCKER_PORT=5005
API_DEBUG_LOCAL_PORT=5005

# Frontend variables
CHOKIDAR_USEPOLLING=true
VITE_NUTRI_X_APP_ID=<YOUR_APP_ID>
VITE_NUTRI_X_APP_KEY=<YOUR_APP_KEY>
VITE_NUTRI_X_REMOTE_USER_ID=0

#DB variables
DATABASE_HOST=mysqldb
MYSQL_DATABASE=nutri_db
MYSQL_USER=dbadmin
MYSQL_PASSWORD=<YOUR_PASSWORD>
MYSQL_ROOT_PASSWORD=<YOUR_ROOT_PASSWORD>
DB_DOCKER_PORT=3306
DB_LOCAL_PORT=3306

For more information about this variables, you can see the .env.example file on docker-compose directory.

Building and deploying the app

To build and run the app, open a new console, access to the docker-compose directory, and run the following command:

docker compose -f docker-compose.dev.yml build

After the building process is completed you can run the app using the following command:

docker compose -f docker-compose.dev.yml up -d

To stop the app, you can use this command:

docker compose -f docker-compose.dev.yml stop

Or this to completely delete all the containers related to the app:

docker compose -f docker-compose.dev.yml down

For further documentation, please refer to the .pdf files in folder /docs.

Testing the app

When the app first runs, the application is loaded with some sample data. There are 3 users that you can use to access to all the sections of the app:

Administrador user

Username: administrador

Password: administrador1

Editor user

Username: editorubu

Password: editorubu1

Camarero user

Username: camareroubu

Password: camareroubu1

nutrimenu's People

Contributors

alvaromanjon avatar

Stargazers

 avatar

Watchers

 avatar  avatar

nutrimenu's Issues

Investigar sobre mejores fuentes de información nutricional

  • Buscar qué APIs existen para mejorar la información nutricional, ver si se pueden sustituir por los datos existentes, o incluso plantearse combinarlos para tener mejores datos.
  • Investigar sobre indicadores nutricionales, ver cómo han evolucionado en los últimos años comparado con lo descrito en el TFG anterior

Crear una API REST

  • Crear las estructuras de datos principales
  • Lanzar excepciones cuando se intente crear un objeto cuyo ID ya existe
  • Crear una nueva entidad para los usuarios
  • Enlazar usuarios a una empresa
  • Enlazar usuarios a un local
  • Cambiar los roles de los usuarios
  • #25
  • Crear relación entre menús y platos
  • Crear relación entre locales y menús
  • Crear una nueva entidad para los alimentos
  • Crear relación entre alimentos y platos
  • Crear método para almacenar la cantidad de un alimento en un plato en la tabla que las relaciona
  • Añadir componentes de un plato
  • Añadir cabeceras CORS para conectar con el frontend
  • Añadir información de los platos

Desarrollo del apartado "Especificación de diseño"

Desarrollo en los anexos de la especificación de diseño del proyecto.

  • Hacer sección de introducción del apartado
  • Hacer sección del Diseño de datos
  • Hacer sección del Diseño procedimental
  • Hacer sección del Diseño arquitectónico

Implementar GitHub Actions

Añadir CI/CD al proyecto, para así comprobar que todo el código que se ha publicado al repositorio funciona de forma correcta.

Dockerizar la aplicación

Abstraer la aplicación de que sea dependiente de Windows, y dockerizarla para poder desplegarla y ejecutarla en unos pocos segundos, sea en la plataforma que sea.

  • Dockerizar MySQL
  • Dockerizar las webapps + info
  • Cambiar variables para que Spring Boot conecte con MySQL + info
  • Controlar que primero se ejecute la imagen de la DB y después las webapps
  • Hacer que el propio Dockerfile cree la build de Maven para cada una de las webapps

Refactorizar los controllers de la API

Cambiar la forma en la que se pasan los parámetros, tal y como está en la entidad Usuario.

  • Cambiar los métodos update() para que sólo cambien los datos pasados por parámetro
  • Repasar todos los servicios para ver qué hace falta obtener
  • Refactorizar Empresa
  • Refactorizar Local
  • Refactorizar Menu
  • Refactorizar Plato

Mejorar documentación de la parte de contenerización

  • Documentar desde 0 cómo descargar el proyecto y ponerlo en marcha
  • Comprobar qué ocurre si hay cambios en el proyecto a nivel de Docker (cambios en la imagen y/o Dockerfile)
  • Reescribir todo lo que ha cambiado en la parte del backend
  • Cambiar la documentación del propio repositorio

Desarrollo del apartado "Especificación de requisitos"

Desarrollo en los anexos de los requisitos funcionales del proyecto.

  • Hacer introducción del apéndice
  • Hacer apartado de Objetivos generales
  • Hacer apartado de Catálogo de requisitos
  • Hacer apartado de Especificación de requisitos

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.