Burger Queen - API con Node.js

Banner Merimaithai

Índice

1. Resumen del proyecto

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.

2. Desarrollo del proyecto

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.

2.1. API

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:

/ - /auth

  • GET /
  • POST /auth

home-and-auth

/users

  • GET /users
  • GET /users/:uid
  • POST /users
  • PUT /users/:uid
  • DELETE /users/:uid

users

/products

  • GET /products
  • GET /products/:productid
  • POST /products
  • PUT /products/:productid
  • DELETE /products/:productid

products

/orders

  • GET /orders
  • GET /orders/:orderId
  • POST /orders
  • PUT /orders/:orderId
  • DELETE /orders/:orderId

orders

2.2. CLI

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.

2.2.1 Argumentos de línea de comando

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

2.2.2. Variables de entorno

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 entorno PORT para especificar el puerto. Valor por defecto 8080.
  • 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 con docker-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 es admin@localhost.
  • ADMIN_PASSWORD: Si hemos especificado un ADMIN_EMAIL, debemos pasar también una contraseña para el usuario admin. El valor por defecto es changeme.

3. Tests

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.

tests

4. Despliegue

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/