DEV3 Waybrook – Courier & Parcel Delivery Laravel Script with Hubs, Run Sheets & COD Settlement (Flutter Apps)

A self-hosted courier and parcel network platform on Laravel 12 and Filament 4 with sender and courier Flutter apps: zone pricing, hubs, run sheets, proof of delivery, cash on delivery settlement, returns and claims. Admin and hub panels. Installer and demo data included.

by DEV3 TechnologiesVerified Author(0) 0 sales 1 viewsUpdated 05 Nov 2026

Video tour. Pick a section below to browse 116 screenshots in 29 sections.

App & phone tours

Tap play to watch each app. Nothing downloads until you do.

  • Courier app0:55
  • Sender app0:58

Waybrook is a courier and parcel platform that you host yourself, built by DEV3 Technologies on Laravel 12 and Filament 4, with two Flutter apps: one for senders and one for couriers. Senders book and track parcels, hubs scan and sort them, couriers deliver from run sheets with proof, and the platform settles cash on delivery. Staff work in an admin panel and hub staff in a hub panel; business senders get an account area. The demo network is a fictional courier, Waybrook Express, with three hubs around Tarnholm.

No live demo: 116 grouped screenshots and a desktop video tour show the 3D marketing site, the public rate and tracking pages, the admin, hub and account panels and both apps. Install it with the demo data to try every role on your own server.

Senders

  • A public price calculator (postcodes, weight and size in, every part of the price out), tracking by waybill that shows stations and times and never the recipient address, and a coverage page of postcode areas by zone.
  • A sender app to book a parcel in steps (route, parcel, service, options, review), with volume weight shown when a box is bulky, optional signature, insurance, fragile and cash on delivery flags, a pay screen, and a paper-style waybill card with a Code 128 barcode.
  • Parcel tracking with a timeline, proof of delivery (who signed, when and whether the location check passed), a failed attempt and reattempt, a return-to-sender state, pickups, an address book, a wallet with top-up, COD payouts and claims.
  • A business account area with parcels, invoices on credit terms, a wallet and an API key.

Hubs and the network

  • Three hubs with a code, zone, cut-off time and cash float. Hub staff scan parcels in (a parcel that belongs to another hub is not accepted and is logged), reweigh with a charged adjustment when the difference exceeds the tolerance, seal bags for one destination, build manifests and ship linehaul to the destination hub.
  • A rate card by service and lane with weight bands, an extra per 500 g and surcharges, and a coverage table of postcode areas with remote areas marked.
  • The full parcel flow through one transition table under a row lock: booked, picked up, origin hub, bag, manifest, linehaul, destination hub, run sheet, out for delivery, delivered, or failed attempt, then reschedule or return.

Couriers

  • A courier app with today's run sheet, loading by scanning (a ring fills as parcels are scanned), stop details, delivery by recipient code, signature or a photo at a sender-approved safe place, eleven reasons for a failed delivery with what happens next, pickup stops, return stops and a cash summary.
  • Couriers declare the cash they hold and see exact, short or over before handing it in. Failed stops must be scanned back before a run closes, and hubs can close or reassign a run for a courier who has vanished.
  • Earnings by week from a pay plan (rates by zone, weight bumps, failed-attempt pay and COD bonus), a weekly statement with lines, shortages and carry-in, and a dispute button while it is open.

Cash on delivery and money

  • The courier collects the exact amount, the hub counts the cash (exact, short or over), short counts wait for a controller and over counts go to suspense. Collections are held for a number of days you set, then paid out weekly to the sender.
  • Credit-account senders are invoiced monthly, charges follow how each parcel was paid, and already-billed amounts are credited back when they fall.
  • Claims for lost, damaged and late parcels with evidence and a decision, and an admin view of every collection from collected to paid out.

Admin and hub panels

  • An admin panel with a dashboard (parcels in the network, on-time rate, cash owed and a 3D hub wall), hubs, rate card, parcels with a scan timeline and price parts, weight adjustments, collections, COD due to senders, pay plans, claims, reports, settings, audit and roles.
  • A hub panel with inbound scan, bags, manifests, cash desk counts, returns shelf and the hub dashboard.

What is included

  • The Laravel application with Composer packages and compiled assets inside (no Node.js or Composer on the server), both Flutter projects in apps/, the shared DEV3 Flutter package, a web installer and HTML documentation.
  • Demo data for the fictional network: about 24,000 parcels (24,001 in the checked seed), 27,229 run stops, 6,825 COD collections and 3 hubs with 340 postcode areas. It is lighter than a large network, to keep the install near one minute.

Good to know

  • The scanner is simulated. Hubs and couriers scan by typing a code or using a demo scan view. There is no camera barcode plugin, so add one for real scanning.
  • There is no GPS plugin. Courier positions and the location checks use demo coordinates. Add a location plugin and a map provider for real routes. The hub wall is a 3D scene, not a map.
  • The admin and hub panels are English only. The public site, tracking and both apps include Arabic with right-to-left layout.
  • A COD parcel lost after the cash was collected is not wired into claim approval. Approving such a claim does not reverse the COD collection or payout automatically, and credit-account senders only get the invoice reduction, not a separate credit note flow. Handle these by hand.
  • Statements are PDF or HTML. There is no other export format.
  • The demo seed is about 24,000 parcels, which keeps the install near one minute. A sender's COD due total in the clearing view can read slightly negative because the seed includes reversals after payouts; the page explains it.
  • Payments, SMS and push are simulated by default. Stripe, Razorpay and PayPal drivers are included but were not run against real accounts.
  • The apps were not tested on physical devices. They build as debug Android packages and run on the iOS simulator.
  • Use MySQL or MariaDB on a live site. The Pest tests run on SQLite, where row locks do nothing; the concurrency checks that prove the locking run on MySQL 8.
  • Name: Waybrook is a working name checked by a web search only, not a trademark clearance. Check it before you launch under it.
  • No hosted demo. All senders, couriers and parcels in the screenshots are fictional.

Quality checks

Waybrook 1.0.0 passed the seven release gates of the DEV3 Laravel suite on the final code: static analysis (Larastan level 6, 0 errors, no baseline), 279 Pest tests with 2,263 assertions, a front-end size budget, migrations and seeding on MySQL 8 and SQLite, a headless-browser pass over 163 pages with 9 parallel-request race checks on MySQL (payout, settlement, run sheet and reschedule among them), an installer test from the zip, and a secret scan. The courier app passed analysis and 115 tests, and the sender app 130 tests, with debug Android and iOS simulator builds. A review of the money and custody code fixed 15 findings, and the race checks found and fixed two real bugs before release. Lighthouse scores were not measured.

How it's built

Architecture, stack, key decisions and the quality gates DEV3 Waybrook passed before release.

The engineering behind Waybrook: every status change through one transition table under a parcel lock, a fixed lock order for run sheets and cash, and a cash-on-delivery chain that ends in a weekly payout.

The problem it solves

A parcel network is a chain of custody. A parcel changes hands many times, and each hand must be recorded once and in order. A courier carries cash that belongs to a sender, and the hub must count it, hold it and pay it out without losing or doubling a cent. Failed deliveries, returns and reschedules must not leave a run sheet that cannot close. Several people can act on the same parcel, run or payout at once, and the numbers still have to add up.

Architecture and approach

Waybrook is a Laravel 12 application with Filament 4 panels at /admin, /hub and /account, a public booking and tracking site and a REST API used by two Flutter apps.

One transition table

Parcel status changes only through a state machine that applies a transition table under a row lock on the parcel. The lock order everywhere is parcel, run sheet (by id), then stop, with the courier before the run in cash counts and the payout before the collection in a COD reversal.

Custody rules

Declaring or counting cash is refused while a run has pending stops, failed stops must be scanned back before a run closes, and hubs can close, reassign, scan back and declare for a courier who has vanished. Returns finish end to end, through a return bag or same-hub return, a return stop on a run and a hand-over back to the sender.

Cash on delivery

The courier collects the exact amount, the hub counts it as exact, short or over, short counts wait for a controller and over counts go to suspense. Collections are held for a set number of days and paid weekly. The payout and settlement jobs run as scheduled commands, and the race checks on MySQL found and fixed a numbering deadlock and a counter clash in the seed.

Apps

The sender and courier apps share one API contract and a shared Flutter package, and start in a demo mode.

Quality gates and results

Waybrook 1.0.0 passed the seven release gates on the final code: 279 Pest tests with 2,263 assertions, 163 pages in a headless browser with 9 race checks on MySQL, the installer test from the zip and a clean secret scan. The courier and sender apps pass analysis and 115 and 130 tests. A review of the money and custody code fixed 15 findings.

Limits are listed on the item page: the scanner is simulated, there is no GPS plugin, and a COD parcel lost after collection is not wired into claim approval.

Tech stack

Area Technologies
Application Laravel 12, Filament 4, Blade, REST API
Parcels Parcel state machine, Transition table under lock, Run sheets, Bags and manifests
Money COD collections, Cash counts, Weekly payouts, Credit-account invoices
Apps Flutter sender app, Flutter courier app, Shared dev3 Flutter package, Demo mode
Quality Pest, Larastan level 6, Headless browser smoke, MySQL race checks

Inside the build

Hero: A parcel rides onto a platform scale in a cutaway hub, with the read-out settling on its weight. Hero — A parcel rides onto a platform scale in a cutaway hub, with the read-out settling on its weight.

Weigh: Priced on the scale: the chargeable weight is the higher of real and volumetric. Weigh — Priced on the scale: the chargeable weight is the higher of real and volumetric.

Guides & articles

Practical guides and engineering write-ups for DEV3 Waybrook.

Courier and parcel software: 7 things to check before you pick one

Last updated
Courier and parcel software: 7 things to check before you pick one: DEV3 Waybrook

A courier network moves parcels and other people's money. Here are seven things to check before you pick software, with DEV3 Waybrook as the worked example.

Waybrook hero: a parcel rides onto a platform scale in a cutaway hub

1. Is the price explained?

Senders should see every part of the price before they book. Waybrook prices by weight, zone and service, and shows a volume weight when a box is bulky.

2. Does every scan count once?

Look for a single status table. Waybrook changes a parcel's status only through one transition table under a lock, so a double scan cannot move a parcel twice.

3. How do hubs work?

Inbound scans, bags, manifests and a cash desk. A parcel that belongs to another hub is refused and logged.

Collections: every cash on delivery collection from collected to paid out

4. What counts as proof?

A recipient code, a signature, or a photo at an approved safe place, with a location check. Waybrook records who, when and whether the check passed.

The waybill card with a Code 128 barcode

5. How is cash handled?

Look for exact, short and over counts, a hold period and a weekly payout to the sender.

6. What happens when it fails?

Failed attempts, reschedules, returns and claims should all have a path. Waybrook finishes returns end to end, but a COD parcel lost after collection is not yet wired into claim approval.

7. What is not finished?

Ask for the limits in writing. For Waybrook: the scanner is simulated, there is no GPS plugin, and the admin and hub panels are English only.

The courier app: loading a run sheet by scanning

Video tour of Waybrook

Frequently asked questions

The complete source code (version 1.0.0) as a download from your account, with the setup and usage guides shown on this page. You can modify the code to suit your product.

Buying guides: Laravel scripts with Filament panels and a web installer · Next.js or Laravel for a SaaS script?

More from this author

View all

Related in Web Scripts & Software

View all