
StreamVault - a self-hosted media streaming app built with Rails 8 + Hotwire + FFmpeg (just open-sourced)
Hey r/rails - I open-sourced a project I've been working on and thought the stack might be interesting to share here, since it leans heavily on Rails 8 + Hotwire.
StreamVault is a self-hosted media streaming application: search for movies/TV, pick a stream, watch in-browser with a custom video player, library, watch history, continue-watching, recommendations. It uses RealDebrid to cache the files and FFmpeg to transcode on-the-fly when needed.
What's in the stack:
- Rails 8.1 with Hotwire (Turbo Drive + Stimulus) — the whole frontend is server-rendered views + a handful of Stimulus controllers. No SPA.
- Solid Queue / Solid Cache / Solid Cable — the new Rails 7.1+ "no-Redis" stack. Jobs, caching, and websockets all backed by Postgres tables.
- ActionPolicy for authorisation - everything scoped per-user.
- Active Record Encryption for API keys at rest.
- Tailwind (via tailwindcss-rails), dark theme, PWA-installable.
- PostgreSQL in production (SQLite in dev/test).
- Docker deployment via docker-compose; assets precompiled in the image.
The interesting Rails-y bits:
- A custom video player written as a Stimulus controller (~47 KB) handling HLS playback, seeking, audio-track selection, subtitle burning, resume, stall recovery, and progress tracking via background jobs.
- On-the-fly transcoding: the app pipes a RealDebrid HTTPS stream into FFmpeg and serves the remuxed/transcoded output back to the browser as a stream. Deciding "remux vs transcode" based on the source codec/container is a fun bit of logic.
- A factory service (
StreamProvider) that queries Torrentio and Comet in parallel and picks the best candidate, with fallback. - Recommendations via TMDB collaborative filtering over the user's watch history.
Repo (full README with architecture, env vars, proxy setup): https://github.com/vitobotta/StreamVault
Curious what people think of the Solid Queue/Cache/Cable stack in production - it's been solid for me but I'd love to hear others' experiences. Also happy to answer questions about the transcoding pipeline or the Stimulus video player.
Edit: some people just love being rude for no particular reason. I came here to share a project I thought others might find useful without having anything to gain from it nor needing to "convince" anyone or justify anything. Some people are truly unbelievable.