Skip to main content
Projects

Three platforms, all of them shipped

Every figure below — module counts, endpoint counts, payment rails — comes from the products' own documentation, and every screenshot is from the running software. Nothing here is a mockup. ServeSync is one of the three and runs all of restaurants, pharmacies and marts: the pharmacy and mart products were folded into it as editions rather than kept as separate codebases.

3
Platforms
93
Live modules
431+
REST endpoints
115
Capabilities detailed
Multi-vertical POS3 editions

ServeSync POS

One POS for restaurants, pharmacies and marts

One point-of-sale product that runs three different kinds of business. The superadmin picks the edition at first run — restaurant, pharmacy or mart — and that choice drives the theme, the terminology and which of the 33 modules appear: a pharmacy gets prescriptions, a controlled-drug register and expiry tracking but no floor plan; a mart gets promotions, gift cards and scale labels but no kitchen display. Underneath it is the same offline-first, multi-branch codebase, so a fix or a feature lands in all three at once. Previously three separate products (ServeSync, PharmaSync and Vendeez); the pharmacy and mart builds were ported into this one and retired. The pharmacy and mart captures in the gallery were taken in those standalone builds — the editions run the same shell, re-themed and re-labelled.

Built for Restaurants, cafés and cloud kitchens; retail pharmacies and medical stores; supermarkets, grocery stores and mini-marts

33
Modules
3
Editions
236
REST endpoints
4
Runtime deps
ServeSync POS — New Order: Modifiers, add-ons, discounts and split tax

New Order

Modifiers, add-ons, discounts and split tax

1/54

At a glance

  • Restaurant, pharmacy or mart — chosen at first run, themed and relabelled to match
  • 33 modules, gated per edition: 26 shared, 4 pharmacy-only, 3 mart-only
  • Offline-first PWA — an outbox replays every sale on reconnect
  • Multi-branch by design: one owner login over many shops, one central warehouse
  • Pharmacy: batch stock with FEFO dispensing, Rx gating and a controlled register
  • Mart: barcode scanning three ways, promotions, gift cards and scale labels
  • Restaurant: kitchen display, live floor plan, delivery and Foodpanda
  • PRA / FBR fiscal invoicing shared by all three editions
  • Silent ESC/POS printing straight to the thermal printer, no browser dialog
  • A 2 MB Windows thin client that reloads the new UI when the server updates
3Verticals from one codebase

Languages

  • JavaScript
  • HTML
  • CSS
  • C#

Technologies & frameworks

  • Node.js
  • Express
  • Socket.IO
  • Vanilla JS PWA
  • ESC/POS
  • ZXing
  • .NET + WebView2
  • Electron
  • Docker

Payments

Cash · Card · JazzCash · EasyPaisa · Raast · Bank transfer · Gift card · Credit on account

Every module, in detail

48 capabilities across 8 areas

Editions — how one product becomes three4

Edition picker at first run
The superadmin chooses restaurant, pharmacy or mart on first launch, and can change it later in Setup. The choice is stored server-side and served pre-login, so even the splash and login screen are already themed for the business. Existing restaurant installs migrate to the restaurant edition and are never asked.
Runtime theming, not separate builds
Each edition carries its own name, accent and vocabulary — restaurant teal #33bca8, pharmacy blue #004aad, mart orange #f97316 — swapped into CSS custom properties at boot. One installer therefore ships all three editions; there is no per-vertical build to keep in step.
Terminology that matches the trade
The same screens are relabelled per edition: Order becomes Sell, Menu becomes Medicines or Products, Customers becomes Patients, Vendors becomes Suppliers. Staff read their own language rather than restaurant jargon.
Module gating per edition
26 modules are shared. Four are pharmacy-only (Prescriptions, Doctors, Controlled, Expiry) and three are mart-only (Promotions, Gift Cards, Labels). Five restaurant modules — Tables, Kitchen, Delivery, Foodpanda, R&D — are hidden outside the restaurant edition. Gating is enforced in the sidebar and again server-side, on top of the package and role checks.

Point of sale & floor (all editions)8

Point of sale
Dine-in / takeaway / delivery for restaurants, scan-to-cart for marts and pharmacies. Modifiers and per-item add-ons, % or fixed discounts, surcharges, promo and loyalty redemption, split and method-based tax.
Orders & invoices
The full order list with manage, void and refund behind a supervisor PIN, pre-bill and customer bill, and a QR code on every receipt.
Silent thermal printing
Raw ESC/POS spooled to the configured Windows or system printer, so Print and the kitchen ticket go straight to the thermal head with no browser dialog and no GDI garbage. Receipts, KOTs, pre-bills and warehouse transfer invoices all print direct, with a browser window only as a fallback.
Receipt customisation
Font size, style and weight per line, separate controls for the title and thank-you text, a logo watermark, contact number, NTN and a QR that renders as a raster bitmap so it prints on thermal heads that never supported the native QR command.
Till & shift
Opening float, cash in/out, mid-shift X-report, Z-report with variance and order counts, and one-step cashier handover.
Catalogue management
Categories and sub-categories, recipes, modifier groups, custom add-ons — labelled Menu, Medicines or Products depending on the edition.
Customers & CRM
Profiles with purchase history, loyalty points and tiers, credit on account, and Excel export. Shown as Patients in the pharmacy edition.
Reports & BI
Sales, by-channel, discounts, tax by method, top sellers and forecast — with the owner rolling every figure up across branches.

Restaurant edition5

Floor plan & tables
Live table status with dwell-time colour escalation, waiter assignment, add-to and view occupied tables, merge and transfer — and a refusal to punch a new order onto a table that is already occupied.
Kitchen Display (KDS)
Live tickets per station, bump and recall, 86-items, KOT notes, and a cross-branch view for the owner. The KOT prints centred with a banner header, items left and add-ons right, and names whoever punched the order.
Delivery
Zones and riders with live Google Maps plotting, geocoding, one-tap navigate links and customer GPS share.
Foodpanda channel
Aggregator orders as a first-class channel through a secret-gated webhook, with accept/decline and SKU mapping — and the channel marked on the kitchen ticket.
R&D Lab
Recipe development kept off the live menu until it is ready, with its own purchasing and a costing engine returning food-cost percentage, gross profit and a suggested price. Gated to the Premium package.

Pharmacy edition6

Batch stock with FEFO dispensing
Medicines are stocked by batch with manufacture and expiry dates. A sale allocates first-expiry-first-out and records which batches it consumed; expired stock is excluded from sellable stock rather than merely flagged.
Expiry watch
An expiry report over every batch — what has expired, what is close — so slow movers are returned or discounted before they are worthless.
Prescriptions & doctors
Prescriber records and prescriptions with auto-numbered RX-n, patient, doctor, diagnosis, medicines and status. Dispensing a prescription at the till marks it dispensed and tags the order.
Rx enforcement at the counter
Items flagged Rx-required or controlled cannot be sold without a linked prescription — the payment is refused, not warned about — unless a manager overrides, and the override is recorded. Generic name and strength sit on the item so the cashier can match what was prescribed.
Controlled-drug register
Every controlled dispense writes to its own register with the medicine, batch, prescription, who dispensed it and when, readable as an audit trail rather than reconstructed from sales.
Manufacturers & suppliers
A manufacturer field on every medicine, and each batch linked to the supplier it came from, so a recall or a bad batch traces back to one vendor.

Mart & retail edition7

Barcode scanning, three ways
A USB or Bluetooth gun captured globally with no need to focus the search box, the device camera, or a staff phone paired over Socket.IO that streams its scans to the till. All three land in the same scan-to-cart path.
Barcode lookup
An unknown barcode is checked against the catalogue, then Open Food Facts, then UPCitemdb — so a new line can be created at the counter instead of set aside.
Weighed & pack/loose selling
Produce sold by weight with a price per kg and a PLU, and packaged goods sold as a full pack or loose units. Stock deducts in kilos for weighed items and as a fraction of a pack for loose ones.
Barcode & scale labels
An EAN-13 generator printing shelf labels and scale labels with the price embedded in the barcode, so the label scans at the till at exactly the price printed on it. Verified generate-then-scan, not just generated.
Promotions engine
Buy-X-Get-Y, category percentage off, combo pricing and flat discounts, computed into the cart total automatically rather than keyed in by the cashier.
Loyalty tiers
Silver, Gold and Platinum awarded on lifetime spend, with a tier bonus on points earned and the tier shown against the customer at the till.
Gift cards
Issue, top up, look up a balance and disable a card, plus a gift-card tender that caps at the balance, allows a partial payment and deducts with a history entry.

Operations & supply chain (all editions)5

All-branches command centre
Every branch's live sales, open orders, alerts and who's on shift — each card drilling into that branch's reports, stock, staff and demand.
Central warehouse
Stock held behind the shop floor: branch demands → dispatch → receive, with goods-received notes and a transfer invoice that prints direct to thermal.
Inventory
Two linked inventories with live 'makeable' counts for recipes, batch tracking where the edition needs it, FIFO/LIFO valuation, expiry flags and Excel export. Retail sales deduct stock on payment.
Purchasing & approvals
A dedicated purchaser role with its own kiosk — limited to demand, vendors and warehouse — plus an owner approval path, where only a purchaser or the owner can approve or reject a purchase order.
Settings & packages
Branches with quick rename, tax rules, printers, OTP, branding, access control, integrations and the edition switch — plus three subscription packages whose module gating is enforced in the sidebar and again server-side.

Back office & compliance (all editions)6

Accounts
P&L, cash book, journal, payables and receivables, exported as a single Excel workbook.
HR
Attendance, payroll runs, advances and leaves across all branches, with staff assigned to a specific branch so per-branch teams stay separate rather than merging into one list.
Vendors & payables
Supplier records and invoices with pay-now or pay-later terms and payment reminders, plus warehouse purchase invoices for goods received in. Labelled Suppliers in the pharmacy and mart editions.
Expenses
Petty cash and category expenses feeding straight into the P&L.
Promos
Promo codes as a percentage or fixed amount, with spend caps and usage tracking.
PRA / FBR fiscal
Reports paid invoices to Punjab and Federal tax authorities, printing the official invoice number, QR and NTN on every receipt.

Field & guest apps7

Windows desktop client
A .NET and WebView2 shell that asks once for the POS server address and then loads it. Updating the server updates every till — no reinstall, no version drift across a floor of terminals. Ctrl+Shift+O repoints it, and a failed load returns to the setup screen rather than a blank window. One installer carries all three editions.
Waiter order pad
Mobile dine-in and takeaway punching from the floor, table-aware, with PIN login. The login screen only offers the companion apps that the current edition actually uses.
Rider delivery app
A phone-login field app listing assigned deliveries with navigate, call and status updates.
Phone scanner
A staff phone paired by QR that becomes a scanner, relaying each scan to the till over Socket.IO for selling or stock-in.
Customer QR self-order & kiosk
A scan-to-order card menu with its own per-device theme, cart and checkout, which doubles as a self-service kiosk.
Customer display
A customer-facing second screen mirroring the cart live, working offline over a same-origin broadcast channel.
Order tracking
A guest order-journey page linked from the confirmation, so nobody has to phone the branch.

Packages & pricing

3 plans

Per branch, billed monthly. The package gates which modules a branch gets, enforced in the sidebar and again server-side. Edition-specific modules — pharmacy dispensing, retail promotions — come with the edition, not with a higher tier.

Basic

PKR 5,000/ month

Core POS to run a single shop

  • Point of sale and the edition's own modules
  • Tables and kitchen display (restaurant)
  • Invoices, customers & loyalty
  • Catalogue management, till & shift
Enquire

Standard

most taken

PKR 10,000/ month

Everything to run and grow one location

  • Everything in Basic
  • Inventory & stock, demand planning
  • Staff, vendors & payables, promos
  • Expenses, delivery, reports & analytics
Enquire

Premium

PKR 15,000/ month

The full suite — all modules and multi-branch

  • Everything in Standard
  • Multi-branch command centre & transfers
  • Central warehouse, HR & payroll, accounting
  • Foodpanda, PRA / FBR fiscal, R&D Lab
Enquire

Prices are what ServeSync POS bills today and exclude hardware, on-site installation and data migration — those are quoted per outlet once we know what you already have.

Hospitality22 modules

StaySync Hotel ERP

One login, every property

A multi-property hotel ERP: a complete Property Management System — reservations through front desk, folio and checkout — surrounded by 21 live modules covering operations, revenue centres, supply chain, finance, HR and IoT. One login controls many hotels, resorts and villas with shared guests, loyalty and central reporting.

Built for Hotel groups, resorts, serviced apartments and villa portfolios

22
Live modules
66
Smoke-test checks
2
Seeded properties
3300
Runs on port
StaySync Hotel ERP — Dashboard: Occupancy, ADR, RevPAR and revenue trend

Dashboard

Occupancy, ADR, RevPAR and revenue trend

1/19

At a glance

  • One login across many properties with shared guests and CRM
  • Full PMS: reservations, availability engine, check-in and check-out
  • Live room rack combining occupancy and housekeeping status
  • Folios with auto-posted room charges, tax and split payments
  • Channel manager syncing OTA rates, inventory and commission
  • Five revenue centres beyond rooms: F&B, banquet, spa, laundry, room service
  • Per-room IoT registry for smart locks, thermostats and energy meters
  • Occupancy, ADR and RevPAR analytics rolled up across the portfolio
UnlimitedProperties per login

Languages

  • TypeScript
  • TSX
  • SQL
  • CSS

Technologies & frameworks

  • TypeScript
  • Express
  • Socket.IO
  • React
  • Vite
  • Prisma
  • PostgreSQL
  • Docker

Payments

Cash · Card · JazzCash · Easypaisa · Bank transfer · City ledger

Every module, in detail

22 capabilities across 4 areas

Front office (PMS)6

Reservations
Walk-in, OTA, corporate, group and web bookings against a live availability engine, with check-in and check-out.
Front desk
A live room rack with assign-on-check-in, and a checkout gated on the folio balance so nobody leaves owing.
Room management
Room types, rate plans, and live room plus housekeeping status.
Housekeeping
A Kanban board running pending → in progress → done → verified, with tasks created automatically on checkout.
Folio & billing
Auto-posted room charges and tax, F&B, service and discount lines, split and multi-method payments, A4 invoices and thermal receipts.
Room Service POS
A menu and cart that charges straight to the room folio rather than taking a separate payment, with the menu editable in place — add, edit or remove a dish without a developer.

Operations & revenue centres6

Maintenance
Work orders by area, category and priority, with assignment and resolution tracking.
Laundry
Guest, linen and uniform orders with an express tier and a status pipeline.
Banquet & events
Halls and bookings for weddings, conferences and more, with package pricing and a full booking lifecycle.
Spa & salon
Services, appointments, therapist assignment and completion.
Channel manager
OTA channels with connect and disconnect, rate and inventory sync, and commission tracking.
Loyalty & marketing
Campaigns over email, SMS and WhatsApp, plus promo codes.

Finance & supply chain5

Finance & accounting
P&L comparing revenue against expenses, expenses by category, a chart of accounts and the ledger.
Procurement
Vendors and purchase orders with computed totals and an approve-then-receive flow.
Inventory
Stock levels with reorder alerts, stock value and adjustments.
Asset management
An asset register tracking purchase cost against current value, warranty and status.
HR & payroll
Employees and payroll runs covering basic pay, allowances, deductions and net, with finalisation.

Platform & intelligence5

Multi-property
One login opening many properties, each scoped separately but sharing guests and CRM, with an executive portfolio view over all of them.
Super administration
Hotel group and properties, a full audit log, and three subscription packages (Starter, Professional, Enterprise) whose module gating is enforced rather than merely hidden in the nav.
Staff & role management
Add and edit staff with their PIN, role, property access and active state, and build roles from department checkboxes plus a per-module None / Read / Full permission picker — so access is composed in the UI rather than requested from whoever has database access.
BI dashboard & reports
Occupancy, ADR, RevPAR and revenue with trends and a multi-property rollup.
Smart hotel (IoT)
A per-room device registry covering smart locks, thermostats and energy meters.

Packages & pricing

3 plans

Billed monthly. Each tier unlocks a set of navigation modules and is a superset of the one below; the vendor can enable or disable the whole system, and the owner can pay and renew in-app.

Starter

PKR 15,000/ month

Run the front desk

  • Reservations & front desk
  • Room management & housekeeping
  • Guest CRM
  • Folio & billing plus invoices
  • Dashboard & reports
Enquire

Professional

most taken

PKR 25,000/ month

Operations & revenue centres

  • Everything in Starter
  • Room-service POS & inventory
  • Maintenance & laundry
  • Banquet, events & spa
  • Loyalty, marketing & channel manager
Enquire

Enterprise

PKR 35,000/ month

Full multi-property ERP

  • Everything in Professional
  • Multi-property portfolio
  • Finance & accounting
  • HR & payroll
  • Procurement, assets and Smart Hotel (IoT)
Enquire

Prices are what StaySync Hotel ERP bills today and exclude hardware, on-site installation and data migration — those are quoted per outlet once we know what you already have.

Transport & Logistics38 modules

Fleet Flow

Smart fleet. Real-time control.

A multi-tenant transport management platform for truck fleets: vehicles, drivers, customers, shipments and trips with a lifecycle the software enforces rather than trusts, a drag-and-drop dispatch board, a live-tracking feed, and the whole upkeep side — fuel, maintenance, workshop jobs, tyres and parts. Built on a NestJS API and a Next.js console over PostgreSQL and PostGIS, with tenant isolation enforced at four layers so one company's data cannot reach another's. Thirty-six API modules are in — including a finance tier where every invoice, payment, expense and payroll run posts a balanced double-entry journal, a driver app and customer portal, public tracking, and a command centre with analytics and a plain-language assistant. Route planning was the last placeholder in the console and it is now in, alongside circular geofences matched by haversine, single-sign-on through Plutox ID, and three shells — a .NET desktop window for the office and driver and owner apps for background GPS and push — that wrap the same console rather than reimplementing it.

Built for Trucking companies, logistics operators and freight brokers running their own fleets — from a dozen trucks to several hundred across branches

68
Prisma models
195
API endpoints
38
API modules
8 / 8
Phases shipped
Fleet Flow — Dashboard: Utilisation, 30-day trip trend and six-month revenue

Dashboard

Utilisation, 30-day trip trend and six-month revenue

1/38

At a glance

  • Multi-tenant by design — tenant isolation enforced at four layers
  • Trip lifecycle validated against a transition map, not trusted
  • Conflict detection dry-runs an assignment before it is committed
  • Driver assignment over a time window, so history survives reassignment
  • Shipment totals derived from cargo lines, never typed twice
  • 190 granular permissions across 15 groups and nine seeded roles
  • A drag-and-drop dispatch board that refuses to double-book a truck
  • Fuel, maintenance, workshop, tyres and parts, all against the vehicle
  • Double-entry accounting where debits equal credits, enforced three ways
  • A driver app with proof of delivery, and public tracking with no login
  • A command centre and a plain-language assistant over live data
  • Postgres row-level security, verified across 59 tables, not just described
  • Overdue is derived from today's date, never stored and never stale
  • Per-tenant numbering that survives two concurrent dispatchers
  • Vendor kill switch that revokes every live session for a company
4Tenant isolation layers

Languages

  • TypeScript
  • TSX
  • SQL
  • CSS

Technologies & frameworks

  • TypeScript
  • NestJS
  • Next.js 15
  • Prisma
  • PostgreSQL 16
  • PostGIS
  • Redis
  • Docker

Every module, in detail

45 capabilities across 7 areas

Operations6

Vehicles
Full records with plan-limit enforcement, a status lifecycle that refuses to move a truck mid-trip, soft delete that releases the driver and blocks while trips are open, and a per-vehicle count of documents expiring inside 30 days.
Drivers
Assignment to a truck over a time window rather than a foreign key, so "who was driving on the 14th" survives every later reassignment. One primary driver per truck, enforced by a partial unique index, and expired licences surfaced on the list.
Customers
Contacts, credit limit and payment terms, with deletion blocked while shipments are in progress.
Shipments
Cargo lines with concurrency-safe numbering and an opaque public tracking code minted at creation. Header weight and value are derived from the lines — a header that disagrees with its items is the classic source of billing disputes.
Trips
Stops, shipment links, rate and advance, with an append-only event timeline. Every status move is applied with its side effects in one transaction: the truck, the driver, every shipment on board and the timeline entry all move, or none do.
Conflict detection
Dry-runs an assignment and reports overlapping trips, unavailable trucks, drivers on leave and licences expiring mid-trip. Conflicts block assignment unless an override reason is supplied — and the reason is recorded.

Dispatch, tracking & upkeep8

Dispatch board
Trips laid out in lanes — needs a truck, scheduled, at pickup, in transit — with trucks and drivers down the side. Drag one onto a trip, or select the trip and use the assign buttons, which keeps the whole board usable from the keyboard.
Live tracking
Position, speed, heading and staleness per truck, with a 15-minute silence threshold and filters for moving, idle and stale. The table is the feed the map draws from, so it stays useful before a Mapbox token is configured.
Fuel
Fill-ups logged against the vehicle and the trip, so consumption is measurable per truck rather than as one monthly invoice.
Maintenance
Service schedules and jobs by vehicle, tracked against odometer and date so a due service surfaces before it becomes a breakdown.
Workshop
Job cards through the workshop — what is in, what it needs, who is on it and what it cost.
Tyres
Tyre history per axle position, with a partial unique index enforcing one tyre per position so a fitting cannot be recorded twice.
Parts inventory
Stock levels for parts and consumables with reorder points, drawn down by workshop jobs rather than counted separately.
Running costs
Cost per kilometre assembled from fuel, maintenance, tyres and trip expenses — the figure that decides whether a rate is worth accepting.

Finance & accounting6

Invoices
Raised against trips, with tax credited to a liability rather than revenue — the carrier collects it for the state, and booking it as income overstates earnings and understates what is owed at filing. Overdue is derived from today's date, so it is never stale.
Payments
Receipts allocated against invoices without touching revenue, which was recognised when the invoice issued. Crediting it again on receipt is the double-count that reports twice the income.
Expenses
Costs booked against a trip, a vehicle or the business, feeding both the P&L and the per-kilometre running cost.
Payroll
Runs that expense the gross and treat an advance as money owed back rather than salary, so the same rupee is not billed twice. Recovery is capped at a share of gross — clawing back a whole balance in one run is arithmetically correct and operationally ruinous.
Double-entry ledger
Every financial act posts a balanced journal, enforced three deliberately overlapping ways: a check that refuses an unbalanced draft with a named rule, posting inside the caller's transaction because the constraint is deferred to commit, and a database trigger that makes an unbalanced journal impossible even from psql.
Accounting reports
Trial balance, profit and loss, and receivables ageing — checkable precisely because the ledger balances, so a wrong figure is a posting rule to fix rather than a number nobody can trace.

Outside the office5

Driver app
A driver's own trips on their phone, with status updates and proof of delivery captured where the handover actually happens rather than re-keyed at the depot that evening.
Customer portal
A customer signs in and sees their own shipments, documents and invoices — which removes the phone call that was previously the only way to answer "where is my load".
Public tracking
An opaque code minted at shipment creation opens a tracking page with no login at all, and an invalid code says so plainly rather than leaking whether it ever existed.
Proof of delivery
Signature and photo captured against the stop, attached to the trip and visible to the customer through the portal.
SOS
A driver-side panic path that reaches the operator immediately, because a truck in trouble cannot wait for the next status poll.

Analytics & command centre5

Command centre
The whole operation on one screen — trips in flight, exceptions, and what needs a decision now, rather than five tabs an operator has to correlate by hand.
Analytics
Utilisation, cost and margin sliced by vehicle, driver, customer and lane, so an unprofitable lane is visible before the quarter closes.
Reports
Operational and financial reports over the same figures the dashboard shows, exportable rather than screenshotted.
Assistant
Ask the fleet a question in plain words and get an answer drawn from live data, which is a shorter path than knowing which report holds it.
Alerts & notifications
Licences, vehicle documents and services falling due, surfaced before they expire rather than discovered at a checkpoint.

Platform & tenancy6

Multi-tenancy
Four enforcement layers: the tenant comes from the signed JWT only, AsyncLocalStorage carries it through the request, and a Prisma extension injects it into every read, stamps it on every write and throws if a scoped query runs without one. The scoped-model set is derived from the schema at boot, so a model added later is protected the day it exists.
Authentication
Registration with automatic tenant provisioning, argon2id hashing, rotating refresh tokens with family-wide revocation on reuse, TOTP two-factor with single-use recovery codes, phone OTP for drivers, and rate limits on every credential endpoint.
RBAC
190 permissions in 15 groups across nine seeded roles, with wildcard expansion, a global guard and cache-backed resolution — so a revoked role takes effect immediately rather than when the token expires.
Platform console
The vendor's own account: suspend a company to revoke every live session and block both sign-in and tenant switching, reactivate, extend the period after payment, change plan, or enter a company through the audited switch-tenant path.
Branches & users
Multiple branches per company, user management, invitations and per-branch scoping.
Audit log
Append-only at the database level via a trigger, so history cannot be quietly rewritten from the application tier.

Data & integrity9

Schema
68 Prisma models covering all eight phases, so later features slot into a schema that already anticipated them instead of forcing a migration of live data.
Constraints Prisma cannot express
A hand-authored SQL layer: check constraints (a geofence is a circle or a polygon, never both; a ledger line is a debit or a credit), partial unique indexes, and a deferred constraint trigger asserting that every journal balances.
Row-level security
The fourth tenancy layer, applied to every table carrying a tenantId and derived from the system catalogue rather than a hand-kept list — one forgotten entry would leave a table unprotected with nothing looking wrong. The API connects as the table owner, so behaviour is unchanged; what it stops is every other route in, psql and BI tools included, which see nothing until they declare a tenant. Verified across 59 tables rather than asserted.
Boot guard
The API refuses to start in production while any placeholder secret survives, and refuses if the two JWT secrets match — sharing one lets a stolen access token be replayed as a refresh token, turning a 15-minute exposure into a 30-day one. A warning in a log is not a control.
CI & verified backups
Typecheck, tests, lint and build on every push, then a real Postgres, migrate, seed, verify RLS and seven live smoke suites — because every defect this project has actually shipped was invisible to a typechecker. Backups run dump, restore and verify, the last restoring into a scratch database and counting rows, since an untested backup is a hope.
Spatial & search indexes
PostGIS geography columns with GiST indexes for tracking, BRIN indexes for time-series telemetry, and trigram indexes so search stays fast as the tables grow.
Numbering
A per-tenant sequence incremented by one atomic upsert, allocated inside the creating transaction. MAX(number) + 1 races under two concurrent dispatchers, and a unique violation on trip creation is a terrible way to find out.
Shared contracts
The permission catalogue, role definitions, status enums, the legal trip-transition map, the GPS packet contract and the Zod schemas all live in one package used by API and console alike, so a status string cannot drift between tiers.
Dashboard
Real fleet, driver, trip and shipment tallies, month-to-date revenue, expenses and profit, on-time delivery over 30 days, a daily trip trend and a six-month revenue series.

Packages & pricing

3 plans

Billed monthly per company. Limits are enforced server-side, so a plan is a real ceiling rather than a suggestion.

Starter

PKR 15,000/ month

15 vehicles · 10 users · 1 branch

  • Trips, tracking, fuel and maintenance
  • 30 days of GPS retention
  • One branch
Enquire

Growth

most taken

PKR 55,000/ month

100 vehicles · 50 users · 5 branches

  • Everything in Starter
  • Workshop, parts inventory and the finance tier
  • Customer portal
  • 90 days of GPS retention
Enquire

Enterprise

PKR 180,000/ month

Effectively uncapped · 500 branches

  • Everything in Growth
  • AI-assisted dispatch and the command centre
  • API access and white-labelling
  • 365 days of GPS retention
Enquire

Prices are what Fleet Flow bills today and exclude hardware, on-site installation and data migration — those are quoted per outlet once we know what you already have.

Delivery roadmap

8 of 8 shipped

  1. Phase 1Foundation

    Monorepo, 68-model schema, authentication, multi-tenancy, RBAC, the design system and the app shell.

  2. Phase 2Operational core

    Vehicles, drivers, customers, shipments, trips with an enforced lifecycle, and a dashboard on real tenant data.

  3. Phase 3Dispatch & live tracking

    Dispatch board, live-tracking feed, circular geofences with crossing detection, alerting and route planning with named lanes — all in.

  4. Phase 4Fleet upkeep

    Fuel, maintenance schedules, workshop job cards, tyre positions and parts inventory — all five in, each tied to the vehicle rather than kept in a separate book.

  5. Phase 5Finance

    Invoices, payments, expenses, payroll and a double-entry ledger, all in — debits equal to credits, enforced at the service, in the transaction and by the database.

  6. Phase 6Portals & driver app

    Driver app with proof of delivery and SOS, a customer portal, and public tracking on an opaque code — all in.

  7. Phase 7Analytics & command centre

    Command centre, analytics, reports, notifications and a plain-language assistant over live data — all in.

  8. Phase 8Hardening & launch

    Row-level security applied as the fourth tenancy layer and verified across 59 tables, a boot guard that refuses to start on placeholder secrets, CI that runs seven live smoke suites against a real Postgres, and backups whose restore is actually verified. The load test and a containerised deploy are the two items still outstanding.