Skip to content

E-commerce & Delivery Platform

Nditumeyi Delivery & Marketplace

A multi-category marketplace with dynamic delivery pricing and real-time driver tracking on a live map.

  • Django
  • React
  • TypeScript
  • WebSockets
  • Django Channels
  • Tailwind CSS
  • MapLibre GL
  • Stripe
  • Redis
Type
E-commerce & Delivery Platform
My role
Architecture, development & delivery
Core stack
Django, React, TypeScript
Nditumeyi storefront with category tiles for groceries, clothes, gadgets and hardware

Context

The Problem

Shoppers want to order everyday goods online and know exactly when they will arrive, but many local stores have no online channel and deliveries are coordinated by phone calls and guesswork.

Delivery fees are often flat or negotiated, which ignores distance, weight and urgency, and nobody, neither customer nor dispatcher, can see where the driver actually is.

What I built

The Solution

I built a marketplace where customers browse groceries, clothes, gadgets and hardware, see a transparent delivery quote based on real routing, and pay online in a four-step checkout.

Orders are assigned to drivers manually or automatically to the nearest idle driver. The driver app streams GPS every few seconds over WebSockets, so the customer's tracking page and the admin console update live, with status steps from Preparing to Delivered.

Capabilities

Key Features

Nditumeyi covers the whole journey from browsing to doorstep: customers shop across categories and pay online, admins assign orders to drivers, and both customer and admin watch the driver move on a live map as GPS updates stream in over WebSockets.
  • Catalogue & search

    Category browsing, debounced search autocomplete and price, rating and sort filters.

  • Persistent cart

    Database cart for signed-in users, local cart for guests merged on login, and save-for-later.

  • Online checkout

    Address, delivery option, payment and confirmation steps with Stripe PaymentIntents.

  • Dynamic delivery pricing

    Fees from base, distance, weight, urgency and zone, with the breakdown shown before payment.

  • Live tracking map

    Customer, driver and warehouse markers with route line, ETA and progress.

  • Driver dashboard

    Assigned jobs, pickup and delivery actions, availability toggle and GPS sharing.

  • Admin console

    Live map of every delivery, assignment, order status, products, drivers and revenue.

  • Real-time notifications

    Order confirmed, picked up, driver nearby and delivered, as in-app toasts and Web Push.

Who uses it

User Roles

  • Customer

    Shops, checks out, tracks deliveries live and replays past routes.

  • Driver

    Receives jobs, updates delivery status and shares GPS location.

  • Admin

    Runs operations: assignment, catalogue, drivers, fees, zones and analytics.

User experience

Interface & Screenshots

Select any screen to view it full size.
  • Storefront
  • Category browsing & filters
  • Product detail
  • Cart & delivery estimate
  • Live order tracking
  • Tracking on mobile
  • Order history & route replay
  • Admin operations console
  • Order management
  • Product management
  • Delivery pricing & zones
  • Driver dashboard
  • Storefront on mobile

1 / 13

Storefront hero with category tiles and featured products

Storefront

Engineering

System Architecture

  1. 01Clients

    • Customer storefrontShop, checkout, live tracking
    • Driver dashboardJobs and GPS streaming
    • Admin consoleLive map and operations
  2. 02Application

    • Django REST APICatalogue, cart, orders, payments, delivery quotes
    • Django ChannelsWebSockets for tracking, GPS and notifications
  3. 03Data & Realtime

    • DatabaseProducts, orders, drivers, deliveries
    • RedisChannel layer across workers
  4. 04External services

    • Maps & routingMapLibre, OSRM, Nominatim, Mapbox
    • StripeCard payments
A React + TypeScript storefront talks to a Django REST API for shopping and orders, and to Django Channels over WebSockets for live tracking. Daphne serves the ASGI app and Redis carries real-time messages between processes.

Tools

Technology Stack

Backend
PythonDjangoDjango REST FrameworkSimpleJWTdjango-allauth
Realtime
Django ChannelsDaphne (ASGI)WebSocketsRedis channel layer
Frontend
ReactTypeScriptViteTailwind CSSReact Router
Maps & routing
MapLibre GLOpenStreetMapOSRMNominatimMapbox (optional)
Payments & notifications
Stripe PaymentIntentsWeb Push

Engineering decisions

Challenges & How I Solved Them

  1. 01Real-time tracking at scale

    The challenge

    Driver positions must reach the right customer and the admin console instantly, even with several server processes running.

    How I solved it

    Used Django Channels with a Redis channel layer, with one WebSocket room per order and JWT-authenticated connections.

  2. 02Fair delivery pricing

    The challenge

    A flat fee overcharges short trips and undercharges long, heavy or urgent ones.

    How I solved it

    Calculated fees from real routing distance, weight, urgency and zone surcharges, and showed the full breakdown before payment.

  3. 03Keeping customers' data private

    The challenge

    Tracking rooms reveal live locations, so they must not be open to everyone.

    How I solved it

    Authorised every WebSocket: customers only join their own orders, drivers only their assigned deliveries, and the admin feed requires staff.

  4. 04Running without paid map keys

    The challenge

    Commercial map APIs add cost and setup before the product has proven itself.

    How I solved it

    Built on MapLibre with OpenStreetMap, OSRM and Nominatim as a keyless default, upgrading to Mapbox automatically when a token is set.

Ownership

My Contribution

Designed and developed the marketplace end to end: REST API, real-time tracking, storefront, driver and admin apps, and deployment.

  • Designed the catalogue, cart, order and delivery data model
  • Built the Django REST API with JWT authentication
  • Implemented live tracking and notifications with Django Channels and WebSockets
  • Built the storefront, driver dashboard and admin console in React and TypeScript
  • Implemented dynamic delivery pricing with real routing
  • Integrated Stripe payments and Web Push notifications

Outcomes

Results

Only verified outcomes are listed here.
  • Deployed to production with a public live demo at nditumeyi.vivux-ai.com
  • [Add verified project metric here]

Live demo available

Try the Live Demo

Explore the system yourself. Sign in with one of the demo accounts to see how each role experiences the platform.

Demo accounts

DEMO ONLY
  • Customer

    Username
    customer@nditumeyi.com
    Password
    Demo12345!
  • Driver

    Username
    driver@nditumeyi.com
    Password
    Demo12345!
  • Admin

    Username
    admin@nditumeyi.com
    Password
    Demo12345!

Browse the store without signing in, or use a demo account. The demo uses sample data and no real payments are taken.