# Recordatorios

App Android de notas y recordatorios con Material 3 Dynamic Colors (Monet).

## Funcionalidades

- **Notas** con título y contenido multilínea
- **Recordatorios** con fecha y hora exacta (AlarmManager)
- **Recurrencia**: diaria, semanal, mensual, anual
- **Notificaciones** push al cumplirse la fecha, incluso con la app cerrada
- **Tabs**: Hoy (tareas del día), Pendientes (futuros), Eliminados (papelera)
- **Check**: completa una nota y la envía a Eliminados; si es recurrente, adelanta al próximo período
- **Buscador** por título y contenido en tiempo real
- **Papelera** con restauración y borrado permanente

## Requisitos

- Android Studio Hedgehog (2023.1.1) o superior
- JDK 17
- Gradle 8.0
- compileSdk 34, minSdk 26

## Cómo ejecutar

```bash
git clone <repo>
cd Recordatorios
./gradlew assembleDebug
```

El APK se genera en `app/build/outputs/apk/debug/app-debug.apk`.

Si el SDK no está en `~/Android/Sdk`, crear `local.properties`:

```
sdk.dir=/ruta/al/Android/Sdk
```

## Estructura del proyecto

```
app/src/main/java/com/recordatorios/app/
├── MainActivity.kt           # Actividad principal, maneja tabs, editor, filtros
├── Note.kt                   # Modelo de datos (data class)
├── NotesManager.kt           # Persistencia con SharedPreferences + Gson
├── NoteAdapter.kt            # RecyclerView adapter con expand/colapsar
├── ReminderReceiver.kt       # BroadcastReceiver para notificaciones + recurrencia
└── ReminderScheduler.kt      # AlarmManager (setExactAndAllowWhileIdle)

app/src/main/res/
├── layout/
│   ├── activity_main.xml     # Toolbar, tabs, buscador, RecyclerView, FAB
│   ├── item_note.xml         # Card con expand, check, fecha, acciones
│   └── dialog_note_editor.xml # Editor: título, contenido, recordatorio, recurrencia
├── drawable/                 # Iconos vectoriales (pencil, trash, sun, clock, bell, check)
└── values/
    ├── themes.xml            # Theme.Material3.DynamicColors.DayNight + NoActionBar
    ├── colors.xml
    └── strings.xml           # Español
```

## Flujo de desarrollo

1. **Modelo** → modificar `Note.kt` (agregar/quitar campos)
2. **Persistencia** → `NotesManager.kt` (SharedPreferences + Gson)
3. **UI** → layout XML + binding en `MainActivity.kt`
4. **Adapter** → `NoteAdapter.kt` para cambios en la lista
5. **Recordatorios** → `ReminderScheduler.kt` + `ReminderReceiver.kt`
6. **Compilar** → `./gradlew assembleDebug`

Si se agrega un campo a `Note.kt`, Gson lo serializa automáticamente. No hay migraciones de base de datos.

## Estilo

- Tema: `Theme.Material3.DynamicColors.DayNight` (colores dinámicos del wallpaper)
- Cards: `MaterialCardView`, 12dp radius, 2dp elevation
- TextFields: `OutlinedBox`
- Tabs con iconos vectoriales
- Sin ActionBar nativa — solo Toolbar personalizada

---

## Guía de Uso

### Introducción

Recordatorios es una aplicación Android para gestionar notas y recordatorios con un diseño moderno usando Material 3 y colores dinámicos.

### Pestañas

#### ☀️ Hoy
Muestra los recordatorios programados para el día actual y los que ya vencieron.

- **Tareas del día**: Recordatorios con fecha de hoy
- **Vencidos**: Recordatorios que ya pasaron su fecha
- Las notas se agrupan en secciones para fácil identificación

#### 🕐 Pendientes
Muestra los recordatorios futuros, aquellos programados para fechas posteriores a hoy.

- Solo muestra recordatorios que aún no han llegado
- Ordenados cronológicamente

#### 📅 Calendario
Vista de calendario mensual con indicadores visuales.

- **Puntos de color**: Indican recordatorios en ese día
- **Tap simple**: Muestra los recordatorios del día seleccionado
- **Triple tap**: Crea un nuevo recordatorio para esa fecha
- **Swipe horizontal**: Cambia entre meses
- **Lista inferior**: Muestra todos los recordatorios del mes actual

#### 🗑️ Basurero
Papelera donde van las notas completadas o eliminadas.

- **Restaurar**: Devuelve la nota a la lista principal
- **Eliminar permanentemente**: Borra la nota definitivamente
- Las notas recurrentes completadas adelantan al próximo período

#### ⚙️ Configuración
Ajustes de la aplicación.

### Funcionalidades Principales

#### Crear una Nota
1. Presiona el botón **+** en la esquina inferior derecha
2. Escribe un título y/o contenido
3. Activa el switch de recordatorio si deseas una notificación
4. Selecciona fecha y hora
5. Elige la recurrencia (diaria, semanal, mensual, anual)
6. Selecciona una categoría (opcional)
7. Agrega una foto (opcional)
8. Presiona **Guardar**

#### Nota por Voz
1. Presiona el botón de **micrófono** junto al botón +
2. Di tu recordatorio
3. La app parseará automáticamente lo dicho

#### Editar una Nota
1. Expande la nota presionando la flecha ▼
2. Presiona **Editar**
3. Modifica los campos necesarios
4. Presiona **Guardar**

#### Completar una Nota
- Presiona el botón de **check** ✓ en la card
- La nota se mueve al basurero
- Si es recurrente, se programa automáticamente para el próximo período

#### Eliminar una Nota
1. Expande la nota
2. Presiona **Eliminar**
3. Confirma la eliminación
4. La nota va al basurero

#### Buscar Notas
- Usa el campo de búsqueda en la parte superior
- Busca por título o contenido en tiempo real

#### Filtrar por Categoría
- En la pestaña de Pendientes, selecciona las categorías deseadas
- Los filtros se guardan automáticamente

### Categorías

#### Crear Categoría
1. En el editor de notas, presiona **Administrar categorías**
2. Presiona **Agregar categoría**
3. Escribe un nombre
4. Selecciona un color
5. Presiona **Guardar**

#### Editar/Eliminar Categoría
- En el administrador de categorías, usa los botones de lápiz o basura

### Configuración

#### Biometría
- Activa el desbloqueo con huella dactilar o reconocimiento facial
- Solo se solicita una vez al abrir la app

#### Tema
- **Sistema**: Sigue el tema del dispositivo
- **Claro**: Siempre tema claro
- **Oscuro**: Siempre tema oscuro

#### Fondo Personalizado
- Selecciona una imagen de tu galería como fondo
- Se aplica un efecto de blur para mejor legibilidad

#### Notificaciones
- Mostrar imagen en notificaciones (activado por defecto)

#### Limpieza Automática de Basurero
- Configura cuánto tiempo permanecen las notas en el basurero
- Opciones: Desactivado, 1 día, 3 días, 7 días, 30 días

#### Datos
- **Exportar**: Guarda todas las notas y categorías en un archivo JSON
- **Importar**: Restaura desde un archivo de backup

### Gestos

- **Swipe horizontal**: Cambia entre pestañas
- **Swipe en calendario**: Cambia de mes

### Consejos

1. **Recurrencia**: Usa recordatorios recurrentes para tareas periódicas
2. **Categorías**: Organiza tus notas por colores para identificarlas rápidamente
3. **Bordes de color**: Las cards muestran el color de su categoría en el borde
4. **Backup**: Exporta regularmente tus datos para no perder información
5. **Búsqueda**: Usa la búsqueda para encontrar notas antiguas rápidamente

---

## Repositorio Oficial

**[https://git.nakano47.com/nino/Recordatorios-app](https://git.nakano47.com/nino/Recordatorios-app)**
