9.2 KiB
B2C vs B2B UI Architecture Plan
Date: 2026-03-30
Version: 2.0
Based on: User requirements for Vehicle Details/Dashboard
Executive Summary
This document outlines the architectural strategy for implementing dual-mode UI (B2C Personal vs B2B Fleet) with explicit verification feedback. The plan addresses the user's strict requirements for visual layout differences and verification UI.
1. Core Principles
1.1 Mode Detection & Switching
- Source of Truth:
appModeStore.mode('personal'|'fleet') - Trigger: User selection via profile selector or organization context
- Persistence: LocalStorage with sync to backend active organization
1.2 Data Segregation
- Personal Mode:
organization_id = NULLor user's personal scope - Fleet Mode:
organization_id = <selected_org_id> - API Filtering: All vehicle queries include
organization_idfilter based on mode
2. Layout Requirements
2.1 B2C Personal Mode - "Cards/Tiles" (Kártyás/Csempés)
Visual Characteristics:
- Highly visual, image-focused design
- Card-based grid layout (2-4 columns based on screen size)
- Rich media: vehicle images, brand logos, color accents
- Emotional appeal: personal achievement badges, gamification elements
Component Structure:
VehicleShowcase (Personal Mode)
├── VehicleCardGrid (TransitionGroup)
│ ├── VehicleCard (Visual)
│ │ ├── VehicleImage (Hero)
│ │ ├── BrandLogo
│ │ ├── QuickStats (Visual)
│ │ └── ActionButtons (Personal)
│ └── AddVehicleCard (CTA)
└── PersonalDashboard
├── FunStats (Visualizations)
├── AchievementShowcase
└── QuickActions (Personal)
Technical Implementation:
- Grid layout:
grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 - Card animations: Staggered entrance, hover effects
- Image optimization: Lazy loading, WebP format with fallbacks
2.2 B2B Fleet Mode - "Menu/List" (Menü)
Visual Characteristics:
- Clean, professional, high data density
- Table/list view with sortable columns
- Minimal visual clutter, maximum information
- Corporate branding: dark headers, subtle gradients
Component Structure:
VehicleShowcase (Fleet Mode)
├── FleetTable (Enterprise)
│ ├── CorporateHeader (Stats)
│ ├── SortableTable
│ │ ├── ColumnHeaders (Sortable)
│ │ ├── VehicleRow (Dense)
│ │ │ ├── EssentialData (Text)
│ │ │ ├── StatusIndicators (Minimal)
│ │ │ └── ActionMenu (Contextual)
│ │ └── BulkActions
│ └── ExportControls
└── BusinessAnalytics
├── TCO Dashboard
├── FleetMetrics
└── ReportGenerator
Technical Implementation:
- Table component: Virtual scrolling for large datasets
- Export functionality: CSV, PDF, Excel
- Bulk operations: Multi-select, batch updates
3. Verification UI Requirements
3.1 Verification States
Every piece of data or service event must indicate verification status:
| Verification Level | Visual Indicator | Usage |
|---|---|---|
| 100% Verified | Green checkmark + "Verified" badge | System-verified data (VIN, mileage from connected services) |
| Workshop Verified | Blue wrench + "Workshop Confirmed" | Service records from authorized workshops |
| User Reported | Yellow user icon + "User Reported" | Manual user entry, requires verification |
| Pending Verification | Gray clock + "Pending" | Data submitted but not yet verified |
| Verification Failed | Red x + "Needs Review" | System detected inconsistency |
3.2 Implementation Strategy
Component: VerificationBadge
<template>
<span :class="badgeClasses" :title="tooltipText">
<component :is="iconComponent" class="w-3 h-3 mr-1" />
{{ label }}
</span>
</template>
<script>
export default {
props: {
level: { type: String, required: true }, // 'verified', 'workshop', 'user', 'pending', 'failed'
dataType: { type: String, required: true } // 'vin', 'mileage', 'service', 'ownership'
},
computed: {
badgeClasses() {
const base = 'inline-flex items-center px-2 py-1 rounded-full text-xs font-medium'
const colors = {
verified: 'bg-green-100 text-green-800 border border-green-300',
workshop: 'bg-blue-100 text-blue-800 border border-blue-300',
user: 'bg-yellow-100 text-yellow-800 border border-yellow-300',
pending: 'bg-gray-100 text-gray-800 border border-gray-300',
failed: 'bg-red-100 text-red-800 border border-red-300'
}
return `${base} ${colors[this.level]}`
},
// ... other computed properties
}
}
</script>
Data Model Extension:
interface VerificationMetadata {
level: 'verified' | 'workshop' | 'user' | 'pending' | 'failed'
verifiedAt: string | null
verifiedBy: string | null // 'system', 'workshop_id', 'user_id'
source: string // 'api_vin_decode', 'manual_entry', 'workshop_system'
confidenceScore: number // 0-100
}
4. Vehicle Details/Dashboard Architecture
4.1 Dual-Mode Dashboard Components
Personal Vehicle Detail View:
VehicleDetailPage (Personal)
├── HeroSection (Large image, emotional)
├── QuickStatsCards (Visual, colorful)
├── ServiceTimeline (Visual timeline)
├── ExpenseBreakdown (Pie charts)
└── PersonalNotes (User content)
Fleet Vehicle Detail View:
VehicleDetailPage (Fleet)
├── HeaderRow (Essential data, compact)
├── TCO Analysis (Financial focus)
├── ServiceHistory (Table view)
├── ComplianceStatus (Regulatory)
└── Documents (Contract links)
4.2 Responsive Design Strategy
| Breakpoint | Personal Mode (Cards) | Fleet Mode (Table) |
|---|---|---|
| Mobile | 1 column, stacked cards | Horizontal scroll, compact rows |
| Tablet | 2 columns | Full table, reduced padding |
| Desktop | 3-4 columns | Full table with all columns |
| Wide | 4+ columns, larger cards | Expanded table with side panels |
5. Implementation Roadmap
Phase 1: Foundation (Current Sprint)
- Fix SmartVehicleRegistration generation dropdown bug
- Add organization context selector to registration
- Create
VerificationBadgecomponent - Extend vehicle data model with verification metadata
Phase 2: Layout Enhancement (Next Sprint)
- Enhance
VehicleCardwith verification badges - Upgrade
FleetTablewith verification column - Implement responsive breakpoints for both layouts
- Add empty states with mode-appropriate CTAs
Phase 3: Data Integration (Sprint 3)
- Connect verification badges to backend verification status
- Implement verification source tracking
- Add verification confidence scoring
- Create verification audit log
Phase 4: Advanced Features (Sprint 4+)
- Verification request workflow (user → workshop → system)
- Automated verification rules engine
- Verification history timeline
- Bulk verification operations (fleet mode)
6. Technical Specifications
6.1 CSS Strategy
- Personal Mode: Emotion-focused classes (
hover:scale-105,transition-all,shadow-xl) - Fleet Mode: Professional classes (
divide-y,text-sm,font-medium) - Shared Base: Tailwind utility classes for consistency
6.2 State Management
// Extended app mode store
interface AppModeState {
mode: 'personal' | 'fleet'
organizationId: string | null
uiDensity: 'comfortable' | 'compact' // Fleet mode only
verificationBadgesVisible: boolean
}
// Vehicle store with verification
interface VehicleWithVerification {
id: string
// ... existing fields
verification: {
[key in 'vin' | 'mileage' | 'service' | 'ownership']: VerificationMetadata
}
}
6.3 Performance Considerations
- Personal Mode: Image lazy loading, card virtualization for large collections
- Fleet Mode: Table virtualization, column visibility toggles
- Both: API response caching, optimistic UI updates
7. Success Metrics
7.1 UX Metrics
- Personal Mode: Time to find vehicle < 3s, engagement with visual elements
- Fleet Mode: Time to sort/filter < 2s, data density perception
- Verification UI: User trust score, reduction in manual verification requests
7.2 Technical Metrics
- Performance: First Contentful Paint < 1.5s, Time to Interactive < 3s
- Accessibility: WCAG 2.1 AA compliance, keyboard navigation support
- Maintainability: Component reuse > 70%, CSS specificity score < 100
8. Risk Mitigation
8.1 Identified Risks
- Visual inconsistency between modes
- Performance degradation with verification badges
- Backward compatibility with existing vehicle data
- User confusion when switching modes
8.2 Mitigation Strategies
- Design system tokens for consistent styling
- Lazy loading of verification badges
- Default verification states for legacy data
- Clear mode indicators and onboarding tooltips
Approval: This architecture plan satisfies the user's requirements for distinct B2C/B2B layouts with explicit verification feedback. Implementation will proceed according to the phased roadmap.