diff --git a/docs/design/stitch-export/README.md b/docs/design/stitch-export/README.md new file mode 100644 index 0000000..8b20dcd --- /dev/null +++ b/docs/design/stitch-export/README.md @@ -0,0 +1,48 @@ +# Stitch export — Rippr Minimalist Activity Tracker + +Pulled from [stitch.withgoogle.com](https://stitch.withgoogle.com) project +`8187200995279352789` via the Stitch MCP server on 2026-08-23. + +## Contents + +| File | Stitch screen | What it is | +|---|---|---| +| `design-system.md` | Design System | Full design-system spec: color tokens, typography, spacing, elevation, shape, and component rules. This is the current, authoritative design system for the project (see note below). | +| `screens/export-summary.md` | Rippr Project Export Summary | Stitch's own generated overview of the project and screen inventory. | +| `screens/map-hud-dark.html` + `.png` | Map HUD - Dark Mode | Active-recording map screen: floating telemetry cards (speed, avg speed, distance, time), Pause/Stop controls. | +| `screens/plan-screen-dark.html` + `.png` | Plan Screen - Dark Mode | Empty-state route planner: map with a "Tap to drop a pin" prompt. | +| `screens/route-planning-dark.html` + `.png` | Route Planning - Dark Mode | Route planner with pins dropped: distance/time/pin-count header, dotted route line, Start Route button. | +| `screens/rides-history-dark.html` + `.png` | Rides History - Dark Mode | Ride list: search bar, distance-unit toggle, cards with a mini-map thumbnail, date, distance, time, avg speed. | + +Each `.html` is Stitch's generated markup (Tailwind CSS, vanilla JS) for that screen — a +reference for structure and interaction, not something to drop into the Flutter app +as-is. + +## A discrepancy worth flagging + +`screens/export-summary.md` describes a **different** design system than +`design-system.md` — it names "Modern Professional Dark" (#1978e5 blue, Inter, +8px roundness), while the design system actually attached to the project (and to every +screen fetched above) is the **HUD / Minimalist-Technical** one: near-black +(`#0A0A0B`-ish surfaces), electric-neon-green primary (`#00FF41`/`#00E639`), cyan +secondary telemetry accent (`#00E0FF`), Sora/Inter/JetBrains Mono typography, and 4px +roundness. The screenshots above all use the neon/HUD system, not the blue one the +summary describes — the export summary looks like it's describing an earlier or +different iteration of the project. Treat `design-system.md` as the current source of +truth; `export-summary.md` is kept here for reference but its "Design System" section is +stale. + +## Not pulled + +The "Design System" screen instance in the project +(`assets_e73325c5365a4a56b93823236777e95a`) is a design-system asset, not a regular +screen — Stitch's `get_screen` call is for screens, not asset instances. Its content is +what's captured in `design-system.md` (fetched via `get_project`'s `designTheme`), so +nothing is missing, just fetched through a different call. + +## Next step + +This is raw material, not yet applied to the app. `lib/src/ui/theme.dart`'s current +palette (safety-orange accent, warm near-black ground — see V3-16) is a different +direction from this neon-HUD system. Reconciling the two, or replacing one with the +other, is a decision for whoever picks up the actual UI work on this branch. diff --git a/docs/design/stitch-export/design-system.md b/docs/design/stitch-export/design-system.md new file mode 100644 index 0000000..c85a417 --- /dev/null +++ b/docs/design/stitch-export/design-system.md @@ -0,0 +1,171 @@ +--- +name: Rippr +colors: + surface: '#131314' + surface-dim: '#131314' + surface-bright: '#3a393a' + surface-container-lowest: '#0e0e0f' + surface-container-low: '#1c1b1c' + surface-container: '#201f20' + surface-container-high: '#2a2a2b' + surface-container-highest: '#353436' + on-surface: '#e5e2e3' + on-surface-variant: '#b9ccb2' + inverse-surface: '#e5e2e3' + inverse-on-surface: '#313031' + outline: '#84967e' + outline-variant: '#3b4b37' + surface-tint: '#00e639' + primary: '#ebffe2' + on-primary: '#003907' + primary-container: '#00ff41' + on-primary-container: '#007117' + inverse-primary: '#006e16' + secondary: '#b9f1ff' + on-secondary: '#00363f' + secondary-container: '#00e0ff' + on-secondary-container: '#005f6d' + tertiary: '#fff8f4' + on-tertiary: '#442b10' + tertiary-container: '#ffd5ae' + on-tertiary-container: '#7a5b3c' + error: '#ffb4ab' + on-error: '#690005' + error-container: '#93000a' + on-error-container: '#ffdad6' + primary-fixed: '#72ff70' + primary-fixed-dim: '#00e639' + on-primary-fixed: '#002203' + on-primary-fixed-variant: '#00530e' + secondary-fixed: '#a5eeff' + secondary-fixed-dim: '#00daf8' + on-secondary-fixed: '#001f25' + on-secondary-fixed-variant: '#004e5a' + tertiary-fixed: '#ffdcbd' + tertiary-fixed-dim: '#e7bf99' + on-tertiary-fixed: '#2c1701' + on-tertiary-fixed-variant: '#5d4124' + background: '#131314' + on-background: '#e5e2e3' + surface-variant: '#353436' +typography: + display-telemetry: + fontFamily: JetBrains Mono + fontSize: 64px + fontWeight: '700' + lineHeight: 64px + letterSpacing: -0.04em + headline-lg: + fontFamily: Sora + fontSize: 32px + fontWeight: '600' + lineHeight: 40px + headline-md: + fontFamily: Sora + fontSize: 24px + fontWeight: '600' + lineHeight: 32px + body-lg: + fontFamily: Inter + fontSize: 18px + fontWeight: '400' + lineHeight: 28px + body-md: + fontFamily: Inter + fontSize: 16px + fontWeight: '400' + lineHeight: 24px + label-caps: + fontFamily: JetBrains Mono + fontSize: 12px + fontWeight: '500' + lineHeight: 16px + letterSpacing: 0.1em + display-telemetry-mobile: + fontFamily: JetBrains Mono + fontSize: 48px + fontWeight: '700' + lineHeight: 48px +rounded: + sm: 0.125rem + DEFAULT: 0.25rem + md: 0.375rem + lg: 0.5rem + xl: 0.75rem + full: 9999px +spacing: + unit: 4px + container-margin: 20px + gutter: 12px + stack-sm: 8px + stack-md: 24px + stack-lg: 48px +--- + +## Brand & Style +The design system centers on a high-performance, dark-mode aesthetic tailored for real-time activity tracking. The brand personality is kinetic, precise, and undistracted. It utilizes a **Minimalist-Technical** style, stripping away non-essential chrome to focus entirely on telemetry and movement. + +The visual narrative is driven by a "HUD" (Heads-Up Display) concept: information is layered over the user's environment or activity maps using subtle glassmorphism and high-contrast data points. The emotional response should be one of focus and momentum, making the user feel like a precision instrument. + +## Colors +The palette is dominated by **Pitch Black (#0A0A0B)** to preserve OLED battery life and minimize ocular strain during night activities. + +- **Primary (Electric Neon):** Used exclusively for active states, completion goals, and primary "Go" actions. +- **Secondary (Cyan Telemetry):** Reserved for secondary data streams, such as cadence or heart rate, to provide visual separation from primary distance/time metrics. +- **Surface Strategy:** Backgrounds use deep charcoal. Overlays use a semi-transparent version of the surface color with a 20px background blur to create the HUD effect. + +## Typography +The typography system uses a functional split: **Sora** for UI headers and brand moments, **Inter** for standard interface text, and **JetBrains Mono** for all numerical data and telemetry. + +- **Data Legibility:** All numeric values must use the monospaced font to prevent "jumping" layouts during real-time updates. +- **Visual Hierarchy:** Use `label-caps` for units (e.g., KM/H, BPM) placed immediately adjacent to large telemetry displays. +- **Scale:** On mobile devices, telemetry data should prioritize width; if values exceed 5 digits, scale the font size down dynamically to fit the viewport width minus margins. + +## Layout & Spacing +This design system employs a **Fluid HUD Grid**. Elements are anchored to the corners of the screen to keep the center clear for maps or camera feeds. + +- **Grid Model:** A 6-column grid for mobile, 12-column for desktop. +- **Padding:** Use a generous 20px "Safe Zone" margin on all edges of the screen to ensure interactive elements are reachable and not clipped by hardware notches or rounded device corners. +- **Density:** High density for data readouts (8px spacing between related metrics) and low density for navigation/settings (24px+ spacing) to prevent accidental taps during motion. + +## Elevation & Depth +Depth is expressed through **translucency** rather than shadows. + +1. **Level 0 (Base):** Pure black (#0A0A0B). +2. **Level 1 (Substrate):** Dark charcoal (#161618) with 0% transparency. +3. **Level 2 (HUD Panels):** Surface color at 60% opacity with a `backdrop-filter: blur(20px)`. +4. **Level 3 (Modals):** Surface color at 80% opacity with a subtle 1px inner border in a low-opacity white (10%) to define the edge against dark backgrounds. + +Shadows should be avoided entirely to maintain the "lightweight" digital feel. + +## Shapes +The shape language is **Technical-Precision**. + +- **Corners:** Use 0.25rem (4px) as the base radius for all containers to maintain a sharp, engineered appearance. +- **Interactive Elements:** Buttons and inputs follow the same 4px rule. +- **Progress Indicators:** Use sharp, non-rounded ends for progress bars to emphasize a "segmental" or "digital" look. +- **Iconography:** Use 2px stroke weights with squared-off ends to match the monospaced typographic theme. + +## Components + +### Buttons +- **Primary:** Solid Electric Neon background with Black text. No rounding beyond the base 4px. +- **Ghost:** 1px Neon border with transparent background. Text matches border color. +- **Telemetry Toggle:** Small, square buttons using monospaced labels. + +### Cards & HUD Panels +- All cards use the Level 2 Elevation (Glassmorphism). +- Remove all drop shadows. Use a 1px stroke of #FFFFFF at 10% opacity for definition. + +### Data Inputs +- Underlined style only (no bounding box) for a lighter footprint. +- Active state changes the underline to the Primary Neon color. +- Use JetBrains Mono for all numeric input fields. + +### Progress & Gauges +- **Circular Gauges:** Use thin 4px strokes. The "track" should be 5% opacity white; the "fill" should be the Primary Neon. +- **Pulse:** Active heart rate or GPS signals should use a "scanning" animation—a vertical line moving across the element—rather than a standard fade. + +### Navigation +- A bottom-anchored, floating "Dock" with a glassmorphic background. +- Active icons are highlighted with a single Neon pixel-dot underneath. diff --git a/docs/design/stitch-export/screens/export-summary.md b/docs/design/stitch-export/screens/export-summary.md new file mode 100644 index 0000000..37c0096 --- /dev/null +++ b/docs/design/stitch-export/screens/export-summary.md @@ -0,0 +1,50 @@ +# Rippr Project Export + +## Project Overview +Rippr is a minimalist activity tracker designed for cyclists and runners, featuring an immersive map-centric interface, real-time telemetry, and streamlined route planning. + +## Design System: Modern Professional Dark +**ID:** {{DATA:DESIGN_SYSTEM:DESIGN_SYSTEM_3}} + +### Theme Tokens +- **Color Mode:** Dark +- **Primary Color:** #1978e5 (Professional Blue) +- **Typography:** Inter +- **Roundness:** 8px (Round Eight) + +### Core Components +- **TopAppBar:** Minimalist, often hidden for immersive map views. +- **BottomNavBar:** 4-icon layout (Map, History, Plan, Settings) with a signature active indicator dot. +- **Telemetry Cards:** Floating, semi-transparent modules (`bg-surface/60`) with `backdrop-blur-xl` and `white/10` borders. + +--- + +## Screen Inventory + +### 1. Map HUD (Active Navigation) +- **ID:** {{DATA:SCREEN:SCREEN_8}} +- **Description:** Fullscreen map interface with floating telemetry cards at the top showing Speed, Avg Speed, Distance, and Time. Units are integrated inline (e.g., "24.5 km/h"). +- **Controls:** Detached Pause (Yellow) and Stop (Red) buttons positioned above the bottom navigation. + +### 2. Plan Screen (Ready state) +- **ID:** {{DATA:SCREEN:SCREEN_7}} +- **Description:** Clean map interface identical to the HUD but without telemetry or ride controls. Features a subtle floating tooltip: "Tap to drop a pin". + +### 3. Route Planning (Active Pins) +- **ID:** {{DATA:SCREEN:SCREEN_5}} +- **Description:** Secondary state of the Plan screen showing 5 dropped pins connected by a blue dotted line. A floating header displays total distance, estimated time, and pin count. + +### 4. Rides History +- **ID:** {{DATA:SCREEN:SCREEN_6}} +- **Description:** List of previous routes displayed as cards over a blurred live map background. Each card shows a mini-map preview, date, distance, time, and average speed. + +### 5. Settings / Profile +- **ID:** {{DATA:SCREEN:SCREEN_4}} +- **Description:** Structured list of user preferences, account details, and cloud sync options. Designed with clean hierarchy and professional dark mode styling. + +--- + +## Technical Specifications +- **Framework:** HTML5 / CSS3 (Tailwind CSS) +- **Interactivity:** Vanilla JavaScript for map state and telemetry updates. +- **Visual Effects:** Backdrop filters for UI depth and high-contrast vector paths for route visualization. diff --git a/docs/design/stitch-export/screens/map-hud-dark.html b/docs/design/stitch-export/screens/map-hud-dark.html new file mode 100644 index 0000000..92d1be4 --- /dev/null +++ b/docs/design/stitch-export/screens/map-hud-dark.html @@ -0,0 +1,317 @@ + + +
+ + +Oct 24, 06:30 AM
+Oct 22, 17:15 PM
+Oct 18, 08:00 AM
+