tmdb-shelf is a desktop application written in Rust for managing a personal movie collection using The Movie Database (TMDb). It is built heavily on:
tmdb-shelf is an EDLA project.
The purpose of edla.org is to promote the state of the art in various domains.
This is a Rust rewrite of the original Scala/JavaFX TMDb-shelf.
You will need an API key to The Movie Database to access the API. To obtain a key, follow these steps:
- Register for and verify an account.
- Log into your account.
- Select the API section on left side of your account page.
- Click on the link to generate a new API key and follow the instructions.
cargo install --locked tmdb-shelf
On first launch, a configuration file is created at ~/.tmdb-shelf/config.toml. Edit it to set your TMDb API key, then relaunch.
The configuration file (~/.tmdb-shelf/config.toml) supports the following options:
[api]
key = "your-tmdb-api-key"
[general]
language = "en" # ISO 639-1 language code for TMDb queries
# data_dir = "/custom/path" # Custom data directory (default: ~/.tmdb-shelf)
[tools]
# mediainfo_path = "/usr/bin/mediainfo"
# ffprobe_path = "/usr/bin/ffprobe"- Search movies on TMDb and add them to your personal collection
- Browse your collection with filtering (Not Seen, Seen, All, Not Available, Not Viewable)
- Search within your collection by director or movie title
- View movie details: poster, title, director, release dates, runtime, IMDb score
- Track viewing dates and personal comments
- Detect video file runtime via mediainfo or ffprobe
- Scan for IMDb score changes across your collection
- Color-coded poster drop shadow based on runtime (purple < 75 min, red 75-89, yellow 90-94, black >= 95)
- Non-theatrical content (TV movies, shorts, etc.) visually dimmed in the grid
See the docs/ folder for detailed documentation:
- Architecture - System design and module structure
- Developing - Development setup and guidelines
- Database - Database schema and migration from H2
- API Integration - TMDb and IMDb API usage
- AI Agents - Guidelines for AI coding agents
(C) 2025-2026 Olivier ROLAND. Distributed under the GPLv3 License.