CourierOS
Multi tenant software that gives every Caribbean courier its own branded site, customer portal and back office.
Live in production at courieros.co


- Automated tests
- 240+
- Screens
- 66
- User roles
- 5
- Surfaces
- 3 in one app
The problem
Small couriers in Jamaica run on WhatsApp, spreadsheets and paper receipts. Customers cannot see where a package is, and staff spend the day answering the same question. Enterprise courier software is priced for companies ten times their size.
What I built
I took the order and tracking system I built for Ship'd JM and rebuilt it as a product. One Laravel application resolves the tenant from the request host, scopes every query to that tenant, and serves three surfaces: the CourierOS marketing and signup site, each courier's public site, and the portals behind it.
One codebase serves any number of couriers, each with isolated data, its own branding and its own customers. TODAY Shipping already runs on it.
What it does
- Multi tenant
- Payments
- Customer portal
- Admin dashboard
- Mobile responsive
Platform
- Self serve signup with Stripe subscription checkout and trials
- Each courier on its own subdomain, with custom domain support
- Per tenant branding: logo, colours and site copy
- Owner console with revenue, tenant health and suspend or reactivate
- Built in support inbox between couriers and the platform
Courier back office
- Package intake, status updates and full status history
- Pre alert review with customer invoice uploads
- Customer records, shipping rates and warehouse address management
- Reports and an activity log of every staff action
- Owner, admin and staff roles with fine grained permissions
Customer portal
- Instant account with a personal warehouse address and reference
- Pre alert shipments and upload invoices before they land
- Track every package from warehouse to collection
- Authorised pickup people, so someone else can collect
Under the hood
The full stack, from what you tap on screen down to where it runs. Frontend, backend, database and hosting are all designed, built and maintained by the same engineer.
- Frontend
- Vue 3
- Inertia.js
- TypeScript
- Tailwind CSS v4
- reka ui
- Chart.js
- Backend
- Laravel 12
- Fortify (2FA and passkeys)
- Laravel Cashier
- Wayfinder
- Resend email
- Data
- MySQL 8
- Tenant scoped models via a global scope
- Per tenant currency (USD and JMD)
- Infrastructure
- Laravel Forge
- Nginx
- Wildcard subdomains
- Stripe billing
Engineering detail
How tenancy works
Everything hangs off the request host. A middleware reads the subdomain or custom domain, binds the tenant, and a trait on every tenant owned model adds the tenant filter to every query and fills it on create. Session cookies are scoped to the exact host, so a login on one courier can never be used on another.
See it running
Real captures from the live site. Every one links to the same page in production, so you can check it yourself.
Next project
InvoiceFeedKeep scrolling
Want something like this?
Tell me what your business needs to do online. I will scope the smallest useful version with a fixed quote before any work starts, and look after it once it is live.


