dev3 ·
DEV3 Stallora is a self-hosted city marketplace: one cart splits into a package per shop and a rider delivers each package. Laravel 12, Filament 4 (/admin, /vendor), a Blade storefront, a versioned REST API under /api/v1 and three Flutter apps (customer, shop, rider).
Decisions that mattered
- Zones are data: a circle or polygon whose settings hold base fee, fee per kilometre, free-over threshold, minimum order, rider pay and a surge multiplier. A drop-off outside every zone cannot check out.
- Commission resolves shop rule first, then category tree, then a global rule, then the default.
- Auto dispatch offers a job to the nearest free online rider, expires the offer after a timeout and re-offers; after the maximum attempts the job goes to the dispatch board.
- Pick-up needs the shop's 4-digit code and drop-off the customer's code, a photo, or both.
- Money is integer minor units on a double-entry ledger from the shared core. A delivered package credits the shop net of commission and holds it until a scheduled command releases it.
Limits: real payment gateways, SMS and push were not run against live accounts, apps were not tested on physical devices, and one known gap is documented: two unpaid orders can both pay for the last unit of stock.
What we would do next: close that stock gap.
Questions welcome.
#laravel#flutter#delivery#case-study
0