My client Amarjeet is a professional video editor. He needed a portfolio that could stream cinematic 4K footage smoothly, handle multiple videos simultaneously, and look as premium as his work.
This is what I built: FFmpeg → BullMQ → Cloudflare R2 → HLS adaptive streaming. And here is what I would change.
1. Move transcoding to a dedicated worker process. I ran FFmpeg inside the main Hono process — fine for low traffic, but it blocks the event loop during heavy encodes. Next time: separate worker service, separate machine.
2. Add job progress streaming. The upload UI shows a spinner until transcoding is done. That is fine but a progress bar streamed via SSE would be far better UX for long encodes.
3. Use Cloudflare Stream instead. Cloudflare Stream handles transcoding, storage, and CDN delivery in one service. I built the pipeline from scratch to learn — but for a production client project with a deadline, I would use Stream and focus on the UI instead.
Full-Stack React Developer building SaaS and usuable apps.