Files
ToldoConjunto/openspec/changes/archive/2026-10-25-add-toldo-poc-capacitor/proposal.md

3.3 KiB

Proposal: add-toldo-poc-capacitor

Why

The Circuito de Economía Solidaria de Támesis (CESTA) needs a software solution to facilitate registration and control of products and expenses at Sunday markets held in the main park of the municipality.

Key business flows:

  • Team rotation for managing the "Toldo" (canopy) each Sunday
  • Initial inventory that should match previous week's final inventory, recording differences if any
  • Sales registration (product, quantity, unit price, total value, payment method: cash or QR code)
  • Expense registration during the day (tape, pens, bags, transportation, etc.)
  • End-of-day cash reconciliation considering starting cash, sales, expenses
  • End-of-day inventory that should match initial inventory minus sold products
  • Reports by producer: inventory differences, initial inventory (real), inventory movements from sales, sales value, total per producer
  • Cash reconciliation report with date/time, concept, income, expenses, balance; separate for cash and QR payments; track cash discrepancies and QR/bank differences; total sales (cash + QR)
  • Ability to adjust initial inventory, sales, cash discrepancies, QR discrepancies with required change reason tracked in final report
  • Store daily records with consolidated reports by date range, week, or month
  • Add products mid-week/bodega restocks (register product, quantity, person who received)
  • Products linked to a producer; same product name from different producers = different products (e.g., "Café molido 250gr Santa Ana" vs "Café molido 250gr Familia Gonzalez")

Constraints

  • Must work well offline (poor internet at park)
  • Only a lightweight HTTP server to serve static files OR run as APK on Android tablet
  • Data stored in browser storage (IndexedDB/localStorage) if web-based
  • No user authentication required initially
  • Must be able to export data to import on another device
  • Must be Free/Libre Software
  • Single git repo, possibility to add more folders/modules in future

What Changes

Implement a Capacitor + Vite + TypeScript POC with:

  • Architecture: Clean layered architecture (core/domain, data/infrastructure, services/application, ui/presentation) following SOLID principles
  • Storage: Dexie.js over IndexedDB for structured offline storage
  • Packaging: Capacitor to generate Android APK for tablet use; maintain web-first for static serving if needed
  • Testing: TDD with Vitest, @testing-library, fake-indexeddb; mock Capacitor plugins
  • Export/Import: Versioned JSON format for data portability between devices
  • Offline-first: All assets bundled in APK, no backend required

Impact

  • New apps: apps/toldo-app/ (Vite + Capacitor app)
  • New packages: packages/core/ (domain, pure TS), packages/data/ (Dexie repos), packages/services/ (use cases), packages/ui/ (reusable components)
  • OpenSpec: New change with specs
  • Agent Skills: New skills for architecture, domain modeling, TDD, export/import
  • Android: Capacitor Android platform configuration

Non-Goals

  • Real-time multi-device synchronization (CouchDB/PouchDB sync) - manual export/import is sufficient
  • Barcode scanner integration (not requested in README)
  • User authentication/authorization (explicitly not required initially)
  • Complex PDF generation in first iteration (can be added later)
  • TWA packaging (Capacitor direct APK preferred)