2. Revisión autocrítica - Jacoroch/PocketGymbro-Project GitHub Wiki

Usabilidad

  • Aspectos positivos:
    El sistema cuenta con plantillas HTML que permiten una interacción clara y directa por parte del usuario. La lógica para la generación de rutinas personalizadas está bien estructurada, permitiendo una personalización efectiva de las rutinas de ejercicio basadas en las características individuales del usuario, como su deporte practicado, equipo disponible, edad, entre otros. Además, el uso de Django facilita el manejo de formularios, ofreciendo una experiencia fluida para los usuarios que interactúan con el sistema.

  • Aspectos a mejorar:
    Uno de los puntos a mejorar es el flujo de registro. Actualmente, después de que un usuario se registra, este no es ingresado automáticamente al sistema, lo que afecta la experiencia del usuario al tener que iniciar sesión de nuevo después del registro. Sería conveniente que el sistema inicie sesión automáticamente tras el registro exitoso del usuario, mejorando así la usabilidad.
    Además, los mensajes de validación cuando un formulario no es completado correctamente no son claros, lo que puede generar confusión en el usuario. Implementar mensajes de validación detallados y específicos mejoraría la retroalimentación y la experiencia del usuario durante la interacción con los formularios.

Compatibilidad

  • Aspectos positivos:
    La aplicación, al estar desarrollada con Django, asegura compatibilidad en diversos entornos de desarrollo y servidores, gracias al manejo eficiente de rutas para archivos estáticos y plantillas HTML. Esto permite que la aplicación sea compatible con la mayoría de navegadores modernos sin problemas significativos de visualización o funcionamiento.

  • Aspectos a mejorar:
    Actualmente, la visualización en dispositivos móviles presenta problemas. La aplicación no está completamente optimizada para pantallas de tamaño reducido, lo que afecta la experiencia de usuario en teléfonos y tabletas. Los elementos de la interfaz, como los formularios y las secciones de contenido, no se ajustan correctamente al tamaño de la pantalla, lo que provoca que algunos elementos no sean visibles o que se superpongan, afectando la navegabilidad.

Rendimiento

  • Aspectos positivos:
    La estructura del código y el uso de Django permiten que las vistas respondan de manera eficiente a las solicitudes del usuario. Las rutinas de ejercicio se generan rápidamente y se muestran al usuario en un formato claro y personalizable, lo que optimiza el tiempo de respuesta y la interacción.

  • Aspectos a mejorar:
    No solo la lógica de generación de rutinas está embebida directamente en las vistas, sino que la mayoría de los métodos en views.py, como la creación de dietas diarias y semanales y la creación de rutinas diarias y semanales, también se encuentran altamente acoplados. Esto hace que la aplicación no sea lo suficientemente modular y escalable, lo que impacta negativamente en el rendimiento a medida que aumenta la complejidad del sistema o el número de usuarios.

    • Mejora propuesta: Aplicar la inversión de dependencias en estos métodos, moviendo la lógica de negocio fuera de las vistas hacia servicios dedicados. Esto no solo mejorará la escalabilidad y mantenibilidad del código, sino que también permitirá un mejor rendimiento al separar las responsabilidades de cada componente.

Seguridad

  • Aspectos positivos:
    El proyecto utiliza el sistema de autenticación y manejo de sesiones de Django, que incluye la encriptación de contraseñas y la protección contra ataques de tipo CSRF mediante el uso de tokens en los formularios. Estos aspectos aseguran que el sistema cuente con una base de seguridad sólida para proteger la información de los usuarios.

  • Aspectos a mejorar:
    Un área de mejora clave es el control de intentos de inicio de sesión fallidos, ya que actualmente no se implementan restricciones sobre el número de intentos fallidos que un usuario puede realizar al intentar iniciar sesión. Esto puede exponer el sistema a ataques de fuerza bruta.

    • Mejora propuesta: Implementar un límite de intentos fallidos y un sistema de autenticación de dos factores (2FA) mejoraría significativamente la seguridad del sistema.