Proyecto para la asignatura de Infraestructura Virtual.
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
-
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.
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
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
He utilizado el gestor de tareas Gulp con su correspondiente Gulpfile.js
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.
-
Función serverless con Vercel integrada con el proyecto:
-
Función serverless con Netlify integrada con el proyecto:
-
Bot de telegram:
- 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.
- Configuración de git
- Herramientas y su justificación
- Carpeta de documentos
- Carpeta de código fuente
- Carpeta de test
- Fichero package.json
- Fichero gulpfile.js
- Fichero iv.yaml
- Elección Docker
- Dockerfile
- Explicacion dockerfile
- GitHub Container Registry Explicación integración continua
- Fichero configuración Travis
- Fichero configuración Circle CI
En este documento se muestran los pasos seguidos para el desarrollo del proyecto.
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.