# Despensapp - Gestión de Despensa Familiar Aplicación Android diseñada para gestionar el inventario de una despensa de forma compartida, con integración directa a MariaDB y Open Food Facts. ## Funcionalidades Actuales ### 🔐 Autenticación Multiusuario * **Login y Registro:** Conexión directa a una base de datos MariaDB externa (`mariadb.peta9.com`). * **Gestión de Cuentas:** Registro de usuarios con nombre completo, email y contraseña. * **Seguridad:** Uso de hilos secundarios (Coroutines) para no bloquear la interfaz durante la conexión. ### 🍱 Gestión de Inventario * **Visualización en Tiempo Real:** Lista de productos traída directamente desde MariaDB con soporte para unidades (kg, l, gr, etc.). * **Imágenes de Productos:** Integración con **Coil** para mostrar las imágenes de los productos obtenidas de Open Food Facts. * **Detalles Extendidos:** Pantalla de detalles para cada producto con información técnica de MariaDB. * **Búsqueda y Categorización:** Filtro por nombre y categorías dinámicas para una localización rápida. * **Swipe to Delete:** Borrado intuitivo de productos deslizando hacia la izquierda (Material 3). * **Fecha de Caducidad:** Seguimiento de la caducidad de cada producto para evitar desperdicios. * **Filtro Inteligente:** Filtro para ver rápidamente qué productos han caducado o están a punto de hacerlo (7 días o menos). * **Formato de Fecha:** Visualización de fechas en formato amigable (DD/MM/YYYY) en toda la aplicación. * **Lista de la Compra:** Modo dedicado que muestra únicamente los productos con stock bajo. * **Historial de Alta:** Registro automático de la fecha y hora en la que se añadió cada producto. * **Alertas de Stock Bajo:** Indicadores visuales en rojo cuando un producto está por debajo de su cantidad mínima. * **Notificaciones Automáticas:** El sistema revisa diariamente el inventario y envía notificaciones al móvil sobre stock bajo. * **Control Rápido:** Botones de incremento/decremento en la pantalla principal para actualizar el stock rápidamente. * **Edición Completa:** Modo de edición total en la pantalla de detalle para modificar nombre, stock, stock mínimo, categoría y caducidad. * **Compartir Lista:** Botón para compartir la lista de la compra directamente desde la aplicación a servicios de mensajería (WhatsApp, etc.). * **Iconografía Dinámica:** Asignación inteligente de iconos de Material Design basados en la categoría del producto (Lácteos, Carnicería, Fresco, etc.). * **Cierre de Sesión:** Opción para cerrar la sesión actual y volver de forma segura a la pantalla de bienvenida. ### 💰 Control de Precios y Valor Financiero * **Gestión de Precios:** Seguimiento del precio unitario de cada producto para una mejor planificación económica. * **Valoración de la Despensa:** Cálculo automático del valor total de todo el inventario acumulado. * **Presupuesto de Compra:** Cálculo del coste estimado necesario para reponer los productos en stock bajo. * **Visualización Detallada:** Visualización del precio junto a las unidades en la lista principal y detalles. ### 🎨 Identidad Visual * **Icono Personalizado:** Diseño de icono adaptativo único que representa un mueble de despensa lleno de productos. * **Interfaz Material 3:** Uso de los últimos estándares de diseño de Google para una experiencia fluida y moderna. * **Colores Amigables:** Paleta de colores personalizada para mejorar la legibilidad y la estética familiar. ### 🔍 Integración con APIs y Hardware * **Escáner de Código de Barras:** Uso de **CameraX** y **Google ML Kit** con **Feedback Háptico** (vibración) al detectar productos. * **Linterna:** Botón integrado en el escáner para encender y apagar el flash en entornos oscuros. * **Open Food Facts:** Búsqueda automática de nombres, categorías e imágenes al escanear un código de barras. * **MariaDB Directo:** Conexión JDBC para persistencia de datos compartida. ## Próximos Pasos * [x] Gestión de fechas de caducidad. * [x] Lista de la compra automática basada en el stock bajo. * [ ] Compartir despensas específicas mediante códigos de familia. * [ ] Exportar inventario a PDF/CSV. ## Requisitos Técnicos * Android SDK 34+ * Conexión a Internet (para API y DB remota). * Permiso de Cámara (para el escáner).