308
ESTRUCTURA.md
Archivo normal
308
ESTRUCTURA.md
Archivo normal
@@ -0,0 +1,308 @@
|
||||
# 📂 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
|
||||
<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
|
||||
|
||||
```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
|
||||
|
||||
Referencia en una nueva incidencia
Block a user