Carta Operum
Survey chart of the island of Galley. Its places are the app's features.

Gazetteer ◆ Island the fourth

Galley

dinner, tracked to your door

Year
2026
Role
Flutter Developer
Platforms
iOS, Android
Stack
Flutter, Dart, Serverpod, PostgreSQL

Log of the voyage

The brief

The app had to take someone from hunger to a tracked order in a few taps: find a dish or a restaurant, customize it, check out with a saved address and a courier tip, and then watch the courier arrive.

The course we set

Flutter builds the customer app for iOS and Android from one Dart codebase. Serverpod provides typed endpoints, authentication and streams that push order status and courier location, and PostgreSQL stores restaurants, menus, orders and couriers. The app and the backend share Dart models, and the client code is generated from the server.

The landing

Five core screens cover the order from end to end: a home with illustrated categories, a restaurant page with tabbed menus, a dish sheet with sizes and extras, a checkout with saved addresses, delivery time and courier tips, and a live map with status steps, arrival time and a call or message button.

Plates

Galley, in its own colours

What are you craving? Categories, offers and restaurants near you
Plate I. What are you craving? Categories, offers and restaurants near you
Every dish made your own, with a running total
Plate II. Every dish made your own, with a running total
The courier on the map, and four steps to your door
Plate III. The courier on the map, and four steps to your door
Engraving of a whirlpool at the edge of the world, with a tentacle rising from it
Plate IV. The Live-Order Maelstrom turns at the edge of the world

The Live-Order Maelstrom

An order changes hands four times between the tap and the door: confirmed, preparing, on the way, delivered. The customer expects to see each step the moment it happens, and the courier's dot to move on the map while the screen is open.

How it was tamed

Serverpod streams push order status and courier location to the app as they change, so the screen never has to poll. The status steps, the arrival time and the route are drawn from the same shared Dart models the backend uses, and the courier can be called or messaged from the same screen.

Soundings, counted in the finished app

  • 5core screens, from home to live tracking
  • 4status steps from confirmed to delivered
  • 1Dart stack from the phone to the database
  • 6colours in one design system