Full-Stack · Video Platform
In Development · 2026YouTube Clone
A full-stack video platform built to explore engineering challenges beyond standard CRUD applications, including video upload, media storage, transcoding, and adaptive playback.
Overview
A full-stack video platform built to explore engineering challenges that go beyond standard CRUD applications: specifically video upload, media storage, transcoding, and adaptive playback.
My Role
I'm building this project independently as a full-stack engineer, designing the backend service architecture and the frontend playback experience.
The Challenge
Getting a video from a user's upload to a smoothly playable, adaptive stream involves several backend concerns that don't come up in typical CRUD work: object storage, background processing, transcoding into multiple qualities, and serving the right quality to the right client.
Constraints
- Designing upload flow so large files don't block the main application server
- Structuring a transcoding pipeline as a distinct, asynchronous backend concern
- Keeping authentication, video, and comment concerns cleanly separated in the backend
My Approach
I separated the platform into distinct backend service areas (authentication, videos, and comments) and designed the video upload path to hand off to object storage and a background transcoding step rather than processing media inline in the request/response cycle.
Architecture & Technical Decisions
Uploaded video files go to S3-compatible object storage, then through a transcoding step to produce multiple playback qualities, which the frontend consumes through adaptive playback.
Upload
Client → API
Object Storage
S3-compatible
Processing
Background job
Transcoding
Multiple qualities
Adaptive Playback
Frontend player
- NestJS modules split by domain: Authentication, Videos, Comments
- Drizzle ORM over PostgreSQL for video and comment metadata
- React Query on the frontend for video metadata and comment fetching/caching
Key Contributions
- Implemented (in progress): Authentication module and video metadata schema
- Implemented (in progress): Video upload flow to object storage
- In progress: transcoding pipeline for adaptive playback
- Planned: comments module and adaptive playback UI polish
Technical Deep Dive
Designing the upload path to stay out of the request/response cycle
The biggest architectural decision was making sure a video upload doesn't tie up an API request for the duration of the upload and processing. The upload flow hands the file off to object storage directly, then triggers transcoding as a separate background step, so the API layer stays responsive regardless of file size or how long transcoding takes.
Impact
- This is a personal, in-development project. Impact will be documented as the platform reaches a usable state.
Tech Stack
- Next.js
- NestJS
- PostgreSQL
- Drizzle ORM
- React Query
- S3-compatible storage
What I Learned
Video is a good forcing function for learning backend service architecture. Almost nothing about it fits neatly into a simple request/response CRUD model.