Files
motivame/ESTRUCTURA.md
2026-02-19 04:27:22 +01:00

12 KiB

📂 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

// 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

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

⚙️ Configuración de WorkManager

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)

{
  "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