all work
shipped[2023]8

CuteTube

Video-on-demand service. A monolith-first YouTube clone.

Problem

Learning video platform architecture from the ground up, before building Movio at scale.

Built

Monolith-first YouTube-like VOD service with video upload, FFmpeg transcoding, user channels, playlists, comments, and streaming delivery. The foundation that led to Movio's microservices architecture.

video

upload + processing

streaming

delivery

user

auth + channels

The build

[Idea]

CuteTube was the project that taught me what a video pipeline actually looks like. It's a YouTube clone: signup, watch videos, upload your own. The engineering meat is the Celery pipeline that turns a raw upload into adaptive-bitrate DASH segments. The pipeline tracks the format, transcodes the container, creates a Celery group with chord and callbacks, segments with ABR (360/480/720/1080p at 800/1200/2400/4800 Kbps), batches uploads to S3, deletes local files, updates metadata via callback, and retries with exponential backoff. The whole thing in one repo, because I wanted to learn it end to end before splitting.

[Framing]

The hardest single thing was the Celery pipeline. I spent a lot of late nights aligning the canvas for various edge cases. Auth was hand-rolled (no third-party packages) because I wanted to understand the password hash and session lifecycle from scratch. The stream workflow is OS-aware. Windows clients get MP4 segments, macOS and Linux get MOV, and the DASH player picks based on capability. Gcore CDN sits in front of AWS S3 via custom domain cdn.algocode.site.

[Build]

The original reason this project isn't deployed to prod is honest and a bit embarrassing. The Celery pipeline needs at least 3GB RAM to process video, and the free AWS EC2 I had only gave me 1GB. So it lives on GitHub, not on a server. CuteTube Version 04 added PlayReady DRM via Microsoft's test server, but free DRM license servers are unreliable so it's still flagged as under development.

[Deploy]

CuteTube is the monolith version of what became Movio (microservices) and ProStream (live). The lesson I keep coming back to. Do the hard things while you're learning, so the implementation becomes easier. Building a complex VOD monolith made building Movio's microservices architecture tractable. I knew what each piece was supposed to do.

[What's next]

What's next, if I ever revisit this. Move the worker to a small container with burst capacity so the 3GB constraint stops blocking the project. Finally wire up real DRM with a paid license server.

Stack

5 techs · grouped by layer

Backend

  • Django
  • DRF
  • Celery

Infrastructure

  • FFmpeg

Data layer

  • Redis

Also used

PostgreSQLAWS S3

Links

Related stack

techs used in CuteTube