Releases: TomasS-R/SimpsonsTrivia
Releases · TomasS-R/SimpsonsTrivia
Release v0.6.0
Version 0.6.0: - 2024-12-26 - 5edf50a
Agregado:
- Archivo deleteUsersAuth que elimina usuarios del sistema de Auth de supabase, este archivo se ejecuta automaticamente y elimina los usuarios anonimos que no se registraron en las ultimas 3 horas, la llamada al cronjob se encuentra en app.
- Ruta account se separo el login y el registro del inicio de la api, para una interfaz mas limpia, asi mismo tambien se separo para que los tokens de los usuarios se creen al momento de ingresar a una pagina especial (como la trivia).
- Variable de entorno nueva SERVICE_ROLE_KEY en .env va a servir para realizar determinadas modificaciones en nuestro proyecto que requieran una key con altos privilegios.
- Token refresh y su configuracion en el archivo tokenRefresh.
- Sesiones anonimas, se crean, modifican y cierran en el archivo sessionHandler que actua como middleware, este middelware se debe colocar en la ruta donde se va a usar (verifyUserSession) y tambien en el registro.
- Conexion con Redis y manejo de conexion en el archivo redisManager los usuarios no registrados pasaran por auth -> redis (almacena dicha informacion temporalmente hasta el registro) -> tabla usuarios supabase.
- Se agrego la ruta /quotes/:id/answer en el archivo routes la cual recibe la respuesta de una pregunta/frase.
- Creado el archivo trivia para poder realizar pruebas con los datos y el frontend del juego.
- Se agrego una nueva tabla en userTables esta tabla va a guardar las imagenes de perfil de los usuarios (estas van a estar almacenadas en supabase storage).
- Los usuarios en esta actualizacion tendran un user tag para en el futuro implementar una busqueda de usuarios de ser necesario, esto se genera en register tomando como referencia el nombre del usuario.
- Se agrego y se mejoro el uso de variables de entorno, a partir de ahora las variables de entorno se llaman 1 sola vez en el archivo config para evitar llamadas repetitivas en diferentes partes del proyecto.
- Creado el flujo del juego (usuarios registrados) con los datos de puntaje: ultimo, maximo, reciente, respuestas: correctas, incorrectas, totales, tiempo promedio en el archivo triviaControllers funcion answerQuestion. (Mas info en el diagrama).
- Agregadas las rutas /gameover, /user/stats (estadisticas de juego X usuario), /user/data (informacion del perfil del usuario con estadisticas de juego) en routes.
- Libreria ioredis para el uso de upstash en package y congigurado en redisManager.
- Archivo queriesRedis para manejar todas las consultas a travez de este archivo, actua de igual forma que el archivo de postgresSQL.
Modificado:
- El archivo app se modifico el applimiter para que pudiera procesar las solicitudes de JMeter sin ningun problema, a partir de ahora deberas configurar en JMeter que el encabezado sea de tipo (nombre) User-Agent y (valor) Apache-HttpClient/4.5.13 para que pueda realizar las pruebas correctamente, de otro modo saltara que haz realizado demasiadas solicitudes.
- Archivo fly el cual a llegar a determinado punto la aplicacion realizara un esalado automatico activando la segunda maquina virtual (VM) y se disminuyo la memoria asignada de 512 > 256 mb.
- A partir de esta actualizacion el login y el registro no seran visibles en produccion solo estaran disponibles en local y en modo desarrollo.
- Ahora en el archivo register si un usuario se registra, automaticamente va actualizar el supabaseUserId para que no haya que crear usuarios de supabase sin sentido.
- Se mejoro la ui del archivo index ahora solo los usuarios en localhost van a poder realizar pruebas y cualquier usuario podra acceder a la documentacion de swaggerDocs desde la ruta principal.
- Se mejoro la documentacion de las rutas en el archivo apiRoutesDoc y se agregaron nuevas rutas.
- Se arreglo la consulta de getQuotesByCharacter en el archivo queries debido a que no devolvia las frases de los personajes correctamente.
- Se arreglo la funcion getRandomQuestion en queries para que ademas de que mostrara los pesonajes tambien envie los id de cada personaje, esto permitira poder manejar y armar el juego de trivia.
- Se establecio un nuevo sistema de seguridad para las rutas, robusteciendo el sistema ya previsto anteriormente en securityRoutes y se redujo la cantidad de intentos de fuerza bruta de 5 a 3 intentos, asi tambien se establecio los nuevos api limiter para endpoints críticos, para el servidor, API con token y API pública.
- Se mejoro el archivo userTables ahora los nombres de las tablas se asignan al comienzo del archivo para evitar romper la estructura de las tablas y asi poder modificarlo de manera mas comoda y rapida.
- Se mejoro el archivo protected, para poder moverse entre los diferentes paneles, se agregaron ls estadisticas del usuario logeado asi como tambien la informacion del perfil del mismo.
Obsoleto:
- Se elimino la tabla users_anonimus de userTables
Release v0.5.7
Version 0.5.7: - 2024-10-23 - a0b3e85
Agregado:
- Supabase Authentication: Se movió la lógica y la autenticación a supabase ya que ofrece una base solida en cuanto a seguridad para login y registro así como también ofrece oAuth con otras apps.
- Se agrego supabaseAuth en triviaControllers para poder obtener determinados datos de la autenticación y así aprobar o no a los usuarios.
- 2 variables de entorno para la conexión con supabase SUPABASE_URL y SUPABASE_ANON_KEY
- Se agrego información en el readme sobre como implementar las nuevas variables de entorno.
- Mas información al momento de logearse/autenticarse en login.
- Dependencia Cookie Parser para manejo de tokens en login y registro.
- Dependencia Zod para mejorar la seguridad y y las validaciones en el registro.
- Dependencia ejs para la implementación y manejo del login y registro.
- Index para poder manejar correctamente la implementación con el front end en cuanto a login y registro.
- Ruta logout para cerrar sesion de la cuenta y ruta protected la cual permite acceder a recursos que solo usuarios registrados/logeados (rol: user) pueden ver en routes.
- Archivo protected en el se podrá ver información solo para usuarios logeados con el rol requerido (user).
- Se genero el archivo authSupabase el cual maneja la conexión con la api de supabase.
- La tabla user_anonimus para una futura implementación de usuarios no logeados que quieran jugar sin tener que perder el progreso en esa sesion, tabla agregada en userTables.
Modificado:
- Se modificaron las rutas protegidas para que funcionen correctamente con supabase en routes.
- Modificado el archivo roleMiddleware para manejar adecuadamente los roles.
- register para el uso correcto con supabase auth.
- Memoria de la virtual machine de flyio reducida de 1024mb a 512mb para evitar costos mayores en la facturacion, cambio realizado en el archivo fly.toml.
- Mejorado la ruta home, ahora se visualiza el login y el registro en esta ruta, así también se mejoro el mensaje con respecto a la redirección de la documentación.
- La tabla usuarios del archivo userTables se cambio el campo password_hash a supabase_user_id y de tipo UUID para conectar los usuarios creados mediante Supabase Auth a los usuarios de la tabla users_trivia.
- Se reestructuro el archivo userTables para que se puedan crear nuevas tablas sin tener que modificar parametros en otros archivos como lo era en el archivo app.
- Se reestructuro la funcion createDatabaseTables del archivo app para que automaticamente detecte las tablas del archivo userTables de esta forma allí se pueden crear muchas tablas y el sistema automaticamente las creara en la base de datos.
- Mejorado y arreglado un bug en queries que no reconocía las tablas al modificar el archivo userTables.
Obsoleto:
- Se elimino el archivo PassportConfig
- Se quito la configuración de JWT de las rutas protegidas
- Se quitaron las dependencias bcryptjs, passport-jwt, passport-local, passport y se remplazaron por el sistema de Supabase.
- Test de verificación de email (esto lo verificara ahora de ahora en adelante supabase).
Release v0.5.6
Version 0.5.6: - 2024-10-11 - aa09f8c
Agregado:
- Dependencia swagger-themes para personalizar la documentacion de swagger (modo oscuro y mas temas) en swaggerDocs
Modificado:
- Agregados mas detalles al momento de hacer deploy y ver en la consola/terminal en app
- Exportada y acortada la routeapi del archivo routes
- Se mejoro la ruta "home" para que muestre correctamente la url segun el entorno de desarrollo en routes
- docker-compose mejorado
- Se arreglo un bug que al consultar la frase y personajes devolvia siempre los mismos 3 personajes erroneos, ahora obtiene 10 personajes y de esos 10 obtiene 3 como incorrectos en el archvio queries
- Corregida la identacion del archivo triviaControllers
- Arreglados los nombres de algunos personajes en characters_simpsons
- Al ejecutar el comando npm run dev se modifico para que antes de ejecutar la api se realicen los tests correspondientes en package
- Todos los usuarios al registrarse/logearse recibiran un token, esta modificacion fue realizada en login y register
Obsoleto:
- Se retiro la implementacion del deploy en render y se transfirio definitivamente a flyio en workflows
Release v0.5.5
Version 0.5.5: - 2024-10-05 -
Agregado:
- Ignorar todo git mediante **/.git en el archivo dockerignore
- Configuracion de Sentry para su uso y reportes en el archivo sentryConfig
- Dependencias de Sentry: @sentry/node y @sentry/profiling-node al archivo package
- 3 variables de entorno en .env CORS_ORIGIN, URLHOST y SENTRY_DSN
- Esquema de funcionamiento y del flujo de la api hacho con excalidraw en readme y en svg
- Archivo fly.toml el cual contiene la configuracion para hacer el deploy en fly.io
Modificado:
- Optimizado el dockerfile
- Agregada la estructura del proyecto en el readme
- El archivo node en el cual se realizo la configuracion para desplegar en fly.io y se comento/quito la configuracion de despliegue en render
- Se cambio en el dockerfile el comando CMD a ENTRYPOINT para una mejor optimizacion
- Realizadas varias modificaciones en el archivo app:
- Se mejoro el manejo de CORS
- Inicializacion de Sentry
- Modificada la funcion de las rutas de setupRoutes > setupRoutesV1
- Se insertaron las rutas del archivo routes dentro de una funcion para su correcto funcionamiento al iniciarse la api.
- Mejorada la logica y el manejo de CORS en app a partir de ahora maneja una o varias rutas
Release v0.4.5
Release v0.4.4
Version 0.4.4: - 2024-09-30 -
Modificado
- Commit de correccion de releases
Release v0.4.3
Version 0.4.3: - 2024-09-30 -
Modificado
- Archivo de release.
- La ruta al ingresar a la home de la api.
Release v0.4.2
Version 0.4.2: - 2024-09-30 -
Important
A partir de esta actualizacion se trabajara en obtener metricas usando sentry y se mejorara la seguridad de la api para hacerla mas robusta en cuestiones de seguridad.
Agregado
- Dependencias eslint, @eslint/js, globals, express-rate-limit, passport, passport-jwt y passport-local en package
- Se creo el archivo eslint el cual contiene la configuracion de eslint para el proyecto.
- Instalada la dependencia CORS para realizar solicitudes sin problema.
- Configurado CORS en el archivo app.
- El comando npm lint al archivo Workflows.
- Mas de 350 frases añadidas al archivo.
- Archivo passportConfig para la autenticacion y proteccion de rutas.
- Se limitaron la cantidad de solicitudes a realizar para controlar mejor la seguridad de la api.
- Se crearon las funciones getUserByEmail y getUserById para la autenticacion mediante passport.
- Archivo securityRoutes para manejar la seguridad de las rutas adecuadamente.
- Medidas de fuerza bruta y limites de intentos a las rutas para evitar colapsar la api.
- Archivo release que se encarga de hacer una release automaticamente cuando el commit contiene un tag asignado, el workflow se encarga de colocar la ultima version del changelog en la release.
- URLHOST en las variables de entorno del archivo env.
- Sistema de roles, se creo un sistema basado en roles para poder acceder a diferentes puntos de los endpoints, el sistema es jerarquico y se implementaron medidas de seguridad adicionales a las rutas.
- Archivo rolesManager clase que se encarga de manejar los roles, asi como tambien las comprobaciones y jerarquia.
- Archivo roleMiddleware se encarga de comprobar si el usuario tiene o no los permisos necesarios para poder realizar consultas/cambios.
Modificado
- Ahora al solicitar las frases por personaje mostrara la cantidad total de frases que tiene ese determinado personaje.
- Readme correcciones varias y agregados nueva info
- Se modificaron los archivos los cuales eslint sugeria arreglos o configuraciones adicionales
- Se arreglaron nombres de personajes
- Se optimizo el archivo Docker
- Se mejoro el archivo de la documentacion de swagger