A step-by-step visual tour of every client-facing screen — from first launch, through the customer's quote-and-purchase journey, saved data, and the supplier's daily flow. Every screen shown in both light and dark themes at 390×900 @2x.
First launch, sign-in, account creation via OTP, and the supplier apply flow. Every entry handles Arabic RTL and English LTR.
MOTRA brand hero + parts illustration + three CTAs (Sign in / Create account / Join as supplier).


Name + KSA phone with fixed +966 prefix. Terms acceptance required before the OTP is sent.


Returning users enter their phone; the OTP is delivered by SMS. Link at the bottom deep-links to Create account.


6-digit code entry with 60-second resend timer + explicit "code didn't arrive" hint.


Same OTP component reused for the sign-in flow. Consistent chrome, distinct navigation origin.


Business identity: AR/EN name, owner, phone, email, national ID. Progress bar shows step 1 of 4.


Home screen with unified top region (bar + hero), promo banner, nearby-suppliers carousel, and the four primary destinations.
Top-region (bar + hero: greeting, Riyadh location with Enable-location link, live-suppliers count (real, from /public/provider/count), garage-aware car card — falls back to "Add your car" when the customer's garage is empty). Body: promo banner + nearby-suppliers carousel (/public/provider/nearby) with real Saudi-shop names + recent-requests inline preview (/customer/requests) — hides when empty + 4 primary destinations.


Top region only — kept for reference. Both bar and hero merge into one edge-to-edge surface (round-4 fix).


Post a new part request through the 3-step wizard, then browse the personal request pipeline.
3-step guided flow: part details → photos → review. Step-progress dots at top; primary CTA at bottom.


Filter chips (All / Awaiting / Received / In progress / Completed) + list of requests. Empty state points to the primary CTA.


Request summary (part + car + priority chips + delivery) plus received quotes. Best-value quote highlighted; sort options (best value / newest / cheapest).


Compare quotes side-by-side, inspect a supplier profile, then pay through escrow.
Column per supplier, row per attribute (price / delivery / warranty / rating / completed orders / deadline / terms). Green tip card reminds the customer that cheapest ≠ best.


What a customer sees before accepting: business identity band + stats (completed orders, reviews, rating), about, specialities, reviews, and a sticky bottom "Request quote" CTA.


Line-item breakdown (part × qty, VAT, platform fee, total) + 30-min countdown + payment-method radios (MOTRA Wallet / cards + local wallets) + escrow-holds-until-delivery explainer.


Money, communication, and alerts — all reachable from home or the more menu.
Available balance top-line + refunded/escrowed split cards + top-up CTA. Escrow explainer banner + full transactions ledger below.


Cross-order conversation list (customer ↔ supplier per accepted quote). Empty state until a first request is paid.


Reached from the bell icon in the home top-bar (previously a dead TODO). Permanent empty state until backend push events ship — chrome ready for the list widget.


The More menu is the hub for the customer's saved data (garage + addresses) and every support / info surface.
Hero (avatar + name + verified-customer badge) followed by a grouped tile list — Account (Profile / Wallet / My requests / My garage / My addresses / Chats / Complaints), Preferences (Language / Appearance), Help.


Client-side vehicle store (SharedPreferences motra.garage.v1). Add / edit / delete / set-as-default. First vehicle auto-becomes default. Wires future one-tap fill into create-request.


Client-side address store (SharedPreferences motra.addresses.v1). Add / edit / delete / set-as-default. City picker wired to catalogCacheProvider. Enables future one-tap delivery selection.


Read-only phone + editable name, email, preferred locale (AR/EN segmented pill). Save button anchored at bottom.


Phone, email, social channels + a "Send us a message" CTA that opens a drawer form.


Categorised expandable question list with search bar. Populated from the admin CMS.


Personal complaints history. Empty state guides the user to file from within an order.


Static content page (About / Terms / Privacy) shown as Markdown. Falls back to a friendly "coming soon" card when the admin hasn't published a version yet.


Once approved, providers work through the inbox of matching requests, quote them, manage orders, and cash out.
Business header, availability toggle, 4-stat row (Pending / In progress / Rating / Earnings) — fits 390w without clipping — and the matching-requests inbox.


Provider sees the customer's request and fills the quote form: unit price, delivery timeframe, warranty, return policy chips, conditions. Live "your net profit" breakdown at bottom.


Pipeline of accepted orders with 4-bucket filter (All / Awaiting / In progress / Completed).


Business identity band with stats (Rating / Orders / Net) + editable settings tile group + tinted logout.


Provider requests a payout to their verified IBAN. Available balance + escrow-held preview at top, amount + optional note in the form.


Same wallet component as customer — shows top-up + cashout side-by-side, with a minimum-balance hint for the cashout CTA.


Same shared More component as customer — content adapts to the principal type (Availability tile visible for providers).

