WineROI User Interface Specifications
1. Introduction
This document outlines the comprehensive user interface specifications for WineROI, a mobile application designed to help users assess the value of wines on restaurant wine lists. The interface is designed to be discreet, efficient, and informative, enabling users to make confident wine selections in restaurant settings without drawing attention or requiring extensive wine knowledge.
1.1 Purpose and Scope
These specifications define the design system, component library, and interaction patterns that form the WineROI user interface. They serve as the definitive reference for designers and developers implementing the application across iOS and Android platforms.
1.2 Design Philosophy
Our UI system expresses our identity as a Sage brand through sophisticated yet approachable visual elements while adhering to clarity, efficiency, and discretion principles for a cohesive experience. The system accommodates mobile-first, variable connectivity constraints while ensuring WCAG AA compliance for inclusive usage.
2. Design Foundation
2.1 Brand Integration
The WineROI interface embodies our brand identity through a refined visual system that communicates expertise and value-consciousness without intimidation.
2.1.1 Color System
/* Primary Colors */
--color-deep-navy: #1A2A47; /* Primary background, key UI elements */
--color-burgundy: #7D2E46; /* Wine-inspired accent */
--color-gold: #D4B96A; /* Value indicators, ratings, key interactions */
/* Secondary Colors */
--color-slate-gray: #4A5568; /* Secondary text, icons */
--color-warm-white: #F8F5F0; /* Light mode background, content areas */
--color-merlot: #5E1F30; /* Deeper wine tone for secondary accents */
/* Accent Colors */
--color-value-green: #2D8A6D; /* Good value indicator */
--color-alert-red: #C53F3F; /* Poor value indicator */
--color-neutral-taupe: #B2A89D; /* Fair value indicator */
/* Semantic Tokens */
--color-background-primary: var(--color-deep-navy);
--color-background-secondary: rgba(26, 42, 71, 0.9);
--color-text-primary: var(--color-warm-white);
--color-text-secondary: rgba(248, 245, 240, 0.8);
--color-interactive-primary: var(--color-gold);
--color-interactive-secondary: rgba(212, 185, 106, 0.8);
--color-border-default: rgba(74, 85, 104, 0.3);
--color-value-positive: var(--color-value-green);
--color-value-negative: var(--color-alert-red);
--color-value-neutral: var(--color-neutral-taupe);
--color-focus-ring: rgba(212, 185, 106, 0.5);
2.1.2 Typography System
/* Font Families */
--font-heading: 'Playfair Display', serif;
--font-body: 'Work Sans', sans-serif;
/* Font Weights */
--font-weight-regular: 400;
--font-weight-medium: 500;
--font-weight-semibold: 600;
/* Font Sizes */
--font-size-xs: 12px;
--font-size-sm: 14px;
--font-size-md: 16px;
--font-size-lg: 18px;
--font-size-xl: 20px;
--font-size-2xl: 24px;
--font-size-3xl: 30px;
/* Line Heights */
--line-height-tight: 120%;
--line-height-normal: 140%;
--line-height-relaxed: 160%;
/* Letter Spacing */
--letter-spacing-tight: -0.01em;
--letter-spacing-normal: 0;
--letter-spacing-wide: 0.02em;
/* Semantic Typography */
--text-primary-heading: var(--font-heading);
--text-body: var(--font-body);
--text-value-verdict: var(--font-heading);
2.1.3 Spacing System
/* Base Spacing Units (8-point grid) */
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-8: 32px;
--space-10: 40px;
--space-12: 48px;
--space-16: 64px;
--space-20: 80px;
--space-24: 96px;
/* Semantic Spacing */
--space-component-padding: var(--space-4);
--space-container-margin: var(--space-4);
--space-section-gap: var(--space-6);
--space-card-padding: var(--space-4);
--space-button-padding-x: var(--space-4);
--space-button-padding-y: var(--space-3);
--space-input-padding-x: var(--space-3);
--space-input-padding-y: var(--space-2);
--space-list-item-gap: var(--space-3);
2.2 UX Principles
The WineROI interface is guided by the following principles:
- Discretion First: Interfaces are designed for quick, unobtrusive use in restaurant settings
- Glanceable Information: Critical value assessments are visible at a glance
- One-Handed Operation: Core functions are accessible with thumb-reach zones
- Progressive Disclosure: Information is revealed in layers of increasing detail
- Confidence Building: UI reinforces user confidence in wine selection decisions
- Low Learning Curve: Intuitive design minimizes the need for tutorials or instructions
2.3 Technical Constraints
The UI accommodates the following technical parameters:
- Variable Connectivity: Graceful degradation for low/no connectivity scenarios
- Cross-Platform Consistency: Core experience maintained across iOS and Android
- Performance Optimization: Lightweight components for quick loading in restaurant settings
- Battery Consideration: Dark mode default to conserve battery and enhance discretion
- Device Compatibility: Support for iOS 14+ and Android 9+
2.4 Accessibility Standards
The interface adheres to WCAG AA compliance with the following specific requirements:
- Color Contrast: Minimum 4.5:1 ratio for all text elements
- Touch Targets: Minimum 44×44px for all interactive elements
- Text Scaling: Support for 200% text size increase without loss of functionality
- Screen Reader Support: Semantic markup and appropriate ARIA attributes
- Reduced Motion: Option to minimize animations for users with vestibular disorders
3. Core Components
3.1 Navigation System
3.1.1 Bottom Navigation Bar
The primary navigation component providing access to main sections of the application.
States:
- Default: Icons with labels in neutral state
- Active: Current section highlighted with Gold accent
- Disabled: Reduced opacity for unavailable sections
Implementation:
<nav class="wineroi-nav-bar">
<a href="#" class="wineroi-nav-bar__item wineroi-nav-bar__item--active">
<div class="wineroi-nav-bar__icon">
<!-- Home icon SVG -->
</div>
<span class="wineroi-nav-bar__label">Home</span>
</a>
<a href="#" class="wineroi-nav-bar__item">
<div class="wineroi-nav-bar__icon">
<!-- Search icon SVG -->
</div>
<span class="wineroi-nav-bar__label">Search</span>
</a>
<a href="#" class="wineroi-nav-bar__item">
<div class="wineroi-nav-bar__icon">
<!-- Scan icon SVG -->
</div>
<span class="wineroi-nav-bar__label">Scan</span>
</a>
<a href="#" class="wineroi-nav-bar__item">
<div class="wineroi-nav-bar__icon">
<!-- Saved icon SVG -->
</div>
<span class="wineroi-nav-bar__label">Saved</span>
</a>
<a href="#" class="wineroi-nav-bar__item">
<div class="wineroi-nav-bar__icon">
<!-- Profile icon SVG -->
</div>
<span class="wineroi-nav-bar__label">Profile</span>
</a>
</nav>
Navigation Flow:
graph LR
Home --> Search
Search --> Home
Home --> Scan
Scan --> Home
Home --> Saved
Saved --> Home
Home --> Profile
Profile --> Home
Search --> Scan
Scan --> Search
Search --> Saved
Saved --> Search
3.1.2 Search Bar
The search component allows users to quickly find specific wines.
States:
- Empty: Placeholder text with search icon
- Focus: Active input state with keyboard visible
- Typing: Shows input with clear button
- Results: Transitions to results view
- No Results: Shows empty state with suggestions
Implementation:
<div class="wineroi-search-bar">
<div class="wineroi-search-bar__icon">
<!-- Search icon SVG -->
</div>
<input
type="text"
class="wineroi-search-bar__input"
placeholder="Search wines, restaurants..."
/>
<button class="wineroi-search-bar__clear">
<!-- Clear icon SVG -->
</button>
</div>
3.2 Input Controls
3.2.1 Text Field
States:
- Default: Subtle bottom border with placeholder text
- Focus: Gold accent on bottom border with subtle animation
- Filled: Maintains subtle styling with entered text
- Error: Red bottom border with error message below
- Disabled: Reduced opacity with non-interactive appearance
Implementation:
<div class="wineroi-text-field">
<label class="wineroi-text-field__label">Wine Name</label>
<div class="wineroi-text-field__input-container">
<input type="text" class="wineroi-text-field__input" placeholder="Enter wine name" />
</div>
<div class="wineroi-text-field__helper-text">Enter the full name as shown on the label</div>
</div>
3.2.2 Buttons
Primary Button
States:
- Default: Gold background with Deep Navy text
- Hover/Focus: Slightly lighter Gold with subtle glow
- Active/Pressed: Slightly darker Gold with inset appearance
- Disabled: Reduced opacity with non-interactive appearance
- Loading: Animated indicator showing action in progress
Secondary Button
States:
- Default: Transparent with Gold border and Gold text
- Hover/Focus: Subtle Gold background
- Active/Pressed: Darker Gold border with inset appearance
- Disabled: Reduced opacity with non-interactive appearance
Implementation:
<button class="wineroi-button wineroi-button--primary">
Search Wines
</button>
<button class="wineroi-button wineroi-button--secondary">
Save for Later
</button>
<button class="wineroi-button wineroi-button--tertiary">
Learn More
</button>
<button class="wineroi-button wineroi-button--icon">
<!-- Heart icon SVG -->
</button>
3.2.3 Selection Controls
Toggle Switch
Used for binary on/off settings with a physical switch metaphor.
States:
- Off: Slate Gray track with handle positioned left
- On: Gold track with handle positioned right
- Disabled: Reduced opacity with non-interactive appearance
Implementation:
<label class="wineroi-toggle">
<span class="wineroi-toggle__label">Dark Mode</span>
<div class="wineroi-toggle__control">
<input type="checkbox" class="wineroi-toggle__input" />
<div class="wineroi-toggle__track"></div>
<div class="wineroi-toggle__handle"></div>
</div>
</label>
3.3 Information Display
3.3.1 Wine Card
The wine card component displays essential wine information in a compact, scannable format.
States:
- Default: Standard appearance with wine details
- Selected: Subtle highlight indicating selection
- Interactive: Hover/focus state for clickable cards
- Expanded: Additional details visible
Implementation:
<div class="wineroi-wine-card">
<div class="wineroi-wine-card__value-indicator wineroi-value-indicator--good">
<span class="wineroi-value-indicator__label">Good Value</span>
</div>
<div class="wineroi-wine-card__content">
<h3 class="wineroi-wine-card__name">Château Margaux 2015</h3>
<div class="wineroi-wine-card__details">
<span class="wineroi-wine-card__vintage">2015</span>
<span class="wineroi-wine-card__region">Bordeaux, France</span>
</div>
<div class="wineroi-wine-card__pricing">
<div class="wineroi-wine-card__restaurant-price">
<span class="wineroi-wine-card__price-label">Restaurant</span>
<span class="wineroi-wine-card__price-value">$195</span>
</div>
<div class="wineroi-wine-card__retail-price">
<span class="wineroi-wine-card__price-label">Retail</span>
<span class="wineroi-wine-card__price-value">$85</span>
</div>
</div>
</div>
<div class="wineroi-wine-card__actions">
<button class="wineroi-button wineroi-button--tertiary">Save</button>
<button class="wineroi-button wineroi-button--primary">View Details</button>
</div>
</div>
3.3.2 Value Indicator
The signature component of WineROI that visually communicates wine value assessment.
States:
- Good Value: Green indicator with upward arrow
- Fair Value: Neutral Taupe indicator with horizontal line
- Poor Value: Red indicator with downward arrow
Implementation:
<div class="wineroi-value-indicator wineroi-value-indicator--good">
<div class="wineroi-value-indicator__icon">
<!-- Upward arrow icon SVG -->
</div>
<span class="wineroi-value-indicator__label">Good Value</span>
</div>
<div class="wineroi-value-indicator wineroi-value-indicator--fair">
<div class="wineroi-value-indicator__icon">
<!-- Horizontal line icon SVG -->
</div>
<span class="wineroi-value-indicator__label">Fair Value</span>
</div>
<div class="wineroi-value-indicator wineroi-value-indicator--poor">
<div class="wineroi-value-indicator__icon">
<!-- Downward arrow icon SVG -->
</div>
<span class="wineroi-value-indicator__label">Poor Value</span>
</div>
3.3.3 Wine List
Displays multiple wines in a scrollable, scannable format.
States:
- Empty: Placeholder with action prompt
- Loading: Skeleton screens indicating content loading
- Populated: Complete list with wine items
- Error: Message indicating loading failure
Implementation:
<div class="wineroi-wine-list">
<div class="wineroi-wine-list__header">
<h2 class="wineroi-wine-list__title">Reds</h2>
<span class="wineroi-wine-list__count">12 wines</span>
</div>
<div class="wineroi-wine-list__items">
<!-- Wine list items -->
<div class="wineroi-wine-list-item">
<div class="wineroi-wine-list-item__value-badge wineroi-value-badge--good"></div>
<div class="wineroi-wine-list-item__content">
<h3 class="wineroi-wine-list-item__name">Château Margaux 2015</h3>
<div class="wineroi-wine-list-item__details">Bordeaux, France</div>
</div>
<div class="wineroi-wine-list-item__price">$195</div>
</div>
<!-- More wine list items -->
</div>
</div>
3.4 Feedback Mechanisms
3.4.1 Alerts
Alerts provide important information, warnings, or error messages.
States:
- Information: Neutral styling for general updates
- Success: Green styling for positive outcomes
- Warning: Gold/amber styling for potential issues
- Error: Red styling for problems requiring attention
Implementation:
<div class="wineroi-alert wineroi-alert--success">
<div class="wineroi-alert__icon">
<!-- Success icon SVG -->
</div>
<div class="wineroi-alert__content">
<div class="wineroi-alert__title">Contribution Received</div>
<div class="wineroi-alert__message">Thank you for adding this wine price. Your contribution helps the community.</div>
</div>
<button class="wineroi-alert__close-button">
<!-- Close icon SVG -->
</button>
</div>
3.4.2 Value Verdict Reveal
The signature feedback component that presents wine value assessment results with a distinctive animation.
States:
- Loading: Indicates assessment in progress
- Reveal: Animated presentation of verdict
- Complete: Fully visible assessment
- Updated: Indicates reassessment with changed result
Implementation:
<div class="wineroi-value-verdict wineroi-value-verdict--good">
<div class="wineroi-value-verdict__animation">
<!-- Animation container -->
</div>
<div class="wineroi-value-verdict__content">
<h2 class="wineroi-value-verdict__title">Good Value</h2>
<p class="wineroi-value-verdict__description">
This wine is priced 15% below typical restaurant markup.
</p>
<div class="wineroi-value-verdict__details">
<div class="wineroi-value-verdict__price-comparison">
<div class="wineroi-value-verdict__restaurant-price">
<span class="wineroi-value-verdict__price-label">Restaurant</span>
<span class="wineroi-value-verdict__price-value">$195</span>
</div>
<div class="wineroi-value-verdict__retail-price">
<span class="wineroi-value-verdict__price-label">Retail</span>
<span class="wineroi-value-verdict__price-value">$85</span>
</div>
<div class="wineroi-value-verdict__markup">
<span class="wineroi-value-verdict__markup-label">Markup</span>
<span class="wineroi-value-verdict__markup-value">2.3x</span>
</div>
</div>
</div>
</div>
</div>
4. Layout System
4.1 Grid System
WineROI uses an 8-point grid system with responsive breakpoints:
graph TD
Grid["8-point Grid System"] --> Columns["Column Structure"]
Grid --> Spacing["Spacing System"]
Grid --> Breakpoints["Responsive Breakpoints"]
Columns --> Mobile["Mobile: 4 columns"]
Columns --> Tablet["Tablet: 8 columns"]
Columns --> Desktop["Desktop: 12 columns"]
Spacing --> Margins["Margins: 16px (mobile) / 24px (tablet+)"]
Spacing --> Gutters["Gutters: 16px standard"]
Breakpoints --> BpMobile["Mobile: < 640px"]
Breakpoints --> BpTablet["Tablet: 640px - 1023px"]
Breakpoints --> BpDesktop["Desktop: ≥ 1024px"]
4.2 Screen Templates
4.2.1 Home Screen Template
┌─────────────────────────────┐
│ Status Bar │
├─────────────────────────────┤
│ App Bar │
├─────────────────────────────┤
│ Search Bar │
├─────────────────────────────┤
│ Recent Searches │
├─────────────────────────────┤
│ ┌─────────────────────────┐ │
│ │ Nearby Restaurants │ │
│ └─────────────────────────┘ │
├─────────────────────────────┤
│ ┌─────────────────────────┐ │
│ │ Saved Wines │ │
│ └─────────────────────────┘ │
├─────────────────────────────┤
│ ┌─────────────────────────┐ │
│ │ Recent Contributions │ │
│ └─────────────────────────┘ │
├─────────────────────────────┤
│ Navigation Bar │
└─────────────────────────────┘
4.2.2 Wine Detail Template
┌─────────────────────────────┐
│ Status Bar │
├─────────────────────────────┤
│ Back Button | Wine Name │
├─────────────────────────────┤
│ ┌─────────────────────────┐ │
│ │ Value Indicator (Large) │ │
│ └─────────────────────────┘ │
├─────────────────────────────┤
│ ┌─────────────────────────┐ │
│ │ Wine Information Card │ │
│ └─────────────────────────┘ │
├─────────────────────────────┤
│ ┌─────────────────────────┐ │
│ │ Price Comparison │ │
│ └─────────────────────────┘ │
├─────────────────────────────┤
│ ┌─────────────────────────┐ │
│ │ Restaurant Availability │ │
│ └─────────────────────────┘ │
├─────────────────────────────┤
│ ┌─────────────────────────┐ │
│ │ Similar Wines │ │
│ └─────────────────────────┘ │
├─────────────────────────────┤
│ Action Buttons │
└─────────────────────────────┘
4.2.3 Search Results Template
┌─────────────────────────────┐
│ Status Bar │
├─────────────────────────────┤
│ Back Button | Search Bar │
├─────────────────────────────┤
│ Filter Bar │
├─────────────────────────────┤
│ Results Count │
├─────────────────────────────┤
│ ┌───────────┐ ┌───────────┐ │
│ │ Wine Card │ │ Wine Card │ │
│ └───────────┘ └───────────┘ │
│ ┌───────────┐ ┌───────────┐ │
│ │ Wine Card │ │ Wine Card │ │
│ └───────────┘ └───────────┘ │
│ ┌───────────┐ ┌───────────┐ │
│ │ Wine Card │ │ Wine Card │ │
│ └───────────┘ └───────────┘ │
├─────────────────────────────┤
│ Load More / Pagination │
├─────────────────────────────┤
│ Navigation Bar │
└─────────────────────────────┘
4.2.4 Contribution Template
┌─────────────────────────────┐
│ Status Bar │
├─────────────────────────────┤
│ Back | Add Wine Price │
├─────────────────────────────┤
│ Progress Indicator │
├─────────────────────────────┤
│ Step Instructions │
├─────────────────────────────┤
│ ┌─────────────────────────┐ │
│ │ Input Form (Current) │ │
│ └─────────────────────────┘ │
├─────────────────────────────┤
│ Next/Submit Button │
└─────────────────────────────┘
4.2.5 Restaurant Wine List Template
┌─────────────────────────────┐
│ Status Bar │
├─────────────────────────────┤
│ Back | Restaurant Name │
├─────────────────────────────┤
│ Restaurant Info Card │
├─────────────────────────────┤
│ Category Tabs (Red/White) │
├─────────────────────────────┤
│ Value Filter │
├─────────────────────────────┤
│ ┌─────────────────────────┐ │
│ │ Wine List (by category) │ │
│ └─────────────────────────┘ │
├─────────────────────────────┤
│ Add Missing Wine Button │
├─────────────────────────────┤
│ Navigation Bar │
└─────────────────────────────┘
5. Interaction Patterns
5.1 Search and Discovery Flow
graph TD
A[Home Screen] -->|Tap Search Bar| B[Search Input]
B -->|Enter Wine Name| C[Search Results]
B -->|Scan Wine Label| D[Camera View]
D -->|Capture Label| C
C -->|Tap Wine Card| E[Wine Detail]
C -->|Apply Filters| F[Filtered Results]
F -->|Tap Wine Card| E
A -->|Tap Restaurant| G[Restaurant Wine List]
G -->|Tap Wine| E
5.2 Value Assessment Flow
graph TD
A[Wine Detail] -->|Initial Load| B[Loading State]
B -->|Data Available| C[Value Verdict Animation]
C -->|Animation Complete| D[Full Value Assessment]
D -->|Tap Compare| E[Detailed Comparison View]
D -->|Tap Save| F[Saved to My Wines]
D -->|Tap Share| G[Share Options]
D -->|Tap Contribute| H[Contribution Flow]
5.3 Contribution Flow
graph TD
A[Start Contribution] -->|Step 1| B[Wine Selection]
B -->|Step 2| C[Restaurant Selection]
C -->|Step 3| D[Price Input]
D -->|Step 4| E[Verification]
E -->|Submit| F[Confirmation]
F -->|Continue| G[Return to Wine]
F -->|Add Another| A
5.4 Gestures and Touch Interactions
- Tap: Primary selection action
- Long Press: Reveals contextual actions for wines
- Swipe Left/Right: Navigate between related wines
- Swipe Down: Dismiss current view or refresh content
- Pinch: Zoom in on wine label images
- Double Tap: Quick save wine to favorites
5.5 Quick Value Assessment Flow
graph TD
A[Restaurant Setting] -->|Open App| B[Home Screen]
B -->|Tap Search| C[Search Screen]
C -->|Enter Wine Name| D[Quick Results]
D -->|View Value Badge| E[Decision Point]
B -->|Scan Wine Label| F[Camera View]
F -->|Process Label| G[Wine Recognition]
G -->|Success| D
G -->|Failure| H[Manual Entry]
H --> D
6. State Management
6.1 Application States
- Initial Load: First-time user experience
- Authenticated: User is logged in
- Anonymous: Limited functionality without account
- Offline: Limited functionality with cached data
- Error: Application error state with recovery options
6.2 Content States
- Loading: Content is being retrieved
- Empty: No content is available (with appropriate messaging)
- Partial: Some content is available while more loads
- Complete: All content is successfully loaded
- Error: Content failed to load (with retry options)
6.3 Interactive States
For all interactive elements:
- Default: Normal appearance
- Hover: Visual feedback on pointer hover (desktop)
- Focus: Clear indication when element receives keyboard focus
- Active/Pressed: Visual feedback during interaction
- Disabled: Clearly indicates non-interactive state
6.4 Restaurant-specific States
- Menu Detected: App recognizes user is viewing a restaurant menu
- Restaurant Identified: App has identified the current restaurant
- Wine List Available: Restaurant's wine list is in the database
- Partial Wine List: Some wines from the restaurant are available
- No Wine List: No wines from this restaurant in the database yet
7. Accessibility Implementation
7.1 Color and Contrast
- All text maintains minimum contrast ratio of 4.5:1 (WCAG AA)
- Primary text achieves 7:1 ratio for optimal readability
- Value indicators use both color and shape to convey information
- Focus states are clearly visible with 3:1 contrast ratio
7.2 Touch and Motor Considerations
- Minimum touch target size of 44×44px for all interactive elements
- Sufficient spacing between interactive elements (minimum 8px)
- Primary actions positioned in thumb-friendly zones
- Alternative input methods supported (voice, external keyboards)
7.3 Screen Reader Support
- Semantic HTML structure for logical content hierarchy
- ARIA labels and descriptions for all interactive elements
- Live regions for dynamic content updates (especially value assessments)
- Proper heading structure for screen reader navigation
7.4 Additional Considerations
- Reduced motion option for animation-sensitive users
- Text scaling support up to 200%
- Support for device orientation changes
- Keyboard navigation with logical tab order
8. Implementation Guidelines
8.1 React Native Implementation
The WineROI interface is implemented using React Native for cross-platform consistency, with the following technical approach:
- Functional components with hooks for state management
- Theme provider context for design token access
- Platform-specific adaptations where needed
- Styled components for consistent styling
8.2 Performance Optimization
- Component memoization to prevent unnecessary re-renders
- List virtualization for efficient handling of long wine lists
- Image optimization with appropriate sizing and caching
- Efficient data structures for wine and pricing information
- Local caching for frequently accessed data
8.3 Offline Capabilities
- Persistent storage of critical wine data
- Offline search and filtering
- Queued contributions for sync when connectivity returns
- Clear indication of offline status
- Graceful degradation of connectivity-dependent features
8.4 Dark Mode Implementation
- Dark mode is the default for discretion in restaurant settings
- System respects user preference for light mode when selected
- Smooth transition between modes
- Appropriate contrast maintained in both modes
8.5 Restaurant Context Awareness
- Location-based restaurant detection (optional, privacy-respecting)
- Camera-based menu recognition capabilities
- Fallback manual restaurant selection
- Recent restaurant history for quick access
9. Key Screen Specifications
9.1 Home Screen
Purpose: Provide quick access to search, nearby restaurants, and saved wines
Key Components:
- Search bar (prominent placement)
- Recent searches section (collapsible)
- Nearby restaurants horizontal carousel
- Saved wines section with value indicators
- Recent contributions section (for engaged users)
States:
- New User: Onboarding elements and education
- Returning User: Personalized content based on history
- Offline: Cached content with offline indicators
9.2 Wine Detail Screen
Purpose: Present comprehensive wine information and value assessment
Key Components:
- Value indicator (large, prominent)
- Wine information card (name, vintage, region, etc.)
- Price comparison section (restaurant vs. retail)
- Restaurant availability list
- Similar wines recommendations
- Action buttons (save, share, contribute)
States:
- Loading: Skeleton UI while data retrieves
- Complete: Full information display
- Partial: Core information with placeholders
- Error: Fallback display with retry option
9.3 Search Results Screen
Purpose: Display wines matching search criteria in scannable format
Key Components:
- Active search bar with query
- Filter controls (value, price range, wine type)
- Results count indicator
- Wine cards in grid/list format
- Load more mechanism or pagination
- Empty state with suggestions
States:
- Loading: Progressive loading with placeholders
- Results: Populated grid/list of matching wines
- Filtered: Results after filter application
- No Results: Empty state with alternative suggestions
- Error: Error message with search adjustment suggestions
9.4 Restaurant Wine List Screen
Purpose: Show wines available at a specific restaurant with value assessments
Key Components:
- Restaurant header with information
- Category navigation (reds, whites, sparkling, etc.)
- Value filter for quick assessment
- Wine list organized by category
- Contribution prompt for missing wines
States:
- Loading: Skeleton UI while data loads
- Complete: Full wine list with categories
- Partial: Some wines with contribution prompts
- Empty: No wines with prominent contribution call
- Error: Error message with retry option
9.5 Contribution Screen
Purpose: Enable users to add wine pricing information
Key Components:
- Step indicator showing progress
- Clear instructions for current step
- Form elements appropriate to current step
- Next/Back navigation
- Submission confirmation
States:
- Step 1-4: Different form configurations
- Validating: Checking input data
- Success: Confirmation with appreciation
- Error: Validation errors with correction guidance
9.6 Quick Assessment Screen
Purpose: Provide rapid value assessment in restaurant settings
Key Components:
- Simplified wine information
- Large, prominent value indicator
- Key price comparison (restaurant vs. retail)
- Markup percentage/multiplier
- Quick action buttons (save, share)
States:
- Loading: Minimal loading indicator
- Results: Clear value assessment
- No Data: Prompt to contribute pricing
- Error: Simple error with retry option
10. Motion System
10.1 Timing and Easing
/* Duration */
--duration-instant: 100ms;
--duration-quick: 200ms;
--duration-moderate: 300ms;
--duration-slow: 500ms;
/* Easing */
--ease-standard: cubic-bezier(0.2, 0.0, 0.2, 1);
--ease-decelerate: cubic-bezier(0.0, 0.0, 0.2, 1);
--ease-accelerate: cubic-bezier(0.4, 0.0, 1, 1);
10.2 Signature Animations
10.2.1 Value Verdict Reveal
A distinctive animation that reveals the wine value assessment with appropriate emotional tone:
- Initial subtle pulse animation draws attention
- Value indicator scales up slightly with fade-in
- Assessment text appears with staggered timing
- Supporting details fade in sequentially
- Total duration: 800ms (can be disabled in settings)
10.2.2 Page Transitions
Smooth transitions between main application sections:
- Exit: Current view fades out slightly while sliding down (150ms)
- Enter: New view slides up with fade-in (250ms)
- Overlap: 50ms for continuous feel
- Total perceived duration: 350ms
10.3 Micro-interactions
- Button press: Subtle scale reduction (95%) with quick return
- Toggle switches: Smooth handle movement with slight bounce
- List item selection: Brief highlight pulse
- Error shake: Quick side-to-side movement for invalid inputs
- Pull-to-refresh: Custom animation with wine glass filling
11. Content Patterns
11.1 Empty States
Empty states provide context and guidance when no content is available:
Search with No Results:
- Illustration of empty wine glass
- "No wines found for [search term]"
- Suggestions for broadening search
- Alternative actions (browse popular, nearby)
No Saved Wines:
- Illustration of empty wine rack
- "You haven't saved any wines yet"
- Explanation of save feature benefits
- CTA to start searching or browsing
11.2 Error States
Error states communicate issues clearly with recovery paths:
Connection Error:
- Clear "Unable to connect" message
- Brief explanation of possible cause
- Retry button prominently displayed
- Alternative offline actions suggested
Wine Not Found:
- "This wine isn't in our database yet"
- Encouragement to contribute
- Simple contribution form or link
- Alternative similar wines when available
11.3 Loading States
Loading states maintain engagement during data retrieval:
Wine Card Skeletons:
- Maintain layout structure with placeholder shapes
- Subtle pulse animation
- Progressive loading where possible
- Approximate loading time indicator for longer waits
Value Assessment Loading:
- Wine details appear first
- "Calculating value..." message
- Subtle animation builds anticipation
- Graceful transition to result when ready
11.4 Onboarding Patterns
First-time user experiences that quickly communicate core value:
First Launch:
- Brief, skippable value proposition (3 screens maximum)
- Focus on immediate benefit in restaurant settings
- Visual demonstration of value assessment
- Optional tutorial for key features
Feature Introduction:
- Contextual tooltips for new features
- Progressive disclosure of advanced features
- Success moments celebrated with subtle animations
- Guidance diminishes as user engagement increases
12. Data Visualization
12.1 Value Comparison Charts
Visual representations of wine pricing data:
Markup Comparison:
- Simple bar chart comparing restaurant markup to average
- Color-coded for immediate value assessment
- Numerical percentage or multiplier prominently displayed
- Touch interaction reveals additional details
Price History:
- Line chart showing price trends over time
- Multiple restaurant comparison option
- Clear indication of current price point
- Retail price reference line
12.2 Restaurant Value Analysis
Visual summary of restaurant wine list value:
Value Distribution:
- Pie chart showing proportion of good/fair/poor value wines
- Color-coded segments matching value indicators
- Touch interaction to filter wine list by value category
- Simple percentage breakdown
Category Comparison:
- Bar chart comparing value across wine categories
- Helps users identify which wine types offer better value
- Color-coded by value assessment
- Interactive filtering capability
13. Conclusion
The WineROI user interface specifications provide a comprehensive framework for implementing a cohesive, intuitive, and value-focused application experience. By adhering to these specifications, the development team will create an interface that enables users to confidently assess wine values in restaurant settings with minimal effort and maximum discretion.
These specifications will evolve as the product matures, with regular updates based on user feedback, performance metrics, and new feature requirements. The UI/UX team will maintain this document as the authoritative reference for all interface-related decisions.
-
Executive Summary
Vanka clearly articulates your idea in a way that enables the entire business strategy & planning foundation to be expertly prepared.
-
User Journey
Everything customers experience from the moment they learn about you, to their first use of your product, to evangelizing your product.
-
Brand Strategy
The foundation for how you show up in the world. It determines whether you are memorable, trusted, and ultimately chosen.
-
Business Analysis
Expert analysis of your business idea, to help you make an informed decision about how to proceed.
-
Visual Identity System
Establishes comprehensive branding guidelines, defining visual elements & their consistent application.
-
Product Requirements
Defines what a product should do in a way that guides product development teams.
-
Technical Architecture
Defines system structure, technologies, data flow, etc to guide engineering implementation and ensure scalability.
-
Component Library
Catalogs reusable UI elements with usage guidelines, specs, code examples to ensure consistent interface design across products.
-
UI Spec
Details interface layout, interactions, styling, behavior for specific screens or features to guide design implementation.
-
UX Flow Diagram
Visually maps user journeys through a product, showing screens, decision points, interactions to clarify navigation and experience.
-
Low-Fi Mockups
Quick, simple sketches of interface layouts to explore concepts, test ideas, and gather early feedback before detailed design.