Remote-First Photo and Video Viewer
A photo and video viewer for Android TV and Google TV, designed around the D-pad.
- Designer and developer
- 2026
What it is
A Flutter app for Android TV and Google TV that browses large photo and video collections with a remote control. Version 0.1 is an offline demo with sample media.
The problem
TV apps are driven by a five-button remote on a large screen, and big libraries must scroll smoothly on low-memory devices.
Architecture
Requests flow left to right. Hover a component for its role.
- D-pad remote client
- Flutter UI service, written focus contract
- Riverpod state service
- Virtualised media grid data, 64 MiB decode cap
- Playback controller service, serialised seeks
- Kotlin bridge infrastructure, MediaSession, audio focus
Key decisions
The remote is the spec
A written remote-control contract defines what every button does on every screen before any screen is built.
Intent separate from effect
The playback controller separates what the user asked for from side effects and serialises seeks, so rapid button presses cannot corrupt playback.
Highlights
- Paginated grid that drops stale requests.
- Image decode and cache capped at 64 MiB and 100 entries.
- Architecture decision record, privacy notes, unit and integration tests.
Stack
Screens
