Merge remote-tracking branch 'origin/master'
This commit is contained in:
Generated
+123
@@ -0,0 +1,123 @@
|
|||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<code_scheme name="Project" version="173">
|
||||||
|
<JetCodeStyleSettings>
|
||||||
|
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||||
|
</JetCodeStyleSettings>
|
||||||
|
<codeStyleSettings language="XML">
|
||||||
|
<option name="FORCE_REARRANGE_MODE" value="1" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
</indentOptions>
|
||||||
|
<arrangement>
|
||||||
|
<rules>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>xmlns:android</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>xmlns:.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:id</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:name</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>name</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>style</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>ANDROID_ATTRIBUTE_ORDER</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>.*</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
</rules>
|
||||||
|
</arrangement>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="kotlin">
|
||||||
|
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||||
|
</codeStyleSettings>
|
||||||
|
</code_scheme>
|
||||||
|
</component>
|
||||||
Generated
+5
@@ -0,0 +1,5 @@
|
|||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<state>
|
||||||
|
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
||||||
|
</state>
|
||||||
|
</component>
|
||||||
Generated
+7
@@ -4,6 +4,13 @@
|
|||||||
<selectionStates>
|
<selectionStates>
|
||||||
<SelectionState runConfigName="app">
|
<SelectionState runConfigName="app">
|
||||||
<option name="selectionMode" value="DROPDOWN" />
|
<option name="selectionMode" value="DROPDOWN" />
|
||||||
|
<DropdownSelection timestamp="2026-08-06T19:14:52.377187Z">
|
||||||
|
<Target type="DEFAULT_BOOT">
|
||||||
|
<handle>
|
||||||
|
<DeviceId pluginId="PhysicalDevice" identifier="serial=25371654" />
|
||||||
|
</handle>
|
||||||
|
</Target>
|
||||||
|
</DropdownSelection>
|
||||||
<DialogSelection />
|
<DialogSelection />
|
||||||
</SelectionState>
|
</SelectionState>
|
||||||
</selectionStates>
|
</selectionStates>
|
||||||
|
|||||||
Generated
+13
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DeviceTable">
|
||||||
|
<option name="columnSorters">
|
||||||
|
<list>
|
||||||
|
<ColumnSorterState>
|
||||||
|
<option name="column" value="Name" />
|
||||||
|
<option name="order" value="ASCENDING" />
|
||||||
|
</ColumnSorterState>
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@@ -1,57 +1,58 @@
|
|||||||
# Despensapp - Gestión de Despensa Familiar
|
# 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.
|
Aplicación Android moderna y colaborativa diseñada para gestionar el inventario de una despensa de forma compartida, con integración directa a MariaDB y Open Food Facts.
|
||||||
|
|
||||||
## Funcionalidades Actuales
|
## 🚀 Novedades Recientes
|
||||||
|
* **Seguimiento de Cambios:** Ahora puedes ver qué miembro de la familia realizó la última modificación en cada producto.
|
||||||
|
* **Configuración de Alertas:** Frecuencia de notificaciones personalizable (12h, 24h, 48h o Semanal).
|
||||||
|
* **Gestión de Imágenes:** Sube tus propias fotos desde la galería o haz una foto directamente si el producto no tiene imagen en Open Food Facts.
|
||||||
|
* **Valoración Financiera:** Visualiza el valor total de tu despensa y el presupuesto necesario para reponer lo que falta.
|
||||||
|
|
||||||
### 🔐 Autenticación Multiusuario
|
## 🛠 Funcionalidades Principales
|
||||||
* **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
|
### 🔐 Autenticación y Familia
|
||||||
* **Visualización en Tiempo Real:** Lista de productos traída directamente desde MariaDB con soporte para unidades (kg, l, gr, etc.).
|
* **Acceso Multiusuario:** Registro e inicio de sesión conectado a MariaDB externa.
|
||||||
* **Imágenes de Productos:** Integración con **Coil** para mostrar las imágenes de los productos obtenidas de Open Food Facts.
|
* **Códigos de Familia:** Posibilidad de unirse a despensas existentes mediante códigos compartidos.
|
||||||
* **Detalles Extendidos:** Pantalla de detalles para cada producto con información técnica de MariaDB.
|
* **Sesiones Seguras:** Gestión de sesión de usuario local para acceso rápido.
|
||||||
* **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 Inventario Inteligente
|
||||||
* **Gestión de Precios:** Seguimiento del precio unitario de cada producto para una mejor planificación económica.
|
* **Escáner Avanzado:** Lector de códigos de barras con **Google ML Kit**, feedback háptico (vibración) y control de linterna integrado.
|
||||||
* **Valoración de la Despensa:** Cálculo automático del valor total de todo el inventario acumulado.
|
* **Integración Doble:** Búsqueda automática en **Open Food Facts** con fallback a la base de datos local para productos ya conocidos.
|
||||||
* **Presupuesto de Compra:** Cálculo del coste estimado necesario para reponer los productos en stock bajo.
|
* **Control de Stock:** Botones de acceso rápido (+/-) en la lista principal y edición detallada.
|
||||||
* **Visualización Detallada:** Visualización del precio junto a las unidades en la lista principal y detalles.
|
* **Alertas Visuales:** Indicadores de stock bajo (barras laterales rojas y iconos de advertencia) basados en mínimos personalizados.
|
||||||
|
* **Categorización Dinámica:** Iconografía automática basada en la categoría del producto (Lácteos, Frescos, Limpieza, etc.).
|
||||||
|
|
||||||
### 🎨 Identidad Visual
|
### 📅 Control de Caducidad
|
||||||
* **Icono Personalizado:** Diseño de icono adaptativo único que representa un mueble de despensa lleno de productos.
|
* **Seguimiento de Fechas:** Registro de fecha de caducidad con formato amigable (DD/MM/YYYY).
|
||||||
* **Interfaz Material 3:** Uso de los últimos estándares de diseño de Google para una experiencia fluida y moderna.
|
* **Filtro Crítico:** Vista rápida de productos caducados o que caducarán en los próximos 7 días.
|
||||||
* **Colores Amigables:** Paleta de colores personalizada para mejorar la legibilidad y la estética familiar.
|
* **Historial de Alta:** Registro automático de cuándo se añadió cada producto a la despensa.
|
||||||
|
|
||||||
### 🔍 Integración con APIs y Hardware
|
### 🛒 Lista de la Compra y Compartir
|
||||||
* **Escáner de Código de Barras:** Uso de **CameraX** y **Google ML Kit** con **Feedback Háptico** (vibración) al detectar productos.
|
* **Generación Automática:** Filtro dedicado para productos bajo mínimos.
|
||||||
* **Linterna:** Botón integrado en el escáner para encender y apagar el flash en entornos oscuros.
|
* **Compartir:** Exporta y envía la lista de la compra por WhatsApp, Telegram o email con un solo toque.
|
||||||
* **Open Food Facts:** Búsqueda automática de nombres, categorías e imágenes al escanear un código de barras.
|
* **Cálculo de Costes:** Estimación del dinero necesario para completar la reposición de stock.
|
||||||
* **MariaDB Directo:** Conexión JDBC para persistencia de datos compartida.
|
|
||||||
|
|
||||||
## Próximos Pasos
|
### 🔔 Notificaciones y Segundo Plano
|
||||||
|
* **InventoryCheckWorker:** Tareas en segundo plano (WorkManager) que revisan el stock diariamente.
|
||||||
|
* **Frecuencia Ajustable:** Elige desde los ajustes cada cuánto quieres recibir alertas de reposición.
|
||||||
|
|
||||||
|
## 🎨 Interfaz y Experiencia (UX)
|
||||||
|
* **Material 3:** Interfaz moderna con componentes dinámicos y soporte para temas.
|
||||||
|
* **Swipe to Action:** Borrado intuitivo deslizando elementos (Swipe-to-Delete).
|
||||||
|
* **Feedback Visual:** Cargas progresivas, snackbars de confirmación y estados vacíos informativos.
|
||||||
|
|
||||||
|
## ⚙️ Especificaciones Técnicas
|
||||||
|
* **Arquitectura:** MVVM-ish con Repositorios para abstracción de datos.
|
||||||
|
* **Persistencia:** MariaDB Directo (JDBC) con soporte para red local y remota.
|
||||||
|
* **Red:** Retrofit para Open Food Facts API y Coil para carga de imágenes asíncrona.
|
||||||
|
* **Cámara:** CameraX para una integración fluida con el hardware.
|
||||||
|
* **Mínimo SDK:** Android 31 (Android 12)
|
||||||
|
* **Target SDK:** Android 37
|
||||||
|
|
||||||
|
## 🛤 Próximos Pasos
|
||||||
* [x] Gestión de fechas de caducidad.
|
* [x] Gestión de fechas de caducidad.
|
||||||
* [x] Lista de la compra automática basada en el stock bajo.
|
* [x] Lista de la compra automática.
|
||||||
* [ ] Compartir despensas específicas mediante códigos de familia.
|
* [x] Notificaciones push locales.
|
||||||
* [ ] Exportar inventario a PDF/CSV.
|
* [ ] Exportación avanzada a PDF/CSV.
|
||||||
|
* [ ] Modo offline con sincronización diferida.
|
||||||
## Requisitos Técnicos
|
* [ ] Estadísticas de consumo mensual.
|
||||||
* Android SDK 34+
|
|
||||||
* Conexión a Internet (para API y DB remota).
|
|
||||||
* Permiso de Cámara (para el escáner).
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ android {
|
|||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = "com.example.despensapp"
|
applicationId = "com.example.despensapp"
|
||||||
minSdk = 34
|
minSdk = 31
|
||||||
targetSdk = 37
|
targetSdk = 37
|
||||||
versionCode = 1
|
versionCode = 1
|
||||||
versionName = "1.0"
|
versionName = "1.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user