01
Local first, not localised
Landmarks, GhanaPost GPS, MoMo and cash are fields in the model, not strings swapped at the end. The prices are in cedis and the menu is food people actually order.
Case study 03
A food delivery app designed for how ordering actually works in Accra: landmarks instead of street numbers, mobile money before cards, and the full price before you commit.
Context
Ordering food in Accra runs on conventions the big delivery apps do not have a field for. You pay with MoMo, not a card. You tell the rider you are opposite the Shell station, because the street number will not help him. The kitchen sometimes finishes the tilapia before your order reaches it. SnaQ is a full prototype of a delivery app that treats those as the normal case rather than the edge case, built screen by screen and clickable end to end.
Problems
Four things get in the way of an order arriving correctly.
Challenge
Design an ordering flow where the rider can find you, the money moves the way people already pay, and nothing about the price or the food changes after you tap order.
Approach
01
Landmarks, GhanaPost GPS, MoMo and cash are fields in the model, not strings swapped at the end. The prices are in cedis and the menu is food people actually order.
02
Every fee is computed in one place and shown in the cart before checkout. The receipt repeats the same figures, so the app can never quietly add anything.
03
When something goes wrong, the app asks rather than choosing: swap or refund, MoMo or cash, now or at half past twelve.
Browsing
The menu opens on full-width category banners rather than a grid of thumbnails: a photo of the food on one side, the category and its delivery time on the other. Tapping one opens that category under a header built from the same photo, so the transition is continuous. Search replaces the banners in place instead of opening a separate screen.
Ordering
A rice plate and a bowl of soup are not priced the same way, so they do not ask the same thing. Rice comes with every sauce and the shito free, and says so. Soup includes the soup and charges for the meat, so the meat is a required choice and the button stays disabled, reading "Choose your meat", until one is picked. The running total sits on the button itself, where it cannot scroll out of view.
Introducing
The cart lists subtotal, delivery, service fee and any discount as plain rows, each one tappable for a single line explaining what it pays for. Payment comes after the order button, not before it: the sheet opens already on the customer's default method, which is MTN MoMo out of the box, sends a mock approval prompt to the phone, and can split the bill between MoMo now and cash to the rider. The address the order is going to carries the landmark and the directions, because that is what the rider reads.
After the order
Tracking plays a thirty-minute delivery out in about a minute. At "Order packed" the rider's photo of the sealed order appears, which is something concrete to point at if an item is missing later. If the kitchen runs out of a dish, tracking asks the customer to choose a swap at the original price or a refund, and either outcome is written onto the receipt. Once it arrives, the rider can be tipped on the same MoMo number.
Live prototype
The frame holds the real React build, not a recording. Add a dish and the button turns into a stepper. Enter a promo code and the discount appears in the breakdown. Place the order and the payment sheet opens on MoMo, sends a prompt to the phone, and the button grows into the confirmation screen.
The cart, addresses, loyalty stamps and reviews are all saved on the device, so leaving and coming back picks up where you left off.
Open it full size for the same build with an index of every screen.
Where it got to
24 screens, clickable end to end: browse, order, pay, track, tip and review, with the state saved between visits.
Alternatives
The menu began as the usual search bar over a grid of cards, which looked tidy and told you nothing: every category was a word in a scrolling row of chips. The banners cost more vertical space and earn it by showing the food. Kitchens nearly became a filter rather than a place, too, until it became clear that opening hours and a loyalty card need somewhere to live.
Reflection
Final notes
SnaQ is a prototype, not a live service: payments, the rider photo and the delivery clock are simulated so the whole path can be walked through without a backend. Everything else, from the loyalty stamps to the written reviews, works and persists on the device.