Skip to content

All projects

Commerce

Kultúra

A Riyadh coffee house in an app: order, customise, collect points.

Role
Flutter developer
Platforms
Android · iOS
Year
2026
Status
Shipped
Stack
FlutterDartREST APIFirebase

The brief

A coffee house in Riyadh with more than one room and a following that had outgrown the counter. The ask was the ordinary one for a brand like this — ordering, loyalty, branches — and the hard part was that none of it could look ordinary. The room is the product; an app that felt like a generic food ordering template would have undersold the thing it was selling.

My part

Flutter on the client against the client's REST backend, with Firebase behind the parts that have to reach a phone that is not open. One codebase, both stores.

The home screen: a greeting over a balance of 240 points on its track, a referral banner offering 100 points for an invitation, then a New Products row — a burrata and two iced drinks, each with its price in riyals — and below it the head of a What’s New shelf.
An iced matcha on its product page: the cup photographed across the top, then the name, 28 riyals, and 4.8 from 131 reviews; a description in English with its Arabic twin beneath it; roughly 260 calories; and four rows of choices — size, sugar, milk and quantity — over a notes field and a checkout bar carrying the running total.
The rewards ledger: a balance of 240 points on a five-stop track with three reached and “earn 260 points more to reach platinum” under it, then the entries that moved it — a referral and a cappuccino and a finished profile in green, a spent discount voucher in red.
The branch list: each branch a photograph of its own room with its opening hours pinned to the corner — the first open 07:00 to 22:00 — its name in Arabic beside a map pin, its address in Riyadh below, and a Get Directions button set against it.

Decisions

The drink is a configuration, not a line item. Size, sugar, milk and a free note, priced live as you change them. A coffee order is already a set of choices people make out loud every morning, and a menu that takes only the name of the drink pushes that conversation back to the counter.

Points that show their working. The balance is worth nothing if a customer cannot see why it moved, so the ledger names every entry and signs it — a referral and a finished profile in green, a spent voucher in red. The progress track above it exists to answer the only question anyone asks of a loyalty scheme, which is how far away the next tier is.

Branches are shown, not listed. Each one leads with a photograph of its own room and its hours, because for this brand a visitor choosing between two branches is choosing between two rooms. The address and the directions button come after the picture, not instead of it.

Bilingual down to the product copy. Arabic and English sit together on the same screen rather than behind a language switch, which is how the menu reads in the shop.