Un pequeño restaurante de hamburguesas, que está creciendo, necesita un sistema a través del cual puedan tomar pedidos usando una tablet, y enviarlos a la cocina para que se preparen ordenada y eficientemente.Este proyecto tiene dos áreas: interfaz web (cliente) y API (servidor).
Nuestra clienta nos ha solicitado desarrollar la API que se debe integrar con la interfaz, que será desarrollado por otro equipo.
Para este proyecto, el objetivo es construir un servidor web que debe servir JSON
sobre HTTP
, y desplegarlo en un servidor en la nube.
Las desarrolladoras que participaron en la creación de la API fueron Mery Vera, Mairelis Montilla y Thais Illescas.
Para realizar este servidor web, utilizamos el entorno de ejecución de Javascript, Node.js, y su framework Express, los contenedores de Docker y MongoDB como base de datos.
La clienta nos brindó una documentación para armar la API a partir de los requerimientos indicados en ella (endpoints a implementar, parámetros que se esperar y respuestas a brindar).
Según lo establecido por la documentación, la API debe exponer los siguientes endpoints:
GET /
POST /auth
GET /users
GET /users/:uid
POST /users
PUT /users/:uid
DELETE /users/:uid
GET /products
GET /products/:productid
POST /products
PUT /products/:productid
DELETE /products/:productid
GET /orders
GET /orders/:orderId
POST /orders
PUT /orders/:orderId
DELETE /orders/:orderId
La clienta nos solciitó que la aplicación cuente un comando npm start
que se debe encargar de ejecutar nuestra aplicación node y que además pueda recibir información de configuración, como el puerto en el que escuchar, a qué base datos conectarse, etc.
Podemos especificar el puerto en el que debe arrancar la aplicación pasando un argumento a la hora de invocar nuestro programa:
# Arranca la aplicación el puerto 8080 usando npm
npm start 8888
Nuestra aplicación usa las siguientes variables de entorno:
PORT
: Si no se ha especificado un puerto como argumento de lína de comando, podemos usar la variable de entornoPORT
para especificar el puerto. Valor por defecto8080
.DB_URL
: El string de conexión de MongoDB. Cuando ejecutemos la aplicación en nuestra computadora (en entorno de desarrollo), podemos usar una base de datos local (configurada condocker-compose
en nuestro caso).JWT_SECRET
: Nuestra aplicación implementa autenticación usando JWT (JSON Web Tokens). Para poder firmar (cifrar) y verificar (descifrar) los tokens, nuestra aplicación necesita un secreto.ADMIN_EMAIL
: Correo del administrador creado por defecto. El valor por defecto esadmin@localhost
.ADMIN_PASSWORD
: Si hemos especificado unADMIN_EMAIL
, debemos pasar también una contraseña para el usuario admin. El valor por defecto eschangeme
.
Al finalizar el proyecto, los tests - tanto end-to-end como las pruebas unitarias - superaron el mínimo del 90% de statements, functions, lines y branches.
Desplegamos nuestra aplicación en Heroku, la cual está relacionada a una base de Datos en MongoDB Atlas.
El link de nuestra API es el siguiente: https://reg003-bq-api.herokuapp.com/