CubeX - TFG

CubeX es una aplicación multiplataforma desarrollada como parte del Trabajo de Fin de Grado (TFG). Su objetivo es ofrecer una herramienta profesional para el entrenamiento y seguimiento de tiempos en la resolución de cubos de Rubik, adaptada tanto a principiantes como a usuarios avanzados.


Descripción general

Esta aplicación está pensada para speedcubers que desean registrar, analizar y mejorar sus tiempos de resolución. Integra un cronómetro preciso, generación automática de scrambles válidos según el tipo de cubo (3x3, Skewb, Megaminx, etc.), gestión de penalizaciones, estadísticas visuales y exportación de datos. Además de ofrecer diferentes opciones para mejorar la experiencia del usuario, tanto personalizando los elementos de la aplicación como implementando funcionalidades de internacionalización, ofreciendo dos idiomas (español, inglés), y funcionalidades de accesibilidad.

Durante su desarrollo, se han abordado aspectos clave como:

  • Generación aleatoria de scrambles según reglas específicas.
  • Diseño de una interfaz adaptable y accesible.
  • Persistencia de datos mediante Supabase (base de datos en la nube).
  • Autenticación con confirmación por correo electrónico.
  • Gráficas de evolución para seguimiento de progreso diario, mensual y anual.

Objetivos del proyecto

Objetivos principales

  • Desarrollar un temporizador avanzado con gestión de penalizaciones, scrambles aleatorios y estadísticas.
  • Aplicar conocimientos técnicos adquiridos: desarrollo multiplataforma, bases de datos y autenticación.
  • Crear una aplicación estable y funcional en distintas plataformas.

Objetivos secundarios

  • Diseñar una interfaz atractiva e intuitiva, visualmente bonita y accesible para todos los perfiles de usuario.
  • Facilitar el seguimiento del progreso, mediante gráficas evolutivas y estadísticas detalladas.

Funcionalidades principales

  • Gestión completa de tiempos de resolución (añadir, eliminar, editar).
  • Penalizaciones personalizadas: +2, DNF, sin penalización.
  • Búsquedas por tiempo o comentarios.
  • Gestión de tipos de cubo y sesiones independientes.
  • Generación automática de scrambles según el tipo de cubo.
  • Exportación de sesiones en PDF y opción de compartir desde la app.
  • Registro de usuarios y login con verificación por email.
  • Edición y personalización del perfil del usuario.
  • Estadísticas visuales por sesión (PB, medias, penalizaciones, tiempo total, etc.).
  • Opciones avanzadas: sonidos, vibraciones, inspección, visibilidad, etc.
  • Notificaciones diarias.

Tecnologías utilizadas

  • Flutter y Dart: para el desarrollo de la app multiplataforma (Android, iOS, Windows, macOS, Linux).
  • Supabase: como backend para base de datos, autenticación y almacenamiento.
  • Figma: para el diseño visual y prototipado de la interfaz.
  • Git y GitHub: control de versiones y gestión del proyecto (GitHub Projects).
  • IntelliJ IDEA: como entorno de desarrollo principal.

Documentación


📜 Licencia

© 2024/2025 Estela de Vega Martín
Este proyecto se encuentra bajo la licencia Copyright 2024/2025, y está protegido por los derechos de autor. El acceso es público para su revisión, pero no se permite la modificación ni redistribución sin permiso expreso.


Proyecto final desarrollado como última parte del ciclo formativo de grado superior en desarrollo de aplicaciones multiplataforma (DAM).

Estela de Vega Martín | IES Ribera de Castilla

Libraries

data\dao\cubetype_dao
data\dao\session_dao
data\dao\supebase\cubetype_dao_sb
data\dao\supebase\session_dao_sb
data\dao\supebase\time_training_dao_sb
data\dao\supebase\user_dao_sb
data\dao\time_training_dao
data\dao\user_dao
data\database\database_helper
data\database\supabase_helper
main
model\app_notification
model\configuration_timer
model\cubetype
model\notification_service
model\session
model\start_guide\guide_step
model\start_guide\highlight_position
model\start_guide\mascot_position
model\time_training
model\user
view\components\appbar_class
view\components\card_time_historial
view\components\cube_header_container
view\components\cube_type_menu
view\components\double_tap_exit_dialog
view\components\Icon\animated_icon
view\components\Icon\icon
view\components\icon_image_fieldrow
view\components\password_field_row
view\components\scramble_container
view\components\search_time_container
view\components\session_menu
view\components\settings_container
view\components\settings_option\option_switch_tile
view\components\start_guide\start_guide_component
view\components\statistics\average_analysis_container
view\components\statistics\general_statistics_container
view\components\statistics\graphic_performance_container
view\components\tooltip\animated_tooltip
view\components\tooltip\tooltip_suggestion
view\components\tooltip\triangle_painter
view\components\waves_painter\alert_record_wave
view\components\waves_painter\drawer_wave
view\components\waves_painter\small_wave_container_painter
view\components\waves_painter\wave_container_painter
view\navigation\app_drawer
view\navigation\bottom_navigation
view\screen\about_app_screen
view\screen\historial_screen
view\screen\intro_screen
view\screen\login_screen
view\screen\my_profile_screen
view\screen\settings
view\screen\settings_options\advanced_options_screen
view\screen\settings_options\configure_inspection_screen
view\screen\settings_options\configure_timer_screen
view\screen\settings_options\manage_disabled_notification_screen
view\screen\settings_options\manage_notification_screen
view\screen\settings_options\notification_screen
view\screen\show_time_screen
view\screen\signup_screen
view\screen\statistics_screen
view\screen\timer_screen
view\utilities\alert
view\utilities\app_color
view\utilities\app_styles
view\utilities\change_screen
view\utilities\encrypt_password
view\utilities\internationalization
view\utilities\pdf_generator
view\utilities\scramble_generator
view\utilities\validator
viewmodel\current_cube_type
viewmodel\current_scramble
viewmodel\current_session
viewmodel\current_statistics
viewmodel\current_time
viewmodel\current_usage_timer
viewmodel\current_user
viewmodel\settings_option\current_configure_timer
viewmodel\settings_option\current_language
viewmodel\settings_option\current_notifications