Skip to content

josemip98/OrganizeUDiet

Repository files navigation

OrganizeUDiet

Proyecto para la asignatura de Infraestructura Virtual.


Descripción

API para la organización y gestión de tu dieta. ¿Tienes problemas para organizar tu dieta o estás cansado de comer siempre los mismos alimentos? Aquí podrás consultar todo tipo de alimentos junto con su información nutricional (calorías, grasa, proteínas y hidratos) y organizarla a tu gusto, podrás variar entre alimentos que sean parecidos entre sí nutricionalmente y hacer tu dieta más variada.

Una dieta está formada por una lista de productos.

El formato a mostrar del producto será:

  • Nombre -> Información nutricional

La información nutricional consta de:

  • Calorías
  • Grasa
  • Proteínas
  • Hidratos

Despliegue en un PaaS

  • Descripción y justificación de las herramientas usadas para desplegar la aplicación en en PaaS.

  • Descripción correcta de la configuración para despliegue automático, desde el repositorio o desde el sistema de integración continua.

  • Funcionamiento correcto del despliegue en el PaaS (no sólo el status). Es decir, no se puede devolver ningún status 500.

  • Buenas prácticas en el diseño del API, incluyendo su correspondencia correcta con diferentes HUs.

  • Uso correcto de bases de datos y logs dentro del PaaS, incluyendo su justificación y pruebas de prestaciones, así como avance general y grado de terminación de la aplicación.

  • Enlace API


Herramientas

Herramientas y su justificación

  • Lenguaje de programación: JavaScript + Node.js

  • Framework: Express js

  • Herramientas de testing: Jest

  • Despliegue de la aplicación en la nube: Docker

  • Base de datos: MongoDB

  • Sistema de logs: Morgan


Testing

Los tests del proyecto los podemos encontrar en el directorio tests.

En dicho directorio encontramos el fichero dieta.test.js y el fichero producto.test.js

Primero debemos clonar el repositorio: git clone https://github.com/josemip98/OrganizeUDiet

En la carpeta del repositorio descargado instalamos las dependencias y módulos con el comando:

npm install

Lanzamos los tests:

npm test


Herramienta de construcción

He utilizado el gestor de tareas Gulp con su correspondiente Gulpfile.js


Docker


Integración continua

En este fichero explico todo lo relacionado con la integración continua.

Primero he configurado Travis y como sistema de integración continua adicional voy a utilizar Circle CI. Además utilizo en ambos el gestor de tareas Gulp que es el que estoy utilizando en el proyecto. Y aprovecho mi contenedor Docker en el sistema de integración continua Travis.

Travis

Circle CI


Funciones serverless


Microservicios

  • Framework elegido para el microservicio con documentación sobre cómo se usa en la práctica.
  • Diseño en general del API, las rutas (o tareas), tipos devueltos por las peticiones y estados devueltos por las mismas, tests y documentación de todo, justificando como se ajustan a las historias de usuario, de forma que reflejen correctamente un diseño por capas que desacopla la lógica de negocio del API.
  • Uso de buenas prácticas: configuración distribuida, logs, uso de middleware.
  • Tests correctos y de acuerdo con las historias de usuario.

Recopilación de enlaces


Tareas

En este documento se muestran los pasos seguidos para el desarrollo del proyecto.


Historias de usuario

En este apartado se irán añadiendo las historias de usuario

  • HU01. Consultar dieta.
    • Como usuario debo poder consultar el listado de productos que conforman la dieta junto con su información nutricional.
  • HU02 Consultar productos similares.
    • Como usuario, dado un producto debo poder consultar productos nutricionalmente similares.
  • HU03 Consultar producto concreto.
    • Como usuario debo poder consultar un producto concreto perteneciente a una dieta. El formato a mostrar será el producto junto con su información nutricional.
  • HU04 Consultar listado productos.
    • Como usuario debo poder consultar el listado completo de productos. El formato a mostrar será un listado formado por el producto junto con su información nutricional.
  • HU05 Añadir producto a una dieta.
    • Como usuario debo poder añadir un producto nuevo a una dieta.
  • HU06 Modificar producto de una dieta.
    • Como usuario debo poder modificar un producto de una dieta.
  • HU07 Eliminar producto de una dieta.
    • Como usuario debo poder eliminar un producto de una dieta.

Autor


Travis (.com) CircleCI License: GPL v3