How franciscogb03/tiendita-pos works
Tiendita POS is an offline-first point-of-sale system. A cashier signs in, configures a terminal, selects products, builds a cart, and completes payment; sales are sent to the API or queued locally for later synchronization. The backend also provides product, terminal-validation, and protected daily-report endpoints. The graph includes authentication, checkout, offline recovery, and reporting; some backend handlers and frontend modules were not excerpted, so their internal behavior and unsupported connections are omitted.
Main entry points: POSPage.tsx POS page · router.go HTTP routes · api.ts HTTP client · useSyncQueue.ts Sync queue
Components 29
POS frontend
- App routing
frontend/src/App.tsx - Login page
frontend/src/pages/LoginPage.tsx - POS page
frontend/src/pages/POSPage.tsx - Product grid
frontend/src/components/ProductGrid.tsx - Cart ticket
frontend/src/components/CartTicket.tsx - Payment modal
frontend/src/components/PaymentModal.tsx - Terminal setup
frontend/src/hooks/useTerminalId.ts - HTTP client
frontend/src/lib/api.ts
POS API
- API server
backend/cmd/api/main.go - HTTP routes
backend/internal/router/router.go
Authentication
- Session state
frontend/src/hooks/useAuth.ts - Login handler
backend/internal/handlers/auth.go - Auth service
backend/internal/services/auth_service.go - User repository
backend/internal/repositories/user_repository.go
Sales and sync
- Sale service
frontend/src/services/saleService.ts - Sync queue
frontend/src/hooks/useSyncQueue.ts - Network status
frontend/src/hooks/useNetworkStatus.ts - Local sales store
frontend/src/lib/db.ts - Sale handler
backend/internal/handlers/sale.go - Sale service
backend/internal/services/sale_service.go - Sale repository
backend/internal/repositories/sale_repository.go
Catalog and reports
- Product service
frontend/src/services/productService.ts - Product state
frontend/src/hooks/useProducts.ts - Products handler
backend/internal/handlers/products.go - Terminal handler
backend/internal/handlers/terminal.go - Report handler
backend/internal/handlers/report.go - Report repository
backend/internal/repositories/report_repository.go
Other components
- Cashier
- PostgreSQL
Connections 35
- Cashier → App routing: uses
frontend/src/App.tsx - App routing → Login page: routes to
frontend/src/App.tsx - App routing → POS page: routes to
frontend/src/App.tsx - Login page → HTTP client: authenticates via
frontend/src/pages/LoginPage.tsx - POS page → Product grid: renders
frontend/src/pages/POSPage.tsx - POS page → Cart ticket: renders
frontend/src/pages/POSPage.tsx - POS page → Payment modal: renders
frontend/src/pages/POSPage.tsx - POS page → Terminal setup: loads terminal
frontend/src/pages/POSPage.tsx - POS page → Sale service: submits sale
frontend/src/pages/POSPage.tsx - POS page → Sync queue: tracks sync
frontend/src/pages/POSPage.tsx - POS page → Network status: reads status
frontend/src/pages/POSPage.tsx - POS page → Session state: reads session
frontend/src/pages/POSPage.tsx - Product grid → Product state: uses products
- Product state → Product service: loads products
frontend/src/hooks/useProducts.ts - Product service → HTTP client: requests products
frontend/src/services/productService.ts - Terminal setup → HTTP client: validates terminal
frontend/src/hooks/useTerminalId.ts - Sale service → HTTP client: posts sale
frontend/src/services/saleService.ts - Sale service → Local sales store: queues offline
frontend/src/services/saleService.ts - Sync queue → Network status: checks status
frontend/src/hooks/useSyncQueue.ts - Sync queue → HTTP client: replays sales
frontend/src/hooks/useSyncQueue.ts - Sync queue → Local sales store: reads and updates
frontend/src/hooks/useSyncQueue.ts - HTTP client → API server: sends HTTP
- API server → HTTP routes: configures routes
backend/cmd/api/main.go - API server → PostgreSQL: initializes database
backend/cmd/api/main.go - HTTP routes → Login handler: routes login
backend/internal/router/router.go - Login handler → Auth service: delegates login
backend/internal/handlers/auth.go - Auth service → User repository: looks up user
backend/internal/services/auth_service.go - HTTP routes → Sale handler: routes sales
backend/internal/router/router.go - Sale handler → Sale service: delegates sale
backend/internal/handlers/sale.go - Sale service → Sale repository: persists sale
backend/internal/services/sale_service.go - HTTP routes → Products handler: routes products
backend/internal/router/router.go - HTTP routes → Terminal handler: routes validation
backend/internal/router/router.go - HTTP routes → Report handler: routes reports
backend/internal/router/router.go - HTTP routes → Report repository: constructs repository
backend/internal/router/router.go - Report handler → Report repository: reads summaries