Streaming · PWA·2026
Lorflux
Streaming HLS adaptativo · assinaturas Stripe · filas BullMQ

- Papel
- Engenheiro único: plataforma, pipeline de streaming, billing e admin
- Período
- 2026 · v2.4.0 em produção
Resumo
Plataforma de entretenimento vertical (9:16): cinematic comics, filmes verticais e webtoons, com contas, assinaturas premium e um admin completo. Vídeo é a parte difícil. Todo o resto existe para servi-lo.
Arquitetura e decisões
- Upload nunca bloqueia a requisição. A API entrega o arquivo ao Bunny Stream e retorna; o progresso da transcodificação chega depois por webhooks, que só marcam o episódio como reproduzível quando existe de fato uma renditione.
- Trabalho pesado (callbacks de transcodificação, processamento de painéis em lote, e-mail) roda em BullMQ sobre Redis, então um pico de uploads degrada a profundidade da fila, não o site.
- Entrega HLS adaptativa pelo CDN da Bunny: o player negocia a renditione e a origem só serve o manifesto.
- Painéis de webtoon sobem em lotes de até ~138 imagens por capítulo; o lote é tratado como unidade transacional, então um upload parcial não publica capítulo quebrado.
- Múltiplas trilhas de áudio e dublagens por idioma são modeladas como trilhas de um episódio, não como episódios separados, o que mantém os contadores de engajamento honestos.
- Anúncios só renderizam em sessões não-premium; o direito é checado no servidor, nunca por afirmação do cliente.
Desafios
Problema: O usuário aperta play no segundo em que o upload termina, mas o arquivo ainda não é assistível.
Solução: O episódio carrega um ciclo de vida explícito em vez de um boolean. Ele só vira reproduzível quando o webhook de transcodificação da Bunny confirma que existe uma renditione. O webhook é idempotente, porque um CDN entrega o mesmo callback duas vezes sem cerimônia.
Resultados
- Em produção em lorflux.com (v2.4.0)
- Assinaturas Stripe, contas com JWT + OAuth, PWA com push
- Conteúdo em PT / EN / ES / ZH com múltiplas trilhas de áudio
- Upload de painéis em lote de até ~138 imagens por capítulo
Stack
Frontend
React 19ViteTypeScriptTailwindPWA
Backend
Node.jsExpressMongoDBMongoose
Mídia
Bunny StreamHLS adaptativoCDN
Assíncrono
BullMQRedisWebhooks
Dinheiro
StripeGoogle AdSense
Tecnologias
React 19Node.jsMongoDBStripeRedisBunny CDN