Taller Alejo es una aplicación Android para la gestión de un taller. El objetivo es centralizar la administración de productos, categorías y ventas, con sincronización en la nube y soporte offline-first para operar sin conexión y luego sincronizar los datos.
- Inventario y catálogo: administrar productos y sus categorías.
- Ventas: registrar ventas, consultar historial y sincronizar con la nube.
- Offline-first: permitir operar con base local y sincronizar cuando haya conexión.
- Arquitectura modular: separar claramente las capas de datos, dominio y presentación.
- Capas data, domain y presentation con inyección de dependencias usando Koin.
- Base de datos local con Room.
- Sincronización remota usando Appwrite.
- Productos: lectura remota de productos y mapeo DTO ↔ dominio.
- Categorías: infraestructura para gestionar categorías.
- Ventas: flujo completo con DAO, mapeadores, repositorio offline-first, casos de uso y ViewModel.
- Consolidar flujo de ventas: alta, edición, eliminación y consulta detallada.
- Sincronización bidireccional: subir cambios locales pendientes y resolver conflictos.
- Mejorar UX: estados de carga/errores, mensajes al usuario y pantalla de detalle.
- Reportes básicos: métricas simples como ventas por fecha y por producto.
- Hardening: validaciones, manejo de errores y pruebas automatizadas.
- CRUD completo de productos y categorías (actualmente enfocado en lectura/remotos).
- Sincronización bidireccional de ventas (hoy es pull y reemplazo local).
- Manejo robusto de errores en ViewModels y UI.
- Pruebas unitarias/integración para casos de uso y repositorios.
- Documentación técnica (diagramas, convenciones y guía de contribución).
- Base arquitectónica: separación por capas (
data,domain,presentation) e inyección de dependencias con Koin. - Persistencia local: almacenamiento local con Room para soportar operación sin conexión.
- Sincronización base: integración con Appwrite y flujo de sincronización para ventas.
- Feature de ventas avanzada: existen casos de uso, repositorio offline-first y ViewModel para observación/sincronización.
- Productos y categorías: hay infraestructura y lectura/mapeo, pero no está consolidado el CRUD completo en UX y dominio.
- UX de flujos críticos: existen pantallas y navegación, pero falta robustecer feedback de carga/error y consistencia de estados.
- Pruebas automatizadas: ya hay pruebas unitarias en piezas críticas (realtime, serializers, reconciliación), pero la cobertura aún no es de MVP “cerrado”.
- CRUD completo de productos y categorías en capa de dominio + UI.
- Sincronización bidireccional real (subida de cambios locales + política de resolución de conflictos).
- Manejo de errores de punta a punta (casos de uso, repositorios y ViewModels con mensajes accionables).
- Cobertura mínima de calidad: pruebas de integración/repositorios y criterios de aceptación por feature.
- Definición explícita de “Done” del MVP: checklist funcional y técnico para cierre.
- Vertical 1: catálogo (productos/categorías)
- Crear/editar/eliminar + validaciones + persistencia local.
- Vertical 2: ventas offline-first completas
- Cola de pendientes locales + reconciliación + estrategia de conflictos.
- Vertical 3: hardening UX
- Estados de carga, errores recuperables y confirmaciones de acciones sensibles.
- Vertical 4: calidad y release
- Suite de pruebas mínima para rutas críticas + documentación técnica corta.
- Un usuario puede crear/editar/eliminar productos, registrar ventas, operar sin conexión y sincronizar luego sin pérdida de datos.
- Existen mensajes claros de error/estado en los flujos principales.
- Las rutas críticas están cubiertas por pruebas automatizadas básicas.
app/
src/main/java/com/elitec/alejotaller/
feature/
category/
product/
sale/
infraestructure/
- Configura las credenciales de Appwrite en las variables de entorno o
BuildConfig. - Compila con Gradle:
./gradlew assembleDebug
Si deseas contribuir, crea una rama, realiza tus cambios y abre un pull request.