Frederick Garcia
← Volver al Inicio

Arqueo POS Offline

Arqueo POS Offline es una aplicación de Punto de Venta (POS) integral y “offline-first” construida con Flutter. Está diseñada para empoderar a comerciantes y pequeñas empresas para gestionar eficientemente sus ventas, inventario, clientes y empleados de forma completamente local, sin necesidad de conexión a internet o dependencia de servicios en la nube.

🚀 Idea General

La filosofía principal detrás de Arqueo POS Offline es confiabilidad y privacidad. Al almacenar todos los datos localmente en el dispositivo, la aplicación garantiza que las empresas puedan continuar operando incluso en entornos con mala o nula conectividad a internet. Proporciona un sistema de gestión de extremo a extremo, desde la definición de artículos de catálogo e impuestos hasta la generación de facturas personalizadas con códigos QR e informes detallados.

🛠 Tecnologías Utilizadas

  • Framework: Flutter (SDK ^3.8.1)
  • Gestión de Estado: flutter_riverpod
  • Navegación: go_router
  • Base de Datos Local: sqflite para el almacenamiento de datos offline
  • Internacionalización (i18n): easy_localization (Soporta Inglés, Español, Francés, Portugués, Criollo Haitiano, Alemán e Italiano)
  • PDF e Impresión: pdf y printing para generar e imprimir recibos físicos
  • Generación de QR: qr_flutter para incrustar códigos QR únicos en los recibos de ventas
  • Suscripciones: purchases_flutter (RevenueCat) para la gestión de características premium
  • Telemetría y Estabilidad: firebase_analytics y firebase_crashlytics (Activos solo en modo de producción)

📦 Modelos de Datos

La aplicación se basa en una robusta base de datos local relacional estructurada en SQLite. Los modelos clave incluyen:

  • Clientes (Customers): id, name, phone, address, email, isActive
  • Empleados (Employees): id, name, phone, email, isActive
  • Impuestos (Taxes): id, name, rate (ej., ITBIS 18%, Exento)
  • Productos (Products): id, name, price, cost, stock, taxId, isActive
  • Servicios (Services): id, name, price, cost, taxId, isActive
  • Tipos de Factura (Invoice Types): id, name, sequenceStart, sequenceEnd, code, prefix, currentSequence, active
  • Ventas (Sales): id, date, qrcode, customerId, employeeId, invoiceTypeId
  • Detalles de Venta (Sale Details): id, saleId, productId, serviceId, quantity, priceAtSale, costAtSale, taxRateAtSale, itemName

🏗 Arquitectura y Estructura

El proyecto sigue rigurosamente la Arquitectura Limpia (Clean Architecture) combinada con una estructura de directorios orientada a características (Feature-Driven).

  • lib/core/: Contiene aspectos transversales, utilidades, tematización, configuraciones de enrutamiento, widgets comunes y servicios globales.
  • lib/features/: Contiene módulos específicos del dominio como sales (ventas), products (productos), services (servicios), customers (clientes), empleados, home (inicio), reports (informes), subscription (suscripción).

🔒 Seguridad y Mejores Prácticas

  • Offline-First y Privacidad de Datos: Todos los datos sensibles del negocio y los clientes se almacenan localmente en la base de datos SQLite.
  • Borrado Lógico (Soft Deletion): En lugar de eliminar permanentemente elementos del catálogo, el sistema utiliza una bandera isActive.
  • Transacciones de Base de Datos y Atomicidad: Las operaciones críticas utilizan transacciones de SQLite para prevenir datos corruptos.
  • Precisión Histórica: El precio y el costo se copian explícitamente en la tabla sale_details en el momento de la venta para mantener reportes exactos sin importar futuros cambios en el catálogo.