Skip to content

Mobile Interface

The mobile interface is a completely separate experience from desktop — not a responsive adaptation, but a purpose-built touch-first UI with its own component tree, navigation model, and interaction patterns.


Architecture

Mobile renders when the device supports touch AND the shorter viewport dimension is below 768px. This prevents desktop browsers resized narrow from switching to mobile UI (where swipe gestures wouldn't work). The entire interface is orchestrated by MobileDashboard, which manages:

  • A wizard flow for new projects
  • A bottom tab bar for navigation
  • SwipeReview for editing decisions
  • FocusMode for precision adjustments

Component Count

20 mobile-specific components in frontend/features/mobile/components/, totaling ~7,300 lines. None are shared with desktop — they consume the same React Query hooks but render completely different UI.


A fixed bottom tab bar with four tabs:

Tab Label Icon Purpose
home "Project" / "Home" Lightning bolt Active project or home screen
projects "Projects" Folder Project list
assets "Assets" Layers Asset library
settings "Settings" Gear App settings

Styling: h-16 (64px) + safe area inset, border-t-4 border-black, active tab gets an orange circle behind the icon.


Wizard Flow: MobileWizard

New projects follow a linear five-step wizard:

Upload → Configure → Processing → Review → Export

Steps

Step Component What Happens
upload MobileUploadStep File picker or YouTube URL import
configure MobileConfigureStep Tabbed settings: Cuts / Audio / Assets
processing MobileProcessing Full-screen animation with progress steps
review SwipeReview Four-mode editing interface (see below)
export MobileExport Export settings and download list

The wizard shows a progress bar at the top. Steps must be completed in order — no skipping ahead.

Processing Sub-Steps

The processing screen shows real-time progress through:

  1. "Upload complete" (pre-filled)
  2. "Preparing files"
  3. "Analyzing content"
  4. "Processing footage"
  5. "Finalizing"

SwipeReview

The core mobile editing experience. Four modes, each with its own panel:

Modes

Mode Panel Interaction
preview FormatPanel Choose aspect ratio, letterbox color
style StylePanel Caption font, size, position, color, length
edits EditsPanel Swipe cards: right = keep, left = remove
captions CaptionsPanel Edit caption text, navigate between captions

Edits Mode (Tinder-Style)

The edits panel presents each edit as a card. The user watches a preview and swipes:

  • Swipe right: Keep the edit (include in final video)
  • Swipe left: Remove the edit (cut from final video)

Animation delay between cards: 200ms. Video height: 35vh (min 160px, max 280px).

This replaces the desktop's timeline-based approach with a binary decision model — faster for reviewing dozens of AI-suggested edits on a phone.


FocusMode

Precision editing for users who need more control than SwipeReview provides.

Zoom System

Continuous zoom from 1x to 50x with pinch gestures:

Parameter Value
MIN_ZOOM 1 (full timeline visible)
MAX_ZOOM 50 (50x magnification)
DEFAULT_ZOOM 4 (starts zoomed into selected edit)
ZOOM_STEP_MULTIPLIER 1.15 (15% per step)
ZOOM_HOLD_INTERVAL 80ms (continuous zoom speed)
ZOOM_HOLD_DELAY 300ms (delay before continuous zoom)

Layout

┌────────────────────────────┐
│  Video Preview (30vh)      │
├────────────────────────────┤
│  Minimap (full timeline)   │
├────────────────────────────┤
│  Zoomed Timeline           │
│  - Edit lanes (32px each)  │
│  - Pinch to zoom           │
│  - Pan to scroll           │
├────────────────────────────┤
│  Timestamp Adjuster        │
│  (precise ms controls)     │
└────────────────────────────┘

Edit lane height: 32px. Minimum edit width for label: 12% of viewport (vs 40px on desktop).

The minimap shows the full timeline with a viewport indicator — the user can see where they are in the overall video while zoomed into a specific region.


Touch Targets

All interactive elements follow WCAG 2.5.5: minimum 44px touch target size. This applies to:

  • Tab bar icons
  • Wizard navigation buttons
  • Swipe card action areas
  • FocusMode zoom controls
  • Timestamp adjustment buttons

Mobile-Specific Components

Component Purpose
MobileDashboard Root container, orchestrates all mobile views
BottomNav Tab bar navigation
MobileWizard Step-by-step project flow
MobileUploadStep File/YouTube upload
MobileConfigureStep Tabbed config (Cuts/Audio/Assets)
MobileProcessing Progress animation
SwipeReview Mode-based review
FocusMode Precision zoom editing
MobileExport Export and downloads
MiniTimeline Compact timeline bar
TimestampAdjuster Precise time controls
PreviewSettingsPanel Format/letterbox settings
MobileAssetsView Asset library browser
MobileAssetEditor Asset file editor
MobileBehaviorEditor Asset behavior config
MobileAssetPanel Asset selection for Configure

Mobile Layout Constants

Constant Value
Tab bar height 70px
Bottom sheet top offset 140px
Swipe video height 35vh (min: 160px, max: 280px)
Focus mode video height 30vh
Focus mode lane height 32px
Swipe animation delay 200ms

← Desktop Interface