Click aca para ver la resolución
node src/app.js --modo=CLUSTER
node src/app.js --modo=FORK
Tambien se puede ejecutar por defecto utilizando el comando:
npm run start
- Existencia de metodos para trabajar con el registro y login del usuario almacenando información importante que permita trabajar de forma correcta, adicionalmente se agrega JWT para manejar tokens que permiten la ejecución de otros servicios dentro de la aplicación.
- Se desarrolla un mantenedor de productos para el ecommerce donde existen metodos publicos como visualizacion de producto en especifico, productos en general y productos por categoria a los cuales cualquiera puede acceder, por otra parte, se implementaron metodos privados que utilizan el token generado una vez el usuario se encuentre logueado o este se haya registrado con exito.
- Los metodos del carrito funcionan exclusivamente con usuarios logeados que permite agregar productos al carrito, listar los productos que este tiene y eliminar de forma total el producto en el carrito o de forma unitaria.
- De igual forma que el punto anterior, generar una orden requiere que el usuario se encuentre logueado, permitiendo que se pueda concretar una orden asignandole un id de pago a esta lo cual enviara un correo al administrador especificando los productos en la compra.
- El proyecto es sólo backend y no se ha aplicado ningún metodo a una aplicación web.
- El servidor trabajará con una base de datos DBaaS (en este caso MongoDB) y estará preparado para trabajar de forma local o en la nube a través de la plataforma PaaS Heroku (F⚰).
- Habilitar el modo cluster para el servidor, como opcional a través de argumentos. Utilizar alguno de los loggers ya vistos y así reemplazar todos los mensajes a consola por logs eficientes hacie la misma consola. En el caso de errores moderados ó graves el log tendrá además como destino un archivo elegido.
- Para este desafio se utilizó para el almacenamiento de la base de datos MongoDB
- De acuerdo con lo explicado por el profesor durante la clase, para este desafio no era necesario el desarrollo de la interfaz grafica, solo manejo de los metodos por Postman 👨🚀
- Un usuario solo se puede registrar una vez con el mismo correo electronico.
- La contraseña ingresada por el usuario queda almacenada en la base de datos MongoDB utilizando la libreria Bcrypt, de igual forma la validación del login se realiza con la misma libreria.
- Se utiliza la libreria Nodemailer para el envio de correo electronico al administrador una vez se registra un usuario y cuando se realiza una compra de forma exitosa.
- Se modificaron los metodos del carrito para que este solamente se pueda crear a usuarios registrados (sólo para validar por el momento).
- De igual forma para confirmar la compra se debe ingresar el id del carrito y el id del usuario.
- Se utiliza la libreria Log4js para el manejo de información en la consola de la aplicación guardando los los errores y advertencias en distintos archivos.
- Se utiliza Twilio para el envio de mensajes de texto al usuario una vez este haya realizado una compra de forma exitosa y un mensaje de Whatsapp al administrador informando el nombre del usuario y correo electronico con el que realizaron la compra.
- Adicionalmente se agrego la libreria Yargs 🏴☠️ para que se pueda ingresar el modo en el que se quiera ejecutar la aplicación, sea CLUSTER o FORK:
node src/app.js --modo=CLUSTER
node src/app.js --modo=FORK
Tambien se puede ejecutar por defecto utilizando el comando:
npm run start