Skip to content

ailac22/prueba_3D_digital_venue

Repository files navigation

Prueba técnica para 3D Digital Venue

La prueba consiste en realizar tanto el frontend como el backend de un login usando jwt con dos tipos de usuarios: administradores y socios. A pesar de ser una prueba de fullstack, tiene más peso el back. Está realizada con una serie de tecnologias base que venian con el template inicial:

Para su realización he tomado como punto inicial este video de freeCodeCamp y su correspondiente código que ya vi hace unos años, que explica como realizar un login con passport.js y conectarlo a un front angular. Además, se ha implementado un RBAC sencillo y algunos endpoints que se requerian.

He adjuntado también el enunciado. El proyecto se divide en dos partes y cada uno tiene su propio "sub-enunciado": el de front y el de back

API

Hay llamadas de prueba en /src/rest, que se pueden ejecutar con REST Client (extension ID humao.rest-client) de VSCode o con rest.nvim por ejemplo.

Notas

  • El .env esta pusheado deliberadamente
  • En el enunciado hay ambigüedad alrededor de la palabra 'usuario' en cuanto a los roles. A pesar de esto, creo que he hecho la implementación intencionada.
  • Sé que moment.js esta deprecada, pero dado que el proyecto de referencia ya la usaba, he puesto esa

Problemas encontrados en el template

  • Nada más empezar problema al iniciar el docker-compose el proceso mysql llega a 11 GB de memoria, llenando la memoria i el pc se bloqueaba. Sucesivos intentos hacian lo mismo, asi que se ha tenido que Subir de MySql a latest (8.x) y ha funcionado.
  • Algunos cambios al package.json, añadiendo npx delante de comandos
  • Debido a la subida a MySql 8 he tenido que cambiar el package mysql al mysql2 para que funcione la conexión
  • Downgrade en la versión de argon2 a la 0.26.2 porque habia un crash en la versión que venia en el package.json y en la latest. En un entorno real hubiera cambiado de lib porque las libs de crypto no deben estar desactualizadas, pero aquí da igual.
  • Añadidas muchas declaraciones de tipos
  • No se esta usando strict: true en el tsconfig, pero eso no lo he cambiado porque aparecen demasiados errores en la plantilla
  • Faltaba el handling del preflight de CORS para OPTIONS

algunas de las dificultades encontradas

  • Habia un bug en el proyecto referencia relacionado con el iat del JWT que impedia la correcta expiración del token

About

Prueba técnica para 3D Digital Venue

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published