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.
Navigation: BottomNav¶
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:
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:
- "Upload complete" (pre-filled)
- "Preparing files"
- "Analyzing content"
- "Processing footage"
- "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 |