A self hosted media tracker.
Find a file
Aleksandr Zainulgabidinov 32f47fed61
add time-to-beat stats to game details page (#1384)
* feat(igdb, app_tags, media_details): add time-to-beat stats to game details page

* test(Metadata, AppTagsTest): add tests for time-to-beat feature

* feat(seconds_to_duration): add rounding to nearest 5 minutes for durations under 30 minutes

* test(test_seconds_to_duration): update tests for new sub-30-minute rounding logic

* feat(igdb): united game() and get_time_to_beat() in one function via multiquery

* feat(settings.CACHES): bump cache version
2026-05-29 19:52:04 +02:00
.github add pending answer stale workflow 2026-05-24 16:04:43 +02:00
.vscode sync docs home page from readme 2026-05-10 17:16:36 +02:00
docs document yamtrack csv tv row ordering #1419 2026-05-24 14:08:32 +02:00
src add time-to-beat stats to game details page (#1384) 2026-05-29 19:52:04 +02:00
.dockerignore Migrate to uv (#1434) 2026-05-17 14:58:53 +02:00
.gitignore Migrate to uv (#1434) 2026-05-17 14:58:53 +02:00
.pre-commit-config.yaml run pre-commit hooks with uv 2026-05-17 16:11:04 +02:00
.python-version Migrate to uv (#1434) 2026-05-17 14:58:53 +02:00
docker-compose.postgres.yml build(deps): bump redis from 7-alpine to 8-alpine 2025-11-27 11:56:36 +00:00
docker-compose.yml build(deps): bump redis from 7-alpine to 8-alpine 2025-11-27 11:56:36 +00:00
Dockerfile use same alpine version for builder as runtime image 2026-05-17 16:18:34 +02:00
entrypoint.sh Migrate to uv (#1434) 2026-05-17 14:58:53 +02:00
LICENSE Update LICENSE 2024-02-11 22:38:29 +01:00
nginx.conf Configure django-allauth to use X-Real-IP for rate limiting 2026-03-31 21:42:03 +02:00
pyproject.toml bump version to 0.25.3 2026-05-25 23:23:51 +02:00
pytest.ini add vscode integration for tests 2025-05-24 13:03:34 +02:00
README.md migrate docs to zensical 2026-05-17 14:04:54 +02:00
supervisord.conf fix: set gunicorn control socket path to avoid permission error 2026-03-31 21:28:47 +02:00
uv.lock bump version to 0.25.3 2026-05-25 23:23:51 +02:00
zensical.toml migrate docs to zensical 2026-05-17 14:04:54 +02:00

Yamtrack

App Tests Docker Image CodeFactor Codecov GitHub

Yamtrack is a self hosted media tracker for movies, tv shows, anime, manga, video games, books, comics, and board games.

📚 Documentation

The full documentation is available at fuzzygrim.github.io/Yamtrack.

🚀 Demo

You can try the app at yamtrack.fuzzygrim.com using the username demo and password demo.

Features

  • 🎬 Track movies, tv shows, anime, manga, games, books, comics, and board games.
  • 📺 Track each season of a tv show individually and episodes watched.
  • Save score, status, progress, repeats (rewatches, rereads...), start and end dates, or write a note.
  • 📈 Keep a tracking history with each action with a media, such as when you added it, when you started it, when you started watching it again, etc.
  • ✏️ Create custom media entries, for niche media that cannot be found by the supported APIs.
  • 📂 Create personal lists to organize your media for any purpose, add other members to collaborate on your lists.
  • 📅 Keep up with your upcoming media with a calendar, which can be subscribed to in external applications using a iCalendar (.ics) URL.
  • 🔔 Receive notifications of upcoming releases via Apprise (supports Discord, Telegram, ntfy, Slack, email, and many more).
  • 🐳 Easy deployment with Docker via docker-compose with SQLite or PostgreSQL.
  • 👥 Multi-users functionality allowing individual accounts with personalized tracking.
  • 🔑 Flexible authentication options including OIDC and 100+ social providers (Google, GitHub, Discord, etc.) via django-allauth.
  • 🦀 Integration with Jellyfin, Plex and Emby to automatically track new media watched.
  • 📥 Import from Trakt, Simkl, MyAnimeList, AniList and Kitsu with support for periodic automatic imports.
  • 📊 Export all your tracked media to a CSV file and import it back.

📱 Screenshots

Homepage Calendar
Homepage calendar
Media List Grid Media List Table
List Grid List Table
Media Details Tracking
Media Details Tracking
Season Details Tracking Episodes
Season Details Tracking Episodes
Lists Statistics
Lists Statistics
Create Manual Entries Import Data
Create Manual Entries Import Data

🐳 Installing with Docker

Download the default docker-compose.yml file from the repository, update the environment values, and start Yamtrack:

docker compose up -d

The default Compose file uses SQLite, which is enough for most personal installs. For full SQLite, PostgreSQL, and reverse proxy setup instructions, see the Setup documentation.

💻 Development

Development instructions are available in the Development documentation.

💪 Support the Project

There are many ways you can support Yamtrack's development:

Star the Project

The simplest way to show your support is to star the repository on GitHub. It helps increase visibility and shows appreciation for the work.

🐛 Bug Reports

Found a bug? Open an issue on GitHub with detailed steps to reproduce it. Quality bug reports are incredibly valuable for improving stability.

💡 Feature Suggestions

Have ideas for new features? Share them through GitHub issues. Your feedback helps shape the future of Yamtrack.

🧪 Contributing

Pull requests are welcome! Whether it's fixing typos, improving documentation, or adding new features, your contributions help make Yamtrack better for everyone.

Donate

If you'd like to support the project financially:

ko-fi