Case study
FrameStory
Plan shoots, extract frames, and build the story from local video projects.

Summary
Built a mobile creator tool that imports phone media, extracts frames locally, and lets you select and export results — all offline.
Problem
Creators who work with video on Android keep hitting the same wall: extracting and organizing frames from a clip is either slow, requires desktop tools, or means uploading media to a server you don't control. The phone already has the media and the CPU; everything should happen on-device. The constraint is doing it without trashing battery or feeling like a research tool.
Approach
FrameStory is Android-first and local-first. Media imports happen via the native picker; frames are extracted on-device using platform-native decoders, not a cross-platform JS loop. Persistence is local — projects, selections, and exports never need a backend to function. The UX is deliberately narrow. One creator workflow done well beats five workflows half-done. The home surface is a project list; tapping in goes straight to the frame grid. Selection is multi-touch and forgiving; export bundles the picked frames in one tap. No accounts, no cloud sync prompts, no upsell modals. Built in Expo with React Native and TypeScript. Native modules handle the heavy decoding; the JS layer stays thin and predictable. I shipped to the Play Store, wrote the listing, did the screenshots, and put it in front of real creators to validate the flow.
Architecture
Result
FrameStory is live on Android as a small, fast, opinionated creator tool. The local-first architecture means it works offline and respects user media. Shipped, indexed on the Play Store, and finding its first real users.
Highlights
- Local-first architecture — no server required for the core flow
- Native frame extraction tuned for Android performance
- Light, opinionated UX focused on one creator workflow
Have something similar?