Rider
RideEnter a pickup and a drop-off, choose a ride, and send the request.
- Pickup01NowSet the spot where you are standing.
- Drop-off02Name the place you are heading to.
- Ride status03Follow the ride from request to pickup.
inner-uber is a ride-hailing application modeled on the general workflow of Uber: it connects riders who need to get from a pickup location to a drop-off location with drivers who review incoming ride requests, accept a trip, and complete it. The product is a two-sided mobility marketplace used by two very different audiences — riders in a hurry on a phone, and drivers working a shift and reading requests at a glance.
The product intent is to make the core ride-hailing loop usable end to end: a rider specifies where they are and where they are going and requests a ride; a driver sees that request, accepts it, and marks the trip complete; the rider can follow the status of their ride toward pickup. Both audiences enroll themselves and verify their identity on return so that their durable ride and trip records stay bound to the correct person.
Uber is used only as a general reference for ride-hailing workflows. Its branding and proprietary content are not copied.
inner-uber is a custom-UI web application with an application-owned backend. It has two active human personas — Rider and Driver — and a small set of first-party pages that own the accepted lifecycles:
The backend persists durable state: rider and driver identities, ride requests, their acceptance by a driver, and trip completion. Access to rider-owned and driver-owned destinations is restricted to the corresponding authenticated role; Landing, Login, and Sign Up are anonymously reachable.
The current delivery is a first-party web application with its own identity and its own durable ride/trip records. Riders and drivers establish identity themselves (self-service enrollment, then returning verification) — there is no invitation, provisioning, or deployment-bootstrap boundary. Identity is required because a ride request, its acceptance, and its completion are durable commitments that must remain bound to the correct rider and the correct driver.
The current horizon covers exactly the ride-hailing loop described above: request, review/accept, track, complete. It does not include payment processing, fare calculation or billing, ratings/reviews, in-app chat or calling, driver onboarding documents or background checks, live map rendering or turn-by-turn navigation, ride cancellation flows, scheduled/future rides, or ride-option pricing tiers beyond the ride-option selection the rider makes when requesting. These are outside the current delivery boundary and are not implemented as part of it.
Not applicable — no reference directive declares content_source.
FR-1 — Ride-hailing marketplace (explicit). As a Rider or Driver, I should be able to use inner-uber as a ride-hailing app that connects riders who request rides with drivers who fulfill them, so that a ride can be requested and completed end to end.
FR-2 — Rider specifies locations and requests a ride (explicit). As a Rider, I should be able to specify my pickup and drop-off locations and request a ride, so that a driver can be matched to my trip.
FR-3 — Driver views and accepts requests and completes trips (explicit). As a Driver, I should be able to view incoming ride requests, accept one, and complete the trip, so that I can fulfill rides.
FR-4 — Self-service enrollment (required_inference). As a Rider or Driver, I should be able to enroll myself on Sign Up before doing protected work, so that my rides and trips are bound to my identity.
FR-5 — Returning verification (required_inference). As a returning Rider or Driver, I should be able to verify my identity on Login, so that I can resume my durable ride and trip records.
FR-6 — Rider identity before rider work (required_inference). As a Rider, my identity should be established before I can request a ride or view ride status, so that my ride request stays bound to me.
FR-7 — Driver identity before driver work (required_inference). As a Driver, my identity should be established before I can view ride requests or manage an active trip, so that accepted trips stay bound to me.
FR-8 — Rider tracks ride status (required_inference, supporting FR-2/FR-3). As a Rider, I should be able to view my active ride request's status and progress toward pickup on Ride Status, so that I know where my ride stands.
FR-9 — Driver reviews and accepts a request (required_inference, supporting FR-3). As a Driver, I should be able to review incoming request cards (route, ETA, status chip) and accept one, so that I take on a trip.
FR-10 — Driver views trip details and completes the trip (required_inference, supporting FR-3). As a Driver, I should be able to view the accepted trip's pickup and drop-off details and mark the trip complete on Active Trip, so that the ride is finished.
Muse: Susan Kare. Headline idea: Charming clarity — a ride-hailing app drawn in crisp pixels and warm signal colour.
The register is trust plus everyday friendliness: legible, quick, and human rather than corporate or futuristic. The visual vocabulary is a small, characterful pixel icon system on a tidy grid — pin, car, route, clock, person — carrying the app's core objects better than any photo hero.
Colour tokens (light mode):
| Role | Hex | Use |
|---|---|---|
| Background | #F4EFE4 | Warm paper ground, carries most of the page |
| Surface | #FFFDF7 | Off-white cards with 2px ink outlines |
| Text / Primary | #16181C | Ink for type and controls |
| Accent | #F2542D | Ember orange — live state only ("requesting", "driver arriving", active trip); never more than ~10% of a screen |
| Muted | #6E6A60 | Secondary labels and metadata |
| Support — accepted | #3E8E5A | Pixel green, only inside status chips |
| Support — waiting | #F2B705 | Pixel yellow, only inside status chips |
Typography:
clamp(64px → 112px), section heads 28/40, card titles 20/24, body 16/17, all-caps Silkscreen micro-labels 13px with wide tracking.Shape language: Tiles and chips use 8px radii on cards, 2px solid ink outlines, and chunky 4px bottom-offset shadows instead of blur. Primary actions are pill buttons; ride options are square 1:1 icon tiles. Icons are drawn on a 16px pixel grid with 2px strokes. No gradients, no glass, no soft blobs.
Layout: A visible 12-column grid on paper ground. Max content width 1120px; 24px gutters at 375px, 48px at 1280px; everything single-column below 768px. Request Ride is a single centred card (labelled pickup/drop-off rows with leading pixel icons → ride-option tile row → full-width accent CTA). Ride Status and Active Trip use a vertical step rail (28px icon tiles joined by a 2px dotted rule, current stage filled ember). Ride Requests is a tight list of chunky-outlined request cards with route, ETA, status chip, and "Accept" pill.
Imagery: No photography. The pixel icon set is the imagery — a schematic map of blocks and a dotted route line in ink on paper with the ember accent marking the car's position. Small hand-placed pixel details (a tiny road, a traffic light, a coffee cup for the wait) add warmth.
Readability constraint: Headlines, wordmarks, labels, numbers, card text, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling to fit; no other element covers them. Decoration may bleed off edges; readable text and controls may not.
The public entry (Landing) is a poster-like split hero on warm paper (#F4EFE4), not a centred SaaS stack.
clamp(64px → 112px), set in ink, breaking across three lines — "GO / ANYWHERE / INNER-UBER" — with the ember accent (#F2542D) on exactly one word. Beneath it, two pill buttons sit side by side: solid ink "Request a ride" and outlined "Drive with us".No blob, no gradient, no product mockup, no stock photography or 3D car render. The concept only recomposes accepted Landing content and controls.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: flat
Landing Hero Motion Brief
durable_state_required). Rider and driver identities, ride requests, driver acceptance, and trip completion must persist server-side so that a returning rider or driver resumes the correct records. Rationale: rides and trips are commitments that must survive sessions.authorization_change_required). Request Ride and Ride Status are accessible only to authenticated Riders; Ride Requests and Active Trip only to authenticated Drivers. Landing, Login, and Sign Up are anonymously reachable. Rationale: ride and trip records must remain bound to the correct participant.prefers-reduced-motion, the live status dot is a static filled dot, the card stamp is an instant appear, and the hero route line is shown fully drawn; the interface remains fully usable.requires_backend_integration). The custom UI must integrate with the application backend for identity, ride requests, acceptance, and completion.No source-specified technology beyond the above; these are the minimal stack items needed for the accepted workflows.

Ride or drive
Riders set a pickup and drop-off and request a ride. Drivers review incoming requests, accept a trip and mark it complete — one clear loop for both sides of the city.
Both roles start at sign up
Riders say where they are and where they are going; drivers pick up the request and carry the trip through to the end.
Enter a pickup and a drop-off, choose a ride, and send the request.
Work the request queue, accept a trip, then complete it after pickup.

Ride or drive
Riders set a pickup and drop-off and request a ride. Drivers review incoming requests, accept a trip and mark it complete — one clear loop for both sides of the city.
Both roles start at sign up
Riders say where they are and where they are going; drivers pick up the request and carry the trip through to the end.
Enter a pickup and a drop-off, choose a ride, and send the request.
Work the request queue, accept a trip, then complete it after pickup.
No comments yet. Be the first!