Reelvault: video storage for people who shoot more than they can store.
A mobile video vault built with React Native and Django REST Framework, for users whose footage has outgrown local disks. It handles the unglamorous parts of video storage properly — large uploads over imperfect mobile connections, a library that stays navigable as it grows, and playback that starts quickly regardless of file size.
The challenge.
- Video is heavy, and the people generating the most of it are the least likely to be on a stable connection when they upload.
- An upload that fails at ninety percent and restarts from zero is the fastest way to lose a user, so resumability was a requirement rather than a refinement.
- A media library becomes unusable through growth alone: at a few hundred items, browsing stops working as a way to find anything.
- Storage and delivery costs scale with the library, so a naive approach makes the product more expensive to run precisely as it succeeds.
Our approach.
- Built the client in React Native so capture, upload, browsing and playback share one codebase across platforms.
- Made uploads chunked and resumable, so an interrupted transfer continues from where it stopped rather than starting again — the single most important behaviour in a mobile video product.
- Modelled the library around metadata in Django REST Framework rather than filenames and folders, so content stays findable once browsing stops being viable.
- Separated the metadata path from the media path: the API stays fast because it never handles the heavy bytes, which keeps browsing responsive no matter what is uploading.
- Tuned storage tiering and delivery so infrequently-accessed footage costs less to keep than recent material, letting the library grow without the running cost tracking it linearly.
The outcome.
- Uploads survive the connection dropping, which is the normal case on mobile rather than the exception.
- The library stays navigable past the point where scrolling stops being a viable way to find content.
- Browsing and playback stay responsive during uploads, because the two paths do not contend.
- Running costs grow more slowly than the stored volume.
Where AI fits in telecom & media.
Tagging and summarising large media libraries, subscriber support that resolves common requests end to end, and signals that flag accounts likely to leave.
Explore AI developmentQuestions about this build.
Still wondering something? Ask an engineer
Chunked, resumable uploads are the whole answer, and they need to be there from the first version rather than added later. The file is split, each part is uploaded and acknowledged independently, and an interruption resumes from the last confirmed chunk. On mobile connections a large upload will be interrupted — treating that as the expected case rather than an error is the difference between a product people trust with their footage and one they abandon.
By building on metadata rather than folders. Browsing works up to a few hundred items and then stops being a way to find anything, so the model has to support filtering and search across attributes captured at upload time. The design work is deciding what metadata is captured automatically versus what you ask the user for, because anything requiring manual entry will be skipped by most users most of the time.
Tiering, driven by access patterns. Recent and frequently-viewed material sits in fast storage; older footage moves to cheaper tiers where retrieval is slower but the content is rarely requested. Combined with sensible transcoding — storing the renditions that are actually served rather than every possible variant — this keeps running cost growing more slowly than the stored volume, which is what makes the economics work as the library grows.
This one runs React Native against Django REST Framework, which fits well because the API handles metadata and coordination while the heavy bytes travel a separate path to object storage. That separation matters more than the framework choice: as long as your API is never in the way of the media transfer, browsing stays responsive during uploads, and you can change storage or delivery later without touching the application.
Let's build from here.
Thirty minutes with an engineer who builds. No sales, no drip campaign. If we're the wrong fit we'll tell you and point you somewhere better.


