opal-zomato is a food delivery marketplace website in the spirit of Zomato: diners discover restaurants by location and cuisine, browse menus with prices and ratings, build a cart, pay online, and track their order from confirmation to delivery, then rate and review the restaurant. Restaurant owners list their restaurant and menu items with prices, receive incoming orders, and update order status. Delivery partners accept available orders, pick up food, and mark delivery complete.
The product serves three active human roles — Diner, Restaurant owner, and Delivery partner — each with its own working context and its own access boundary. The site is a first-party web application with application-owned accounts: a new participant enrolls through Sign Up, a returning participant verifies through Login, and each role then works in the destinations that belong to its responsibilities.
The reference to Zomato is inspiration only for restaurant discovery and food-ordering feature shape and structure; it supplies no copy, brand, data, or capability beyond the accepted requirements below.
opal-zomato is delivered as a React web frontend talking to a shared FastAPI backend that owns all application APIs and domain modules, backed by MariaDB for application-owned persistent data. The backend holds restaurant listings, menu items and prices, carts, orders, payments records, order status history, ratings and reviews, and account records. The frontend renders the public discovery surfaces (Landing, Restaurants, Restaurant Details) anonymously, and the role-restricted working surfaces (Checkout, Order Tracking, Orders, Restaurant Listing, Incoming Orders, Deliveries) only for the signed-in participant who owns that work.
Actors: Diner, Restaurant owner, Delivery partner (active human personas); the application backend and database act as system processes supporting them. Online payment is handled through an online payment step at Checkout; the payment provider is an external service invoked from that step.
Current accepted behavior: restaurant search and browsing by location and cuisine; restaurant pages with menu items, prices and ratings; cart and order placement; online payment before tracking; live order status from confirmation to delivery; post-delivery rating and review; past order history; owner listing and menu management; owner order receipt and status updates; partner order acceptance, pickup, and delivery completion; self-service enrollment and returning verification for all three roles.
Narrow exclusions: no capabilities beyond those listed are current — no loyalty programs, no table reservations, no advertising, no chat, no multi-restaurant split carts, no admin back office.
Removed from scope
opal-zomato is a first-party web product. Discovery is public and anonymous: anyone can open Landing, search on Restaurants, and read a Restaurant Details page with its menu, prices and ratings without an account. Everything that creates a durable commitment — a cart tied to a person, an order, a payment, an order status history, a review, a restaurant listing, an accepted delivery — belongs to a signed-in participant and is only reachable after that participant establishes or verifies identity.
Identity is application-owned and self-service. Sign Up is the anonymous entry where a new Diner, Restaurant owner, or Delivery partner creates an account and chooses their role; Login is the anonymous entry where a returning participant verifies. A protected destination never establishes access to itself: a diner who tries to check out while signed out is sent to Sign Up or Login and returns to Checkout afterward. Role-restricted destinations (Checkout, Order Tracking, Orders for the Diner; Restaurant Listing and Incoming Orders for the Restaurant owner; Deliveries for the Delivery partner) are visible only to the signed-in participant whose role owns that work.
Online payment is an external provider responsibility invoked from Checkout; opal-zomato records the payment outcome and does not itself process card data. Order tracking begins only after payment succeeds. Everything described here is current; no future-horizon features are committed.
FR-1 — Search restaurants by location and cuisine (explicit) As a Diner I should search restaurants by location and cuisine so that I can find somewhere to order from.
FR-2 — View restaurant pages with menu items, prices and ratings (explicit) As a Diner I should view a restaurant page with its menu items, prices and ratings so that I can decide what to order.
FR-3 — Add menu items to a cart and place a food order (explicit) As a Diner I should add menu items to a cart and place a food order so that I can get food delivered.
FR-4 — Pay for the order online (explicit) As a Diner I should pay for my order online so that the restaurant can start preparing it.
FR-5 — Track the order status from confirmation to delivery (explicit) As a Diner I should track my order status from confirmation to delivery so that I know when my food arrives.
FR-6 — Rate and review restaurants after the order (explicit) As a Diner I should rate and review a restaurant after my order so that other diners can judge it.
FR-7 — View past orders (explicit) As a Diner I should view my past orders so that I can reorder or check what I had.
FR-8 — List restaurant and menu items with prices (explicit) As a Restaurant owner I should list my restaurant and menu items with prices so that diners can find and order from me.
FR-9 — Receive orders and update order status (explicit) As a Restaurant owner I should receive orders and update their status so that diners know their food's progress.
FR-10 — Accept orders, pick up food and mark delivery complete (explicit) As a Delivery partner I should accept orders, pick up food and mark delivery complete so that diners receive their orders.
FR-11 — Self-service enrollment (required_inference) As a Diner, Restaurant owner, or Delivery partner I should complete self-service enrollment so that I can start using my role's work.
FR-12 — Returning verification (required_inference) As a Diner, Restaurant owner, or Delivery partner I should verify my returning account so that I can resume my work.
FR-13 — Pay online before order tracking starts (required_inference) As a Diner I should complete online payment before tracking starts so that the order lifecycle has a definite start.
The muse is Jessica Walsh; the headline is "Playful maximalism for a food delivery marketplace." The feeling is appetite, energy and fun, not corporate calm.
Colour tokens (light mode)
#FFF3E4 (cream ground, ~55% of surface area)#FFFFFF (white cards on cream)#1A1014 (ink, ~10%)#FF2D6F (hot pink, ~25% — primary actions and full-bleed bands)#B6F03C (lime, ~10% — tags, rates, Search button)#7A6A70Typography
clamp(48px, 11vw, 128px).Shape language
Layout
Imagery
Readability rule
Avoid
The public entry is a full-bleed hot pink #FF2D6F band across the top of Landing. An oversized Archivo Black headline in cream fills the left seven columns at clamp(48px, 11vw, 128px), wrapping within its column at every viewport. A cut-out dish photograph bleeds off the right edge of the band, cropped by the viewport edge but never covering the headline. Directly under the headline sits a white capsule search bar with a lime #B6F03C Search button, sized to stay whole at 375px. Below the band, a cream marquee ticker of cuisine words scrolls at a slow constant speed, and the restaurant preview grid staggers 2-up then 3-up with one oversized feature card, each card carrying a rotated sticker badge with its rating. The concept recomposes only accepted content — the search input, cuisine words, restaurant cards and ratings — into a poster-like first frame.
Interaction Model: Animated Motion Tempo: expressive Hero Dimensionality: layered_2d
Landing Hero Motion Brief
prefers-reduced-motion; the marquee becomes a static wrapped row of cuisine words, cards appear without scale-in, and hover colour flips become instant state changes. Every item remains fully readable.prefers-reduced-motion.
Discover restaurants by neighbourhood and cuisine, peek at the menu, and get it delivered.
5 restaurants on the plate

Discover restaurants by neighbourhood and cuisine, peek at the menu, and get it delivered.
5 restaurants on the plate
No comments yet. Be the first!