Back to projects

MediaJanitor

Smart media library management for shared Jellyfin servers

MediaJanitor Dashboard Screenshot

Overview

MediaJanitor is a web interface designed for managing shared Jellyfin media libraries across multiple users. It helps identify and clean old files, oversized media, and unwatched content to optimize storage. The app integrates with the entire *arr ecosystem (Sonarr, Radarr), TMDB, Jellyfin, and Jellyseerr using personal API keys.

Built with the Ralph methodology using Claude Code - featuring a clean, well-tested codebase with comprehensive test coverage and clear separation of concerns.

Why I Built This

I manage a media server shared with about ten friends. My old 4000-line script had become unmaintainable — I wanted to build something cleaner to save a few hours of maintenance per week.

Features

  • Smart Issue Detection — Automatically identifies old, large, unwatched, or problematic media files across your library
  • Multi-User Support — Designed for shared servers with 10+ users, tracking watch history per user
  • Ecosystem Integration — Connects with Sonarr, Radarr, TMDB, Jellyfin, and Jellyseerr through personal API keys
  • Whitelist Management — Protect important media from cleanup suggestions
  • Storage Analytics — Dashboard showing total library size, issue breakdown, and cleanup opportunities

Tech Stack

Backend

Python FastAPI SQLAlchemy Pydantic pytest

Frontend

Svelte TypeScript Tailwind CSS

Infrastructure

Docker GitHub Actions

Integrations

Jellyfin API Sonarr API Radarr API TMDB API Jellyseerr API