Es el API Rest y Scrapper para la WebApp/PWA Sky Scrapper APP para comparar precios de las principales tiendas ventas de mangas en Perú integrado con Web Authentication para el inicio de sesion passworless
Nota : Este es un proyecto con fines educativos sin fines de lucroEstas instrucciones te permitirán obtener una copia del proyecto en funcionamiento en tu máquina local para propósitos de desarrollo y pruebas.
Software requerido
NodeJS >= 16.X
NPM >= 8.X
NestJS >= 9.X
MongoDB >= 6.0
Software opcional
Visual Studio Code ( O el editor de su preferencia)
Para ejecutar un entorno de desarrollo
Previamente ejecutar el comando en la terminal para descargar "node_modules" para el funcionamiento del proyecto
npm install
Previamente a ejecutar el servidor en desarrollo configurar el archivo .env con las credenciales del servidor correos y base de datos , ejecutar :
npm run start:dev
Dirigirse a la ruta http://localhost:3000/ donde tendra el Webhook levantado
Se tiene el archivo env.template
, el cual posee un ejemplo de cada valor de las valores de entorno para poder desplegarlas en nuestro propio ambiente local o cloud
Para generar el build de producción del proyecto ejecutar el siguiente comando:
npm run build
Para desplegar el proyecto mediante Docker tiene el archivo docker-compose.prod.yaml
y la carpeta docker
Las cuales contienen los Dockerfile
y dependencias necesarias para levantar el proyecto
Se dockerizo sobre un servidor de proxy inverso nginx el cual se expone en el puerto 80 por default
Para construir la imagen y ejecutarla tenemos el siguiente comando , el cual tambien tomara nuestras variable de entorno del archivo env
Ejecutar el siguiente comando en la raiz del proyecto
docker compose -f docker-compose.prod.yaml --env-file .env up -d --build
En caso de requerir volver a ejecutar el contenedor del proyecto previamente creado ejecutar el mismo comando
Pre requisitos
En la raiz del proyecto se tiene el archivo sonar-project.properties el cual tiene las propiedades necesarias para ejecutarlo sobre un SonarQube
Configurar los apartados : sonar.host.url , sonar.login sonar.password con los datos de su instancia correspondiente o usar SonarCloud con su token correspondiente
Sonaqube >= 9.X
Las pruebas fueron realizas sobre SonarQube 9.8 para ejecutar el analisis de codigo ejecutar el comando para la instancia local:
npm run sonar
Reporte de SonarQube
Se integro winston para reemplazar el logger de NestJS para realizar seguimiento y conservacion de los logs segun sea requerido
En el archivo .env
se tienen los siguientes apartados configurados por default:
APP_NAME=SKY_SCRAPPER
DATE_PATTERN=YYYY-MM-DD
MAX_SIZE=20m
MAX_DAYS=14d
Por default la carpeta donde se guardan los logs es LOG
, el formato configurado es JSON
Las herramientas utilizadas son:
- NestJS - El framework para construir aplicaciones del lado del servidor eficientes, confiables y escalables.
- NPM - Manejador de dependencias
- Docker - Para el despliegue de aplicaciones basado en contenedores
- Puppeteer - Biblioteca de Node.js que proporciona una API de alto nivel para controlar Chrome/Chromium sobre el protocolo DevTools.
- MongoDb - Motor de base de datos No SQL
- SonarQube - Evaluacion de codigo on premise
- Visual Studio Code - Editor de Codigo
- Prettier - Formateador de Codigo
- WebAuthn - Estándar web del proyecto FIDO2 de la Alianza FIDO
- TabNine - Autocompletador de Codigo
- Winston - Logger para NodeJS
Usamos GIT para el versionado.
- Jaime Burgos Tejada - Developer
- SkyZeroZx
- email : jaimeburgostejada@gmail.com