Streaming · 2020 Live
Reelm
Self-hosted Netflix-style streaming platform with adaptive HLS and real-time transcoding.
Tech stack
React TypeScript FastAPI Python PostgreSQL Redis MinIO FFmpeg Nginx Docker
The problem
Paid streaming services are expensive, region-locked, and built around licensing windows that move content in and out. People with their own media libraries have no easy path to a clean product-grade player with features like adaptive streaming, resume, multi-profile, watch rooms, and admin tooling.
Goals
- Production-grade HLS streaming with adaptive bitrate and resume
- Real-time FFmpeg transcoding from a single source upload
- Watch rooms that let remote users watch in sync
- Admin console with drag-and-drop uploads and live transcoding progress
- Single-command Docker deploy
The solution
- Adaptive HLS playback at 480p, 720p, and 1080p with resume and variable speed
- Real-time FFmpeg transcoding pipeline from upload
- Multi-profile accounts with per-profile watch state
- Watch rooms with invite codes for synced viewing
- Mood-based discovery and Spotify-style Wrapped recap
- Clip and share moments via public URL, QR handoff across devices
- Full admin console with upload progress, library management, and user admin
- 20+ features, 15 API routers, 7 Docker services
My role
- → Full-stack architecture across React frontend and FastAPI backend
- → HLS pipeline and FFmpeg transcoding worker
- → PostgreSQL schema for library, profiles, and watch state
- → MinIO object storage and Nginx media delivery
- → Docker Compose orchestration across 7 services
UI direction
Dark, content-forward UI with poster-focused browsing. Admin console intentionally minimal so library management does not feel like operating a CMS.
User flows
Viewer flow
- 1 Sign in and select a profile
- 2 Browse by mood or library section
- 3 Play with adaptive bitrate and resume
- 4 Invite friends into a watch room for synced playback
Admin flow
- 1 Drag and drop a new video file into the admin console
- 2 Watch live transcoding progress across resolutions
- 3 Library entry becomes available once the master playlist is written
Screenshots
Key learnings
- HLS plus FFmpeg plus MinIO plus Nginx is a stable reference stack for self-hosted streaming
- Separating the transcoding worker from the API service keeps the API responsive under upload bursts
- Watch rooms are easy to ship badly, and you need a dedicated sync protocol if you want them to feel right
Want something like Reelm?
I'm open to senior contract work. Let's talk about what you're building.
Get in touch