All work

Employment, Roboost

Roboost Dispatcher

A phone-sized version of Roboost’s web dispatch board, for dispatchers away from a desk.

My role
Built from scratch; 203 of 203 commits
When
Apr 2024 – Feb 2025
Platforms
Android, iOS
Status
Internal app

Overview

Dispatchers assign orders to trips and riders. On the web they have a large board; this app puts the same work on a phone: tasks and trips side by side, search, task actions and a live map.

In the recording

Sign in, switch the app from Arabic to English, flag a task as top priority, add another task to a rider’s trip, check the running trips and open a task log.

Recorded from the real appRecorded from the real Flutter app in the iOS Simulator. The app ran from a throwaway copy pointed at a local mock server with made-up data, with crash reporting and analytics switched off; nothing reached the production backend.

Private to Roboost. The stores, tasks, trips and riders in the recording are made up.

Screens

7 stills from the recording above. Select one to see it larger.

  1. 01The task board in Arabic, the app’s default
  2. 02The same board after switching to English
  3. 03Task actions, filtered by the dispatcher’s permissions
  4. 04A task flagged top priority
  5. 05Adding a task to a rider’s trip
  6. 06Running trips with their riders and orders
  7. 07The task log

What it does

Built in 2024 as the mobile counterpart to the web dispatch dashboard.

  • Task and trip lists with search
  • Task actions: add to trip, top priority, reschedule, cancel, notes, pause and play, task log
  • Alternative rider suggestions
  • Create a quick task by picking the location on the map
  • Live order tracking on an OpenStreetMap map (flutter_map)
  • Arabic and English; integration tests for login and quick-task creation

Permissions in the UI

Each task action carries the feature code the backend uses for permissions, and the action sheet only shows what the signed-in dispatcher is allowed to do. Two actions (show on map, task log) are always available.

Stack

  • Flutter
  • Riverpod
  • flutter_map
  • Dio
  • Firebase Messaging