Git Product home page Git Product logo

recetas-iv's Introduction

IV-App de recetas

Repositorio creado para la asignatura de Infraestructura Virtual, curso 2021/22

El proyecto a abordar es una aplicación de PC dedicada a recetas de cocina a modo de libro de recetas digital.

En esta aplicación se podrán tanto consultar recetas de manera independiente según nuestros gustos, como solicitar a la aplicación que nos diseñe una dieta orientativa de 7 días según nuestras restricciones calóricas, intolerancias, etc.

Se ha abordado el proyecto de esta manera con la idea de darle mas variedad al usuario y no sea simplemente solo una pagina en la consultar recetas.

Se ira actualizando este archivo con los distintos cambios que vaya teniendo el proyecto

Documentación adicional de objetivos

Instalación y uso

Descargar los archivos fuente de este repositorio de manera directa desde github o clonándolo Con el proyecto ya descargado:

  1. Abrimos una terminal en el directorio raíz del proyecto.
  2. Instalamos Invoke con el siguiente comando: pip install invoke
  3. Ahora instalamos las dependencias con el siguiente comando: invoke installdeps
  4. Para correr los test y comprobar que todo funciona bien, escribimos el siguiente comando: invoke test
  • Para comprobar que la sintaxis de los ficheros del módulo que se está ejecutando es la correcta podemos escribir el siguiente comando: invoke check

Contenedor de pruebas

Para la creación del contenedor se ha creado un archivo Dockerfile el cual realiza los pasos necesarios para la correcta creación de dicho contenedor. Como contenedor base se ha optado por el Python3.8-slim-buster, ya que, queremos que nuestro contenedor de test corra con la versión 3.8 de Python y ademas la versión slim-buster hace que el contenedor base no sea muy pesado, lo cual es una gran ventaja, ya que de 378MB que ocupa hacer el contendor con la version Python 3.8 oficial, con slim-buster se queda entorno a los 70/80MB. Dicho contenedor lo utilizaremos para ejecutar nuestros test. La instalación de dependencias, módulos, bibliotecas, etc. Son transparentes al usuario.

para realizar los tests dentro de este contenedor se tendrá que disponer de la herramienta docker en nuestro sistema.

  • Se recomienda hacer pull de este repositorio en DockerHub con la siguiente linea en nuestra terminal: docker pull pablont98/recetas-iv.
  • Tras esto nos descargamos este repositorio desde github y nos posicionamos dentro de el.
  • Por último escribimos lo siguiente en la terminal: docker run -t -v `pwd`:/app/test pablont98/recetas-iv.

Enlace del repositorio en DockerHub pablont98/recetas-iv

Integración continua - Prueba de versiones

Se ha decidido probar las versiones de la 3.6 a la 3.10 de Python, ya que, son todas las versiones que en 2021 son funcionales. Todas esas versiones funcionan correctamente en el proyecto ya que aun no utiliza bibliotecas las cuales no funcionen en versiones como la 3.6 o 3.7. En el futuro, con el avance del proyecto y de su código, posiblemente (seguramente) hagan falta el uso de bibliotecas que no soporten versiones como la 3.6 o 3.7 en ese momento se redefinirá la matrix de la Github Action hasta la versión minima posible (la primera que no de error). Por el momento la versión minima es la 3.6 y la máxima 3.10, que si bien aun no se considera una versión estable, podemos tener cierta certeza de que el código del proyecto escrito por el momento se ejecutará sin problema en esa versión.

Información adicional

  • Se ha elegido Poetry como gestor de dependencias, para así poder ajustarnos a las buenas prácticas de Python las cuales ya no hacen uso de requirements.txt sino de pyproject.toml. La instalación y uso de este será transparente al usuario ya que se instala desde la orden invoke installdeps.
  • A la hora de realizar los test no se han tenido en cuenta aun situaciones como el metodo de elaboración de la receta para el cálculo de calorias y grasas. Ya que la elaboración puede influir en la absorción o perdidas de estos componentes.
  • De momento la unidad de medida de todos los ingredientes es el gramo.

Estos dos últimos puntos se iran resolviendo con el avance del proyecto.

recetas-iv's People

Contributors

pablont98 avatar vlljuan99 avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

vlljuan99

recetas-iv's Issues

Asignación de tipos clase Receta

Como programador considero los siguientes tipos para los atributos del TDA Receta:

Receta:

  • Nombre : String
  • Ingredientes : Ingrediente
  • Tiempo de preparación : int
  • Dificultad : int
  • Elaboración : String
  • Valor calórico : int

Está relacionado con la HU #7.

[HU2] Crear plan de comida para alergias/intolerancias

Como usuario con alergia e intolerancias alimenticia. Debo ser capaz de pedir un plan semanal de comidas a la aplicación. Dado que algunas intolerancias/alergias aparecen en muchas de las comidas mas comunes. La aplicación debe ser capaz de dar alternativas de preparación de estos platos.
Ejemplo: soy alérgico al huevo, la aplicación me enseñará a hacer una tortilla de patatas sin huevos.
En caso de que no haya alternativas de preparación para un plato, se mostrará otro plato diferente en su lugar.

Entendemos por alergia e intolerancia, alimentos/ingredientes prohibidos para el usuario en cuestión.
El plan semanal de comidas comprende una lista de almuerzos y cenas durante siete dias.

Extracción de Vitaminas

Se deberá crear una funcionalidad la cual podamos extraer las vitaminas de una cadena de texto pasada como parámetro para crear un objeto Ingrediente, desechando espacios o comas de dicha cadena y teniendo en cuenta vitaminas con mas de una letra (ejemplo: vitamina B6)

[HU1] Crear dieta

Como usuario fit debo ser capaz de pedir una dieta que se adecúe a las características impuestas por mi. Si la aplicación no es capaz de proporcionar una que cumpla todas las características que le he impuesto, mostrará la que mas cerca este de cumplir mis expectativas.

Dieta: Conjunto de recetas que busca seguir una serie de pautas: número máximo de calorías, intolerancias, etc
Usuario fit: Busca que la aplicación le genere una dieta (orientativa) de 7 días

Elección contenedor base

Se tendrá que elegir un contenedor base para añadir a nuestro archivo Dockerfile el cual será el que queramos que se utilice para cuando se realicen los tests del proyecto.

Creación de la clase Ingrediente

Como programador he considerado necesario el TDA Ingrediente para calcular las calorías que contiene un TDA Receta.

Está relacionado con la HU #7.

Integración Continua para versiones

Como programador, debería disponer de un sistema de integración continua que sea capaz de comprobar las versiones del lenguaje con las que funciona nuestro proyecto.
Para ello habrá que elegir y configurar un servicio de integración continua.

Creación de la clase Receta

Propuesta de la clase Receta en lenguaje Python, voy a añadir los siguientes atributos:

Receta:

  • Nombre
  • Ingredientes -> array de dato tipo Ingrediente
  • Tiempo de preparación
  • Dificultad
  • Elaboración
  • Valor calórico

Está relacionado con la HU #7.

[HU4] Información nutricional de una receta

Como usuario de la aplicación (cualquiera de los usuarios descritos en la documentación del objetivo 1), el programa debe ofrecerme el cálculo de la información nutricional de una receta.
Nos referimos a información nutricional con el cálculo máximo de: calorias, proteínas, hidratos y grasas de la receta en cuestión.
Esta HU esta relacionada con los issues: #24 #25 #26 y #27.
Dicha HU será considerada completada una vez que dichos issues esten completados y a su vez tengamos un Frontend desde el que el usuario pueda acceder a dicha información.

Integración continua para tests

Como programador, debería disponer de un sistema de integración continua que sea capaz de ejecutar de manera automática test cada vez que incorporemos cambios al proyecto.
Para ello habrá que elegir y configurar un servicio de integración continua.

[HU3] Mostrar receta a partir de ingredientes

Como usuario estudiante, quiero introducir los ingredientes que tenga por casa y que la aplicación sepa darme una receta para un plato que pueda hacer con dichos ingredientes.

Ejemplo: Tengo por casa: sal, aceite, salsa de soja, pimienta molida, pimientos, champiñones, brocoli, zanahoria, cebolla y ajos. Introducimos los ingredientes y la aplicación nos mostrará los posibles platos a desarrollar, que en este caso podrían ser: fritura de pimientos o wok de verduras.

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.