The context
A delicatessen in the Sainte-Catherine district of Brussels, open since 1998, wanted to sell online. The obvious route — joining a delivery platform — carries three problems every merchant knows: a commission on every order, a customer relationship that belongs to the platform, and a brand diluted among hundreds of others.
The decision was therefore to build an owned platform on a click & collect model: the customer composes their order online and collects it at the counter. No delivery logistics to absorb, no commission, and a customer base that stays the merchant's own.
What I built
Structured catalogue
products organised into categories (salads, charcuterie, cheeses, hot sandwiches, vegetarian, galettes), with "favourite", "popular" and "new" highlights.
Ordering journey
search, cart, summary and confirmation, designed to complete in under a minute.
Realtime opening status
the shop displays its open/closed state and accepts orders only within its actual opening hours.
Customer account
order history and fast reordering.
Merchant back-office
management of menu, prices and availability, plus incoming order tracking.
Content pages
about, photo gallery, FAQ, practical information, legal notices and terms.
Visit assistance
detailed opening hours, directions and location, since collection in person is the heart of the model.
Architecture & technical decisions
The application is a server-driven single-page app (Laravel + Inertia + Vue 3): navigation feels instant like an app, yet content stays indexable and there is a single codebase to maintain, with no parallel public API to version.
The opening-hours engine is subtler than it looks. It is not about displaying text: hours govern whether ordering is possible at all, and must handle different days, exceptional closures and daylight-saving transitions. This is the number-one source of disputes in this kind of service — an order accepted while the shop is shut.
The catalogue is entirely merchant-controlled. In food retail a menu changes with deliveries: if every edit goes through the developer, the service dies within weeks.
Click & collect rather than delivery is a structural choice, not a limitation: it removes the most expensive and fragile part of a marketplace (last-mile logistics) while keeping the value with the merchant.
Technical challenges
Real availability. A sold-out product must disappear from the journey immediately, otherwise the disappointment lands on the merchant at collection time.
Speed of the journey. The stated goal is an order in under thirty seconds: every extra step is paid for in abandonment.
Mobile first. Orders are placed mostly from a phone, often in the street, sometimes on a poor connection.
A living menu. Seasonal products, variants and house sauces: the data model had to absorb that variety without multiplying special cases.
A back-office usable at the counter. The management interface is used between two customers, often on a tablet — it had to be understandable without training.