# πŸ“‚ Estructura del Proyecto MotΓ­vame ``` Motivame/ β”‚ β”œβ”€β”€ πŸ“„ README.md # DocumentaciΓ³n completa del proyecto β”œβ”€β”€ πŸ“„ QUICKSTART.md # GuΓ­a de inicio rΓ‘pido β”œβ”€β”€ πŸ“„ TESTING.md # GuΓ­a de pruebas detallada β”œβ”€β”€ πŸ“„ RESUMEN.md # Resumen de implementaciΓ³n β”œβ”€β”€ πŸ”§ build.gradle.kts # ConfiguraciΓ³n del proyecto β”œβ”€β”€ πŸ”§ settings.gradle.kts # ConfiguraciΓ³n de mΓ³dulos β”œβ”€β”€ πŸ”§ gradle.properties # Propiedades de Gradle β”œβ”€β”€ πŸ”§ gradlew # Script Gradle (Linux/Mac) β”œβ”€β”€ πŸ”§ gradlew.bat # Script Gradle (Windows) β”œβ”€β”€ πŸ”§ local.properties # ConfiguraciΓ³n local β”œβ”€β”€ πŸ“œ install.sh # Script de instalaciΓ³n automΓ‘tica β”‚ β”œβ”€β”€ gradle/ # ConfiguraciΓ³n de Gradle β”‚ β”œβ”€β”€ libs.versions.toml # Versiones centralizadas β”‚ └── wrapper/ β”‚ β”œβ”€β”€ gradle-wrapper.jar β”‚ └── gradle-wrapper.properties β”‚ └── app/ # MΓ³dulo principal de la aplicaciΓ³n β”œβ”€β”€ πŸ”§ build.gradle.kts # ConfiguraciΓ³n del mΓ³dulo app β”œβ”€β”€ πŸ”§ proguard-rules.pro # Reglas de ofuscaciΓ³n β”‚ β”œβ”€β”€ src/ β”‚ β”œβ”€β”€ main/ β”‚ β”‚ β”œβ”€β”€ πŸ“„ AndroidManifest.xml # Manifest con permisos β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ java/com/manalejandro/motivame/ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ πŸ“± MainActivity.kt # Actividad principal β”‚ β”‚ β”‚ β”‚ # - NavegaciΓ³n entre pantallas β”‚ β”‚ β”‚ β”‚ # - ConfiguraciΓ³n de WorkManager β”‚ β”‚ β”‚ β”‚ # - CΓ‘lculo de delay inicial β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ data/ # Capa de datos β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ πŸ“¦ Task.kt # Modelo de tarea β”‚ β”‚ β”‚ β”‚ β”‚ # - id, title, goals, isActive β”‚ β”‚ β”‚ β”‚ └── πŸ’Ύ TaskRepository.kt # Repositorio de datos β”‚ β”‚ β”‚ β”‚ # - DataStore para persistencia β”‚ β”‚ β”‚ β”‚ # - CRUD de tareas β”‚ β”‚ β”‚ β”‚ # - Tareas predeterminadas β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ notifications/ # Sistema de notificaciones β”‚ β”‚ β”‚ β”‚ └── πŸ”” NotificationHelper.kt # Helper de notificaciones β”‚ β”‚ β”‚ β”‚ # - Crear canal β”‚ β”‚ β”‚ β”‚ # - Enviar notificaciones β”‚ β”‚ β”‚ β”‚ # - VibraciΓ³n y sonido β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ ui/ # Interfaz de usuario β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ screens/ # Pantallas β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ πŸ“± MainScreen.kt # Pantalla principal β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ # - Lista de tareas β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ # - TaskCard componente β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ # - EmptyState β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ # - FAB agregar β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ βž• AddTaskScreen.kt # Pantalla agregar tarea β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ # - Formulario de tarea β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ # - Agregar metas β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ # - Lista de metas β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ # - ValidaciΓ³n β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── βš™οΈ SettingsScreen.kt # Pantalla configuraciΓ³n β”‚ β”‚ β”‚ β”‚ β”‚ # - Toggle notificaciones β”‚ β”‚ β”‚ β”‚ β”‚ # - Toggle sonido β”‚ β”‚ β”‚ β”‚ β”‚ # - BotΓ³n prueba β”‚ β”‚ β”‚ β”‚ β”‚ # - Permisos runtime β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ theme/ # Tema de la app β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ 🎨 Color.kt # Paleta de colores β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ # - Colores primarios β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ # - Modo claro/oscuro β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ 🎨 Theme.kt # Tema Material 3 β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ # - ColorScheme β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ # - MotivameTheme composable β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── πŸ“ Type.kt # TipografΓ­a β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── viewmodel/ # ViewModels β”‚ β”‚ β”‚ β”‚ └── 🧠 TaskViewModel.kt # ViewModel principal β”‚ β”‚ β”‚ β”‚ # - Estado de tareas β”‚ β”‚ β”‚ β”‚ # - Operaciones CRUD β”‚ β”‚ β”‚ β”‚ # - ConfiguraciΓ³n β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── worker/ # Workers β”‚ β”‚ β”‚ └── ⏰ DailyReminderWorker.kt # Worker de recordatorios β”‚ β”‚ β”‚ # - EjecuciΓ³n diaria β”‚ β”‚ β”‚ # - EnvΓ­o de notificaciones β”‚ β”‚ β”‚ # - VerificaciΓ³n de config β”‚ β”‚ β”‚ β”‚ β”‚ └── res/ # Recursos β”‚ β”‚ β”œβ”€β”€ drawable/ # Drawables β”‚ β”‚ β”‚ β”œβ”€β”€ ic_launcher_background.xml β”‚ β”‚ β”‚ └── ic_launcher_foreground.xml β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ mipmap-*/ # Iconos de launcher β”‚ β”‚ β”‚ β”œβ”€β”€ ic_launcher.webp β”‚ β”‚ β”‚ └── ic_launcher_round.webp β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ values/ # Valores β”‚ β”‚ β”‚ β”œβ”€β”€ colors.xml β”‚ β”‚ β”‚ β”œβ”€β”€ strings.xml # Textos de la app β”‚ β”‚ β”‚ └── themes.xml β”‚ β”‚ β”‚ β”‚ β”‚ └── xml/ # XMLs varios β”‚ β”‚ β”œβ”€β”€ backup_rules.xml β”‚ β”‚ └── data_extraction_rules.xml β”‚ β”‚ β”‚ β”œβ”€β”€ androidTest/ # Tests instrumentados β”‚ β”‚ └── java/com/manalejandro/motivame/ β”‚ β”‚ └── ExampleInstrumentedTest.kt β”‚ β”‚ β”‚ └── test/ # Tests unitarios β”‚ └── java/com/manalejandro/motivame/ β”‚ └── ExampleUnitTest.kt β”‚ └── build/ # Archivos generados └── outputs/ └── apk/ └── debug/ └── app-debug.apk # πŸ“¦ APK compilado ``` --- ## πŸ“Š Resumen de Componentes ### 🎯 Archivos Principales de CΓ³digo (12) | Archivo | LΓ­neas | Responsabilidad | |---------|--------|-----------------| | MainActivity.kt | ~90 | NavegaciΓ³n y WorkManager | | Task.kt | ~10 | Modelo de datos | | TaskRepository.kt | ~140 | Persistencia DataStore | | TaskViewModel.kt | ~80 | LΓ³gica de negocio | | MainScreen.kt | ~230 | UI pantalla principal | | AddTaskScreen.kt | ~220 | UI agregar tarea | | SettingsScreen.kt | ~220 | UI configuraciΓ³n | | NotificationHelper.kt | ~90 | Sistema notificaciones | | DailyReminderWorker.kt | ~30 | Worker recordatorios | | Color.kt | ~30 | Paleta de colores | | Theme.kt | ~80 | Tema Material 3 | | Type.kt | ~15 | TipografΓ­a | ### πŸ“š DocumentaciΓ³n (4 archivos) | Archivo | PropΓ³sito | |---------|-----------| | README.md | DocumentaciΓ³n tΓ©cnica completa | | QUICKSTART.md | GuΓ­a de inicio rΓ‘pido | | TESTING.md | Casos de prueba | | RESUMEN.md | CaracterΓ­sticas implementadas | ### πŸ”§ ConfiguraciΓ³n (5 archivos) | Archivo | Contenido | |---------|-----------| | build.gradle.kts | Dependencias del mΓ³dulo app | | libs.versions.toml | Versiones centralizadas | | AndroidManifest.xml | Permisos y componentes | | strings.xml | Recursos de texto | | install.sh | Script de instalaciΓ³n | --- ## 🎨 Flujo de NavegaciΓ³n ``` MainActivity ↓ MotivameApp (Composable) ↓ β”œβ”€β†’ MainScreen ──┬─→ AddTaskScreen β”‚ └─→ SettingsScreen β”‚ β”œβ”€β†’ AddTaskScreen ──→ MainScreen β”‚ └─→ SettingsScreen ──→ MainScreen ``` --- ## πŸ”„ Flujo de Datos ``` User Action ↓ UI Screen (Compose) ↓ TaskViewModel ↓ TaskRepository ↓ DataStore ↓ StateFlow (reactive) ↓ UI Update ``` --- ## πŸ“¦ Dependencias Clave ```kotlin // Core androidx.core:core-ktx:1.10.1 androidx.lifecycle:lifecycle-runtime-ktx:2.6.1 // Compose androidx.compose:compose-bom:2024.09.00 androidx.compose.material3:material3 androidx.compose.material:material-icons-extended:1.5.4 // Architecture androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1 androidx.work:work-runtime-ktx:2.9.0 androidx.datastore:datastore-preferences:1.0.0 ``` --- ## 🎯 Puntos de Entrada 1. **AplicaciΓ³n**: `MainActivity.onCreate()` 2. **UI**: `MotivameApp()` composable 3. **Datos**: `TaskRepository` initialization 4. **Notificaciones**: `NotificationHelper.sendTaskReminder()` 5. **Worker**: `DailyReminderWorker.doWork()` --- ## πŸ” Permisos Declarados ```xml ``` --- ## βš™οΈ ConfiguraciΓ³n de WorkManager ```kotlin Periodicidad: 1 dΓ­a (24 horas) Horario: 9:00 AM PolΓ­tica: KEEP (no duplicar) Constraints: Sin red requerida ``` --- ## πŸ’Ύ Estructura de Datos ### Task (JSON en DataStore) ```json { "id": "uuid", "title": "string", "goals": ["string", "string"], "isActive": boolean, "createdAt": long } ``` --- ## 🎨 Paleta de Colores | Color | Hex | Uso | |-------|-----|-----| | Primary | #6366F1 | Acciones principales | | Secondary | #EC4899 | Acentos motivadores | | Tertiary | #8B5CF6 | Elementos terciarios | | Success | #10B981 | Estados positivos | | Error | #EF4444 | Alertas y errores | --- ## πŸ“± Compatibilidad - **MΓ­nimo**: Android 7.0 (API 24) - **Target**: Android 14 (API 36) - **Recomendado**: Android 9.0+ (API 28+) --- ## πŸš€ Build Variants - **debug**: VersiΓ³n de desarrollo con logs - **release**: VersiΓ³n optimizada para producciΓ³n --- Esta estructura proporciona: βœ… SeparaciΓ³n clara de responsabilidades βœ… FΓ‘cil mantenimiento y escalabilidad βœ… CΓ³digo organizado y legible βœ… Arquitectura MVVM bien definida βœ… DocumentaciΓ³n completa