MOTNIX
work / zajil · case study
CLIENT PROJECTstatus: live in Sudan

Zajil

A parcel and errand delivery platform for a Sudanese logistics business, designed and built from scratch by MOTNIX.

DEMO · SIMULATED DATA
live customer tracking
order confirmation with two stops
manager dashboard

01Overview

Client
A Sudanese logistics and delivery business
Classification
CLIENT PROJECT
MOTNIX role
Designed and built the complete system from scratch: product and UI/UX design, the Flutter application, the backend, integrations, delivery workflow and operational logic
Status
Live in Sudan
Platform
One Flutter application serving four roles: customer, driver, admin and manager
Stack
Flutter · Firebase · TypeScript Cloud Functions · Google Maps / Routes

02The problem

Before Zajil, delivery requests arrived through WhatsApp and phone calls.

That made it harder to keep requests organised, coordinate how deliveries were carried out, track the state of each request, and give customers a clear way to follow their delivery.

Zajil was built to move that flow into one system where requests can be created, managed, dispatched and tracked.

03What we built

MOTNIX designed and built the complete system: one Flutter application with four roles, and the backend services behind it.

customer · live tracking
Customer appCreate delivery requests and follow each delivery live.
driver · active delivery
Driver workflowReceive dispatched deliveries, work through up to five stops, and see wallet and commission.
admin · home
Admin operationsManage incoming requests, drivers, wallet top-ups and day-to-day delivery operations.
manager · dashboard
Manager dashboardManage pricing, operational settings, performance views and administrative controls.
DEMO · SIMULATED DATA

04How a delivery moves through the system

DIAGRAMThe stages of the system, not a recorded order.
  1. Requestcustomer
  2. Server pricingcloud functions
  3. Driver dispatchcloud functions

    fallback · declined or lapsed → next driver

  4. Approval & commissioncustomer · cloud functions
  5. Live trackingcustomer · driver
  6. Multi-stop deliverydriver
  7. Completiondriver
runs server-side in Cloud Functionsin the app, by role

05Engineering decisions

decision 01Server-authoritative pricingimplemented behaviourDelivery pricing is calculated server-side from the stored route and the pricing settings; a fee sent by the app is never trusted.
decision 02Sequential driver dispatchimplemented behaviourNearby drivers are offered the order one at a time, nearest first. A declined or lapsed offer moves to the next driver, and the order can then be opened to the wider fleet.
decision 03Commission on customer approvalimplemented behaviourThe customer approves the proposed driver and price before any money moves. Only then does server-side logic take the commission from the driver's wallet, and it is refunded if the order is cancelled.
decision 04Idempotent order creationimplemented behaviourEach checkout carries one order id, so a retried submission lands on the same order instead of creating a second one.
decision 05Offline-write protectionimplemented behaviourThe app keeps a record of a submission until the server confirms it, and refuses a new order while one is unresolved, so a lost connection cannot become two orders.
decision 06Arabic / RTL-firstimplemented behaviourArabic is treated as a primary interface direction, with right-to-left behaviour designed into the application rather than added later.

06Architecture

DIAGRAM
Zajil Flutter appone application, four roles
firebase
Cloud FunctionsTypeScript, server-side: delivery pricing, driver dispatch, approval, wallet and commission
DataCloud Firestore and Cloud Storage, protected by security rules; rules tested in automated CI
Google Maps Platformmaps and live tracking in the app; routes, distances and place search from Cloud Functions

07Current state & boundaries

Zajil is live in Sudan, on Google Play.

We describe the system as designed and built. Usage figures and business outcomes belong to the client and are not published here.

Every screen shown is the real application, rendered from its own code with simulated data. The map behind the tracking and driver screens is a drawn stand-in, because live map tiles are not part of those renders. No real customer, order or phone number appears.

08Stack

Flutter
One application for customer, driver, admin and manager roles
Firebase
Authentication, Cloud Firestore, Cloud Storage, Cloud Messaging and App Check
TypeScript Cloud Functions
Server-side pricing, driver dispatch, approval, wallet and commission
Google Maps Platform
Maps and live tracking in the app; Routes and Places from Cloud Functions
CI
Automated pipeline including Firebase security-rule tests
Back to all work

Have a delivery or operations system to build?