Skip to content

DESIGN

Rider mobile app. Battery swap, station discovery, payments.

(Why this product looks the way it does. Audience, primary jobs-to-be-done, the visual decisions that diverge from the global system and why.)

This is a rider-facing mobile app. While it has a different audience than the internal-tool apps (Retrofit, Kit Production, Ops), the canonical foundations still apply. Before adding a new screen, read these sections of the master DESIGN.md:

The swap app is organised by ROLE, not by prototype. Three surfaces live in prototypes/: swap-station-manager.html is the reference build and the source-of-truth for swap-specific patterns (swap timer, payment confirmation, battery unlock, energy capture); charge-station-manager.html is the energy module alone; swap-pm.html is the station manager plus a station switcher. Take swap patterns from the station manager.

swap-* for swap-specific components (station tile, battery card, swap timer, payment receipt). Register in the global class-name ownership table.

Restating the global rule because every product CSS extension tries to drift back into single-side accent stripes:

  • ❌ border: 1px solid var(--grey3) (or any colour) on any card, readonly tile, sheet, row, or grouping container.
  • ❌ Single-side accent stripes — no border-left, border-top, border-right, or border-bottom to colour-code state.
  • ✅ background: <neutral or tinted bg> + box-shadow: var(--sh-card) + border-radius: 14px.

See screens/ for canonical interactive HTML mockups.

See prototypes/ for narrated end-to-end flows.