Este proyecto consiste en una API REST desarrollada con Node.js, Express y Prisma, y una aplicación frontend desarrollada con React. A continuación, se detallan los pasos para ejecutar tanto la API REST como la aplicación React, así como para ejecutar los tests correspondientes.
- Requisitos Previos
- Configuración y ejecución del proyecto
- Documentación de la API
- Limitaciones de la API
- Notas adicionales
Antes de comenzar, asegúrate de tener instalado lo siguiente:
- Node.js (v18 o superior)
- npm (viene con Node.js)
- Docker (para ejecutar la base de datos MySQL y Swagger UI)
- Docker Compose (viene con Docker)
-
Clona el repositorio:
git clone https://github.com/facu-alba/afrus-nodejs-challenge cd afrus-nodejs-challenge -
Levanta los servicios con Docker Compose:
sudo docker compose up -d --build
Esto levantará los siguientes servicios: La base de datos MySQL React App disponible en http://localhost:3000. API REST disponible en http://localhost:3001. Swagger UI disponible en http://localhost:8080.
-
Aplica las migraciones de Prisma:
sudo docker exec api_rest npx prisma migrate dev --name init -
Ejecutar los seeders:
sudo docker exec api_rest node database/seeders/seed.js -
Ejecuta los servicios:
sudo docker exec api_rest node src/services/FetchFilteredProductService.js sudo docker exec api_rest node src/services/FetchTransactionsReportService.js
-
Ejecuta los tests unitarios:
sudo docker exec api_rest npm test
-
Ejecuta los tests E2E y de componentes:
cd frontend npx cypress open
La documentación de la API está disponible en Swagger UI. Una vez que la API REST esté en ejecución, accede a: Copy
Aquí podrás ver y probar todos los endpoints disponibles.
La API REST desarrollada en este proyecto no incluye las siguientes funcionalidades:
Autenticación de Usuarios: No se implementó un sistema de autenticación (por ejemplo, JWT, OAuth, etc.). Roles y Permisos: No se manejan roles ni permisos para los usuarios. Rate Limiting: No se limita el número de solicitudes que un cliente puede hacer en un período de tiempo. Caché: No se implementó un sistema de caché para mejorar el rendimiento de las consultas frecuentes.
Base de Datos: La base de datos MySQL se ejecuta en un contenedor de Docker. Los datos persisten en un volumen de Docker.
Variables de Entorno: Asegúrate de configurar correctamente las variables de entorno en los archivos .env.
Prisma: Las migraciones y seeders se ejecutan dentro del contenedor de la API REST.