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\gallery_service
- 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\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\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\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