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 (2)

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.

Collapse
 
llama126 profile image
Camilo Llamas

Exactly! It simplifies deployment and avoids dependency issues on the host machine.