TABSAP CRM is a business management platform built with Flutter for mobile and desktop, against a multi-tenant Laravel backend. It covers core operations — inventory, POS and sales, projects, stock adjustments, staff and time tracking — with a dedicated food and restaurant module on top: modifiers, tables, combo deals, a kitchen display and delivery routing.
A point-of-sale system that stops working when the connection drops is not a point-of-sale system. TABSAP CRM runs offline-first on PowerSync with Drift and SQLite, storing data locally under encryption and reconciling when the network returns.
That is an architectural commitment rather than a feature. Every write path has to be designed for a device that may be the only place a transaction exists for the next hour, which is a different problem from caching reads.
It talks directly to POS hardware — barcode scanners and thermal receipt printers over both BLE and Bluetooth Classic. Hardware support is where most cross-platform retail apps stop short, because it is the part that cannot be tested from a simulator.
Travel handles trip and booking workflows — itineraries and expense tracking tied to staff and projects — extending the platform beyond retail and food into service-based operations.
HRM covers staff records, attendance and time entries, and role-based permissions, using the same tenant database as the POS and project modules rather than a separate employee system to reconcile.
Multi-tenancy needs somewhere to provision from. The TABSAP SaaS Control Panel is a separate admin system handling tenant onboarding, billing and lifecycle, giving each tenant an isolated MySQL database. It deploys independently of the CRM app itself and currently runs on a self-managed VPS — Nginx, PHP and MySQL behind Cloudflare with an Origin CA certificate.
The Android build is live. iOS App Store submission for v1.0.0 is in progress.