Q2AUTO — Security Guard Management System
An enterprise app digitizing the full operational workflow for security-guard companies — quotations, commissions, CRM, PDF reports, analytics — built solo in two months.
- My role
- Sole Flutter Developer (built independently)
- Period
- October 2025 – November 2025
- Related experience
- Elkood
Q2AUTO is an enterprise app built for security-guard companies in Saudi Arabia. It is one of the most significant individual contributions in my portfolio for one reason: I built the entire application independently — architecture, every feature, and App Store submission — in two months. It is live on the App Store.
Problems solved
- Quotation management with automated pricing — guards, shift types, duration, and pricing tiers turned into a quotation, generated as a branded PDF on-device so it works offline and needs no server round-trip.
- Role-based access control — admins, sales, and finance each see only what their role permits, driven by claims in the auth token; adding a role is configuration, not code.
- Commission calculations — configurable per-company rules applied automatically, with per-guard, per-period breakdowns for finance.
- Offline mode with auto-sync — local-first reads, queued writes, background sync on connectivity change, with a sync indicator instead of blocking errors.
- Phone/WhatsApp auth & sharing — OTP auth and WhatsApp delivery of quotations, matching how the target businesses actually communicate.
Architecture
Clean Architecture, built solo. Domain entities carry their own logic (quotation pricing,
commission rules); use cases (GenerateQuotation, CalculateCommission, SyncOfflineData,
ExportQuotationPDF) are independently testable; the data layer uses Dio + Hive + Secure
Storage; BLoC per feature with sealed states. Permission checks live in use cases — widgets
ask “can I do this?” rather than inspecting the user’s role.
Result
A complete enterprise product taken from zero to App Store, solo, in two months — the clearest example of full ownership: not one developer on a team, but one developer who is the team.