Selected workCircuit 2 · Access
Dawamk ERP
Fast, correct permissions across 38+ modules
- My role
- Software Engineer
- When
- AcuteBusiness · 2024 – present
- Where it stands
- Company product
What I built
The core RBAC access control for a 38+ module SaaS ERP, its caching, dynamic subscription engine, Leaflet geofenced attendance, open-source payment packages (Stripe, PayPal, PayTabs, DigiPay, EdfaPay, Al Inma), and the REST API powering 7 mobile apps.
Why it mattered
With 38+ modules, permissions decide what every user can see and do. They have to be right, and they have to be fast. Customers change plans at any time, so many subscription lifecycles run at once.
$ can user:42 open *
Illustration running in your browser. It shows the real system’s approach in simplified form; names and numbers are invented, and nothing here touches the real system.
What made it difficult
Right and fast
Permissions are checked constantly, so a check must be quick without ever being out of date.
Stale access
A cached answer that outlives a permission change means someone keeps access they lost.
Many plans at once
Subscriptions start, renew and end on their own schedules, concurrently.
How I solved it
Permissions, not just roles
Permission-based access control gives each module fine-grained rules instead of a few broad roles.
Cache hard, invalidate on events
Permission checks are cached aggressively, and an event clears the cache the moment a permission changes.
Plans that run themselves
Eloquent accessors and scheduled cron jobs move each subscription through its lifecycle, many at the same time.
One API for mobile
A complete RESTful API serves 7 mobile apps with real-time push notifications.
What I delivered
Re-architected access control for Dawamk, a 38+ module SaaS ERP at AcuteBusiness.
A dynamic subscription engine for concurrent plan lifecycles, geofenced attendance via Leaflet, and REST APIs behind 7 mobile apps.
Open-sourced Composer payment packages (Stripe, PayPal, PayTabs, DigiPay, EdfaPay, Al Inma Bank Pay) with webhooks and idempotency keys.
Built with
- Laravel 11
- PHP 8+
- MySQL
- Redis
- Leaflet
- Supervisor
- REST API