Case study · Delivery and quick commerce

Zippee: a same-day delivery platform, from backend to rider app

Zippee fulfils same-day orders for D2C brands from dark stores. Restrologic built its Go backend, a new ops web app, a new React Native rider app and the cloud setup. Riders report their position every 5 seconds, geofences mark arrivals, and deliveries close with an OTP and a photo.

Zippee May 2026 to Oct 2026

Swiggy Zomato POS Kiosk Platform AI agent Dashboards

The challenge

Same-day delivery leaves no slack

Brands send orders to dark stores, riders carry them out, and ops must see every stop as it happens. Proof of delivery has to be real.

The build

Backend, ops app, rider app, cloud

Ten Go services, a new React ops app, a new React Native rider app, and a production fleet built with Terraform and Ansible.

The result

Every stop tracked and proved

Five-second GPS, automatic geofences, delivery OTPs and photos, and point-in-time backups set up for the database.

What did Restrologic build for Zippee?

Restrologic built the technology behind Zippee’s same-day delivery for D2C brands: a Go backend of ten services, a new React ops web app, a new React Native rider app and the cloud setup it runs on. Work began in May 2026.

The challenge

Zippee takes orders that brands push from their warehouse and order systems, and delivers them from dark stores within hours. That raises a short list of hard problems.

How did we approach it?

We split the work into three products that share one GraphQL gateway: the backend, the ops app and the rider app. Each has its own repository and its own history.

The backend is a set of Go services with clear jobs. Core holds sign-in, roles, brands and dark stores. Fulfilment holds orders, shipments, trips and manifests. Tracking holds GPS, geofences and attendance. Integration receives webhooks from warehouse and logistics systems. Notification sends WhatsApp, SMS and push messages. Reporting feeds dashboards. An audit service keeps an append-only trail, and a separate hub streams live updates to the browser.

What did we build?

Backend. Ten services talk over gRPC, with Kafka for events and GraphQL for clients. Rider positions arrive about every 5 seconds. Geofences are set per warehouse and can mark arrival on their own. Delivery rules are stored per brand: tracking-ID scan, photo and OTP can each be required at pickup and at delivery, and OTP can differ for prepaid and cash orders. A trip can end in a partial delivery, and the trip closes with return-to-store handled for what was not delivered.

Ops web app. A new React 19 app with typed GraphQL, role-based access and a map. Ops see a full-map trips board, shipment detail with history, scans and proof of delivery, manifests, brands, service zones and rider management. The first commit is dated 31 May 2026 and the work ran to early July.

Rider app. A new React Native app, built between 16 and 25 June 2026. Riders go online and offline, which starts and ends their shift. Pickup and delivery are step by step, with a native barcode scanner, a 4-digit delivery OTP, a photo as proof of delivery, and a geofence decision matrix with a fallback OTP. Location reporting runs in the background, flushes every 5 seconds, and pings every second near the stop. Return-to-store is a bulk, scan-based step that retries without losing state.

Cloud setup. The production fleet is defined in Terraform and configured with Ansible. It runs on AWS: three application nodes on Docker Swarm, a PostgreSQL 18 cluster with a leader, a synchronous replica and a separate reporting replica, a Redis pair with Sentinel, and an observability node running Prometheus, Grafana, Loki and Alertmanager. Admin tools are reachable only over a private network. In August 2026 we added continuous WAL archiving and encrypted off-site backups for point-in-time recovery.

What came out of it?

Area Result
Backend 10 services, first commit 8 May 2026
Rider tracking GPS about every 5 seconds, every second near a stop
Ops app Live trips board, shipment detail, manifests, brands, service zones
Rider app Scan, OTP, photo proof, geofence OTP, shifts, bulk return
Recovery targets Up to 5 minutes of data at risk, full rebuild within 2 hours

The recovery numbers are targets set in the backup design, which states that a backup nobody has restored does not count. A restore drill is still pending. For a closer look at the delivery domain, see delivery and quick commerce.

What is the stack?

Go, GraphQL, gRPC, Kafka, PostgreSQL with TimescaleDB and Redis on the backend. React 19, Vite, TanStack Router and Apollo on the ops app. React Native on the rider app. Terraform, Ansible, Prometheus, Grafana and Loki for the cloud.

Timeline

When What
8 May 2026 Backend work starts
31 May 2026 Ops web app starts
16 to 25 June 2026 Rider app built
28 June 2026 Partial delivery added
10 July 2026 Terraform and Ansible fleet
25 August 2026 Point-in-time backups
October 2026 Continuing infrastructure work

If you run delivery operations and want something similar, read about custom software and integrations or talk to us.

Timeline and stack

May 2026 to Oct 2026

Frequently asked questions

What did Restrologic build for Zippee?

The Go backend (ten services), a new React ops web app, a new React Native rider app, and the AWS production setup. Work started in May 2026.

How does live rider tracking work?

The rider app sends GPS positions about every 5 seconds, and more often near a stop. The tracking service keeps a trail per rider and trip, and the ops app shows riders on a map.

How is a delivery proved?

A delivery can require a scanned tracking ID, a 4-digit OTP and a photo, set per brand. Geofences can mark arrival automatically, and a geofence OTP covers the cases where location does not match.

Can the database be restored after a bad change?

Point-in-time backups with WAL archiving and encrypted off-site copies are set up. The recovery point of 5 minutes and rebuild time of 2 hours are targets, and a restore drill is still pending.

Tell us what you want to build

Send a short note and Deepak will get back to you.