ERPSole developer, end to endAug 2025 - Now
Target Operations
The mobile client for a multi-tenant ERP (sales, purchasing, warehouse, POS, CRM and accounting), on phones and Sunmi POS handhelds.
- 41
- Feature modules
- 88
- Screens
- 230
- REST endpoints
My contribution
Sole developer over roughly 13 months: 41 feature modules, 88 screens and 230 REST endpoints, on a feature-sliced clean architecture (data, domain, presentation) with BLoC/Cubit and a single get_it container of 242 registrations that keeps 78 feature controllers independent and testable. Localised across English, Arabic and French with full RTL. I own the release pipeline too: Android and iOS builds, signing, Crashlytics, push and Google Play submissions.
The hard part
One binary has to behave like a different product for every tenant. A server-driven permission layer gates each module and each CRUD action from the ACLs returned at login, and subdomain-based base-URL switching points the same build at whichever backend that tenant runs.
What it is
Target Operations (T-OPS) is the Flutter mobile client for a multi-tenant ERP platform, giving field sales reps, warehouse staff and cashiers the operations they would otherwise do from a desktop web app. It ships on Google Play and on Sunmi POS handhelds, where it drives the built-in thermal printer.
Core functionality
- 41 feature modules across sales invoicing, quotations, purchase bills, inventory transfers, POS, CRM and accounting
- Server-driven per-screen permissions gating show, add, edit, delete and print per tenant role
- Multi-tenant runtime configuration with subdomain-based base-URL switching
- Centralised Dio service mapping transport failures to typed domain exceptions, with auth and logging interceptors
- On-device diagnostic logging for debugging in the field
- Thermal receipt printing over two hardware paths: Sunmi built-in printers and Bluetooth ESC/POS devices, including Arabic receipts
- Paged search across every list
- English, Arabic and French with full RTL support
Testing
I wrote an end-to-end harness that runs Flutter integration tests against the live backend while a Playwright agent reads the web ERP in parallel, cross-checking that mobile writes land identically on the web client. It caught several vendor-side API defects before release.












