Skip to content
All work

Client platform · Water delivery

WATR: Water ordering and delivery platform

Customers order water in the app, the office sees every driver on the map, and a text that fails the first time is sent again automatically.

Type
Client platform
Sector
Water delivery
Status
Built by us, owned by the client
Runs on
Customer and driver apps, an operations dashboard and an SMS gateway
WATR screens

Who it is for

If you deliver water by tanker, your office phone never stops. Customers order by phone, then call again to ask where the tanker is. The office hunts for each driver, and a text that fails to send is lost. In WATR the customer, the driver and the office see the same order, each in their own app or dashboard.

How a working day runs

The customer opens a new order and picks the quantity in cubic meters and the water type: drinking, filtered or non-drinking. They choose the earliest delivery or a day and time slot, then pin the address on the map. They pay the driver in cash on delivery and can add a discount code. The driver's app receives the order with the address, route and next stop. The customer follows the tanker on the map, and a text tells them it is on its way. The current order sits on the home screen, and every order under My Orders. The office sees every driver and order on its dashboard and spots a late order before the customer calls.

What makes the difference

  • Every text enters a send queue that retries when delivery fails and records the result of each attempt.
  • Customer app, driver app and dashboard read one tanker position, so the office sees what the customer sees.
  • A customer who picks a recurring order gets a reminder message to reorder from the app without calling the office.
  • Before confirming, the customer sees the price, tax, discount and total, so they know what they will pay the driver.

How it is built

We built the customer and driver apps in Flutter, since both follow the same order on one map. Firebase holds the order and the tanker's live position, and the operations dashboard reads the same picture. Cloud Functions run server-side work that should not depend on a phone, such as sending texts. A send queue with retry resends failed texts and logs the result, and Maps draws the route.

  • Customer app
  • Driver app
  • Operations dashboard
  • SMS gateway
Shared core
  • Flutter
  • Firebase
  • Cloud Functions
  • Maps
  • Queue & Retry
4 surfaces

Screens9 screens

Scroll to move between screens.

Step 1 of 9

Questions buyers ask

Can the customer choose the delivery time?

Yes. They pick the earliest available delivery and see the expected time before confirming, or set a day and time slot that suits them. They can also make the order recurring and receive a reminder message to repeat it.

How does the customer know where the tanker is?

The customer follows the tanker on the map in the app from departure to arrival. The office sees the same position on its dashboard, and the customer can message the company from the app's Contact Us section.

What happens when a text message fails to arrive?

The message waits its turn in a send queue, and if the first attempt fails, the system resends it automatically. The result of every attempt is kept in a log you can check when a customer asks.