sonnora@systems:~/products/vertigo$ cat README
Vertigo — video corto, en vivo y social.
Una plataforma de video corto estilo TikTok: un feed vertical Para Ti, subidas transcodificadas a HLS listo para streaming, likes, comentarios y follows — más salas en vivo con chat en tiempo real. Impulsada por un backend en Rust y una app Flutter para iOS y Android.
// el problema
El video corto parece simple. La infraestructura detrás no lo es.
Un buen feed necesita scroll infinito y fluido, subidas que sobrevivan a redes malas, transcodificación que convierta cualquier video de teléfono en streams adaptativos, y salas en vivo donde video y chat van sincronizados. Unir esas piezas es donde la mayoría se atasca.
Vertigo corre sobre una sola API en Rust: subidas presignadas directo a almacenamiento compatible con S3, un worker que transcodifica cada video a HLS más un póster, feeds con paginación por cursor, salas LiveKit para el en vivo y chat WebSocket por sala con repetición de historial.
// funciones
Todo lo que una app de video corto necesita
Feed Para Ti
Scroll vertical infinito con autoplay, snap y pausa al deslizar. La paginación por cursor lo mantiene rápido a cualquier escala.
Pipeline de subida
Subidas directas al almacenamiento con progreso; luego un worker ffmpeg produce HLS, póster y MP4 normalizado.
Salas en vivo
Creadores en vivo por WebRTC vía LiveKit; la audiencia ve el stream HLS. Los webhooks mantienen el roster sincronizado.
Chat + social
Chat WebSocket con límite de tasa por sala en vivo y repetición de historial, más likes, comentarios, perfiles y follows.
// bajo el capó
El stack detrás del feed
Rust con Axum y Tokio, ORM rustdata sobre PostgreSQL, almacenamiento de objetos MinIO/S3 y Redis — una sola API para la app, el worker y los webhooks.
Un worker ffmpeg dedicado procesa los pendientes y produce segmentos HLS, pósters y MP4 normalizados, servidos con caché larga y soporte de byte-range.
LiveKit SFU con Egress para video en vivo, tokens con roles de publicación/suscripción y chat WebSocket limitado a 5 mensajes cada 5 segundos.
Identidad delegada a UserBrew: email/contraseña más Google OAuth, con la app Vertigo dueña de su propio login.
// conectar
¿Construyes una comunidad que necesita su propio espacio de video?
Hablemos de acceso anticipado, un despliegue a medida o licenciar la plataforma para tu marca.