☞ Proyecto creado con las siquientes tecnologias:
-
MongoAtlas (uso de cluster)
- Cluster : Servidor especializado para mongo al cual me conecto desde mi API, lo que me permite tener la BBDD en la nube y despliego el proyecto en el servidor donde la BBDD esta en la nube
-
Mongoose
-
express
-
node
-
cors
-
dotenv (para variables de entorno)
-
multer
- Para manejar la subida al servidor de carga de archivos a la BBDD almacenamiento, carga de archivos.
- Funciona como un middleware entre la ruta y el controlador
-
Paquete 'express-validator':
- paquete que funciona como middleware en el cual se encarga de hacer un filtro de que la data llegue al controlador de manera 'curada'
-
Libreria 'JWT'
- Para implementar las firmas, las codificaciones, verificaciones
-
Libreria 'bcrypt.js':
- No tiene relacion con el JWT sino que realiza un hash de nuestra clave y lo guarda en nuestra BBDD.
- Se relaciona con el concepto de autentizacion, Auth
-
Sistema de monitorizacion de errores ☞ Slack:
npm i @slack/webhook@6.1.0 -S
- Permite conectar al webhook de slack
- Podemos usar alguna aplicacion para poder monitorizar los errores o algo que me llame la atencion.
- Puedo usar la aplicaciond de slack para que me envie los errores a mi mail
- Instalamos paquete que nos va a ayudar a interceptar todas las peticiones que se realizan en nuestra APP.
- Nos ayuda a estar al pendiente de las respuestas de nuestra api, los datos de entrada y poder filtrar basado en el codigo de encabezado de la peticion http (codigos 200, 400, 300)
- Permite un monitreo en tiempo real de quellas cosas que ocurren en la app (errores, ataques de penetracion, usuario que intenta mucho una clave erronea)
-
morgan - body
-
Libreria sequelize:
- Es una ORM ☞ libreria que te facilita la implementcion de los query para que se conecten a cierto motor de una ddbb
- Funciona con muchos de BBDD
- Link ➡️ https://sequelize.org/
Posee el siguiente modelo de vista de controlador: 💻
-
scaffold: Estructura de carpetas que vamos a user en el proyecto.
-
storage: almacenamiento de documentos
-
utils: utilidades o helpers donde tengo que ayudarme con cambios o acciones repetitivas
-
routes: que serian ese punto de acceso de mi API donde voy a devolver objetos o una propiedad en formato .JSON
-
Gestor de BBDD NO relacional: Mongo. Paquete de node que es mongoose (nos permite conectar con nuestra BBDD de mongo). El gestor de BBDD es -> STUDIO 3T.APP
-
Gestor de BBDD Relacional: Sequelize
-
Carpeta controllers:
- contener la logica de la app
- donde finaliza el usuario
- donde coenctaremos a la BBDD
- donde sumamos y hacemos modificaciones
- CRUD
ℹ️ Estructura del dato que va a existir en la BBDD, ejemplo : coleccion de datos, como van a estar estructurados esos datos. Se creara un modelo por cada una de las colecciones o "tablas" que vamos a usar.
➡️ Models > nosql (modelos relacionados con Mongo)
➡️ Models > sql (modelos relacionados con sql)
➡️ PAYLOAD: La carga útil (payload en inglés) es el conjunto de datos transmitidos, es el mensaje o metadatos, que son enviados simplemente para facilitar la entrega del mensaje.
➤ Que es lo que queremos transmitir ?
➡️ JWT - Auth:
- Metodo de autorizacion entre un front y el backend (node y express)
- Metodo o forma de autorizacion entre ambas partes(front y back)
- JWT: cadena texto / string, que llama al encriptado, compuesto por 3 secciones:
- Roja:
- tipo de encriptacion o algoritmo que se uso para encriptar esto
- Rosa:
- payload carga util normalmente se usa el nombre y el ID del usuario, pero NO data sensible
- Celeste:
- Es la firma
➡️ El hash es la verison encriptada de un String, es la version encriptada de nuestra contraseña
☞ Project created by he following technologies:
-
MongoAtlas (use of cluster) 2.
- Cluster : Specialized server for mongo to which I connect from my API, which allows me to have the DB in the cloud and I deploy the project on the server where the DB is in the cloud.
-
Mongoose
-
express
-
node.
-
cors.
-
dotenv ( for environment variables)
-
multer (for environment variables) 7.
- To handle the upload to the server for uploading files to the DB storage, file upload.
- Functions as a middleware between the route and the driver.
-
Package 'express-validator':
- package that works as middleware in which it is in charge of making a filter that the data arrives to the controller in a 'curated' way.
-
Library 'JWT': 1.
- To implement the signatures, the encodings, verifications.
-
Library 'bcrypt.js':
- It is not related to the JWT but performs a hash of our key and stores it in our DB.
- It is related to the concept of authentication, Auth.
-
Error monitoring system ☞ Slack:
npm i @slack/webhook@6.1.0 -S
- Allows to connect to the slack webhook.
- We can use some application to be able to monitor errors or something that catches my attention.
- We install a package that will help us to intercept all the requests that are made in our APP.
- It helps us to be aware of the responses of our api, the input data and to be able to filter based on the http request header code (codes 200, 400, 300).
- Allows a real time monitoring of those things that happen in the app (errors, penetration attacks, user that tries a lot of wrong key).
-
morgan - body
-
Library sequelize:
- It is an ORM -> library that makes it easy for you to implement queries to connect to a certain ddbb engine.
- It works with many ddbb's.
- Link ➡️ https://sequelize.org/
Model-View-Controller (MVC): 💻
-
scaffold: structure of folders that we are going to use in the project.
-
storage: document storage
-
utils: utilities or helpers where I have to help me with changes or repetitive actions.
-
routes: that would be that access point of my API where I am going to return objects or a property in .JSON format.
-
NON-relational DDBB manager: Mongo. Node package which is mongoose (it allows us to connect to our mongo DB). The DDBB manager is -> STUDIO 3T.APP.
-
Relational DDBB manager: Sequelize.
-
Controllers folder:
- contain the logic of the app
- where the user ends
- where we will connect to the database
- where we add and make modifications
- CRUD
MVC Pattern = MODEL CONTROLLER VIEW
ℹ️ Structure of the data that is going to exist in the DB, example: data collection, how this data is going to be structured. A model will be created for each one of the collections or "tables" that we are going to use.
➡️ Models > nosql (Mongo-related models)
➡️ Models > sql (sql related models)
➡️ PAYLOAD: The payload is the set of transmitted data, that is the message or metadata, which is sent simply to facilitate the delivery of the message.
➤ What do we want to transmit ?
➡️ JWT - Auth:
- Authorization method between a frontend and backend (node and express).
- Authorization method or form of authorization between both parties (front and back).
- JWT = text string / string, which calls the encryption, composed of 3 sections:
- Red: Encryption type or algorithm used to encrypt this 2.
- Pink:
- payload payload normally the user's name and ID is used, but NOT sensitive data 3.
- LigthBlue:
- It is the signature
➡️ The hash is the encrypted verification of a String, it is the encrypted version of our password.