sonnora@systems:~/products/vertigo$ cat README
Vertigo — short video, live and social.
A TikTok-style short-form video platform: a vertical For You feed, uploads transcoded to streaming-ready HLS, likes, comments and follows — plus live rooms with real-time chat. Powered by a Rust backend and a Flutter app for iOS and Android.
// the problem
Short video looks simple. The infrastructure behind it isn't.
A compelling feed needs infinite scroll that stays smooth, uploads that survive bad networks, transcoding that turns any phone video into adaptive streams, and live rooms where video and chat stay in sync. Gluing those pieces together is where most projects stall.
Vertigo runs on a single Rust API: presigned uploads straight to S3-compatible storage, a worker that transcodes every video to HLS plus a poster frame, keyset-cursor feeds, LiveKit rooms for live streaming, and per-room WebSocket chat with history replay.
// features
Everything a short-video app needs
For You feed
Infinite vertical scroll with autoplay, snap and pause-on-swipe-away. Keyset cursor pagination keeps it fast at any scale.
Upload pipeline
Direct-to-storage uploads with progress, then an ffmpeg worker produces HLS, a poster frame and a normalized MP4.
Live rooms
Creators go live over WebRTC via LiveKit; viewers watch the HLS stream. Webhooks keep the room roster in sync.
Chat + social
Rate-limited WebSocket chat per live room with history replay, plus likes, comments, profiles and follows.
// under the hood
The stack behind the feed
Rust with Axum and Tokio, rustdata ORM over PostgreSQL, MinIO/S3 object storage and Redis — one API serving the app, the worker and the webhooks.
A dedicated ffmpeg worker polls pending jobs and produces HLS segments, poster frames and normalized MP4s, served with long cache headers and byte-range support.
LiveKit SFU with Egress for live video, role-aware publish/subscribe tokens, and WebSocket chat capped at 5 messages per 5 seconds.
Identity delegated to UserBrew: email/password plus Google OAuth, with the Vertigo app owning its own login UI.
// connect
Building a community that needs its own video space?
Get in touch about early access, a custom deployment, or licensing the platform for your brand.