# π 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