- NodeJS
- MySQL
- expressjs : micro-framework para construcción de aplicaciones en NodeJS.
- sequelize: ORM. Herramienta que genera la conexión con la base de datos y provee métodos comunes para todos los datos.
- jwt: JSON Web Token. La autenticación de la aplicación utiliza tokens JWT verificar la autenticación de un usuario.
- Usualmente utilizaria una biblioteca de autenticación o una tabla en la base de datos para controlar los tokens/sesiones de los usuarios. Por tiempo y por todas las funcionalidades adicionales que esto incluye decidí no implementar esto. Esto hace que los tokens no sean revocados aún así cuando el usuario haga logout desde el frontend. En este caso, tocaría esperar que el token expire.
- Usualmente utilizaria servicios como S3 de AWS o Blob Storage de Azure para subir archivos. En este caso, los archivos quedan de forma local en la API en la carpeta
uploads
.
- Por tiempo, decidí solo realizar algunos tests automatizados.
- Usualmente utilizo migrations para hacer cambios en la base de datos. En esta ocasión, decidí irme por algo más rápido, utilizando la función
sync
de sequelize que edita la base de datos a medida que el model va cambiando.
- api/
- controllers: aquí están los controladores de nuestra aplicación. Los controladores son responsables únicamente por recibir los parámetros / body del request, llamar un servicio y retornar u objeto y/o estatus.
- middlewares: aquí están los middlewares. Lógica que está entre la petición y el controller. Aquí se crean validaciones de diferentes tipos.
- routes: todos los endpoints están aquí.
- services: la capa de Servicio, también conocida como Business, contiene las reglas de negocio y la lógica de nuestra aplicación. Es llamada por el controller.
- utils: adentro están todas las funciones utilitarias o helpers de la aplicación.
- db/
- models: aquí están los models de nuestra aplicación. Los modelos reflejan la estructura de nuestra base de datos.
- repository: la capa de Repositorio es la encargada de comunicarse con la base de datos. Esta capa es llamada por la capa de Servicio o Service.
- NodeJS: versión 12 o mayor
- yarn: para instalar ejecuta
npm i -g yarn
- MySQL: versión 5 u 8
- Crear una base de datos en tu servidor MySQL local con el nombre
beyond_social
. O ejecutando el scriptCREATE SCHEMA `beyond_social` DEFAULT CHARACTER SET utf8mb4 ;
. - Copiar el archivo
.env.example
y renombrearlo como.env
o.env.local
.- Reemplazar los valores (
DB_HOST
,DB_PORT
,DB_USER
,DB_PASSWORD
) con los valores de tu servidor de MySQL. - Coloca un valor secreto en la key
APP_SECRET_KEY
(puede ser cualquier string). Esta llave es utilizada para generar los tokens de autenticación.
- Reemplazar los valores (
- Instala las dependencias de node, ejecutando
yarn
onpm i
.
Para ejecutar la API en modo desarrollo, ejecuta en tu consola yarn dev
o npm run dev
.
Deberías ver un mensaje en la consola con la URL de la API.
Inicia el servidor de desarrollo. Este servidor se actualiza con cada cambio.
Realiza el build de la aplicación.