DEV Community

Camilo Llamas
Camilo Llamas

Posted on

How I built FastMedia Downloader: A microservices architecture with FastAPI, Next.js, and Docker

Hey devs! πŸ‘‹

I recently built and open-sourced FastMedia Downloader, a full-stack platform designed to inspect and extract multimedia content from over 1,000 supported platforms (YouTube, TikTok, Instagram Reels, X/Twitter, SoundCloud, and more).

I wanted to share how I structured the project, the tech stack I selected, and how the microservices communicate with each other.


πŸ—οΈ Architecture & Tech Stack

The system is split into two independent, containerized microservices:

  • Backend (FastAPI + Python 3.11): Core orchestrator that manages asynchronous requests, media inspection, and conversion via custom wrappers around yt-dlp and FFmpeg.
  • Frontend (Next.js + TypeScript + Tailwind CSS): Responsive, modern interface with multi-language support (i18n) and instant link parsing.
  • Infrastructure (Docker Compose): Ensures both services run in isolated environments for seamless local deployment (docker-compose up).
  • DevOps & Security: Automated CI/CD pipelines via GitHub Actions, Dependabot vulnerability scanning, and Open Source Standard rulesets.

πŸ› οΈ Key Engineering Takeaways

Building this project helped me refine several practical patterns:

  1. Async Handling in FastAPI: Processing media metadata streams asynchronously to keep response times low.
  2. Containerized System Dependencies: Encapsulating low-level binaries like FFmpeg directly inside isolated Docker containers without polluting the host environment.
  3. Clean Open-Source Workflow: Structuring a production-ready repository with proper rulesets, issue templates, and community standards.

πŸ”— Source Code & Repository

The entire project is completely open-source. Feel free to inspect the code, run it locally, or contribute!

πŸ“Œ GitHub Repository: https://github.com/Llamas126/fastmedia-downloader

I’d love to hear your feedback on the microservice structure, performance tips, or features you’d like to see added next!

Top comments (1)

Collapse
 
bhavin-allinonetools profile image
Bhavin Sheth

Containerizing FFmpeg directly in Docker is a smart moveβ€”it makes setting up media tools so much cleaner without messing up the local environment.