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.

● active developmentBackend in Rust + AxumApp in Flutter

// the problem

Short video looks simple. The infrastructure behind it isn't.

Reality

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.

Approach

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

Backend

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.

Media

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.

Realtime

LiveKit SFU with Egress for live video, role-aware publish/subscribe tokens, and WebSocket chat capped at 5 messages per 5 seconds.

Auth

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.