Skip to content
jth-67Public
forked from dannyvfilms/Floppy

About

A self hosted media tracker.

Resources

Stars

0 stars

Watchers

0 watching

Forks

ย 
ย 

Latest commit

ย 

History

2,911 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Yamtrack (Enhanced Fork)

A self-hosted media tracker for movies, TV shows, music, podcasts, anime, manga, video games, books, comics, and board gamesโ€”optimized for daily use with a focus on performance, mobile experience, and real-world usability.

Why This Fork Exists

This fork takes Yamtrack's solid foundation and enhances it for daily usability. While maintaining the core feel of the original, it adds:

  • Faster navigation on large libraries through intelligent caching
  • Better mobile experience with PWA support and responsive layouts
  • More "what should I watch next?" tooling like Time Left sorting and recommendations
  • Real-world stability with fixes for iOS/PWA issues, SQLite locking, and edge cases
  • Additional media types (board games, music, podcasts) so you don't need multiple tracking apps

Perfect for former Trakt users looking for a self-hosted alternative, or anyone who wants a snappier, more feature-rich media tracking experience.

๐ŸŽฏ For Former Trakt Users

If you're coming from Trakt, here's what you'll recognize and love:

Time Left Sort

Trakt-style "Progress" page that mixes In Progress + Planning, then Completed, then Dropped, sorted by time left.

Screenshot 2026-01-15 at 11 22 57โ€ฏAM

History Page

A clean, single place to see everything you watched or listened toโ€”without hopping between media types or digging through detail pages.

Screenshot 2026-01-15 at 11 27 08โ€ฏAM

View Additional Plays

Drill into extra plays to understand a show/genre's history, and quickly spot/remove duplicate plays.

Screenshot 2026-01-15 at 11 24 58โ€ฏAM

Activity Overview Statistics

Year-in-review + all-time style stats with the kind of depth Trakt users expect (and actually want to browse).

Screenshot 2026-01-15 at 11 31 01โ€ฏAM

Shareable Lists

Share your best lists, keep the link simple, and get recommendations based on what you share.

Screenshot 2026-01-15 at 11 32 37โ€ฏAM

More Media Types

Beyond the originals: music + podcasts (and more), so your tracking isn't split across multiple apps.

Screenshot 2026-01-15 at 11 33 44โ€ฏAM

๐Ÿš€ Quick Start

Docker Compose (Recommended)

The easiest way to get started is with Docker Compose. This works great with Portainer stacks or standalone Docker.

For SQLite (simple setup):

services:
  yamtrack:
    image: ghcr.io/dannyvfilms/yamtrack:latest
    container_name: yamtrack
    restart: unless-stopped
    depends_on:
      - redis
    environment:
      - SECRET=your-secret-key-here-change-this
      - REDIS_URL=redis://redis:6379
      - TZ=America/New_York  # Your timezone
    volumes:
      - ./db-sqlite:/yamtrack/db
    ports:
      - "8000:8000"

  redis:
    image: redis:8-alpine
    container_name: yamtrack-redis
    restart: unless-stopped
    volumes:
      - redis_data:/data

volumes:
  redis_data:

Save this as docker-compose.yml and run:

docker compose up -d

Then visit http://localhost:8000 and create your admin account.

For PostgreSQL (production setup):

Use docker-compose.postgres.yml from the repository, which includes a PostgreSQL database container. It uses a dedicated postgres_data volume so it won't conflict with the SQLite ./db-sqlite folder.

Docker Run (Quick Start)

If you prefer a simple one-liner without docker compose:

docker network create yamtrack-net

docker run -d \
  --name yamtrack-redis \
  --network yamtrack-net \
  --restart unless-stopped \
  -v yamtrack-redis-data:/data \
  redis:8-alpine

docker run -d \
  --name yamtrack \
  --network yamtrack-net \
  --restart unless-stopped \
  -e TZ=America/New_York \
  -e SECRET=your-secret-key-here-change-this \
  -e REDIS_URL=redis://yamtrack-redis:6379 \
  -v yamtrack-db:/yamtrack/db \
  -p 8000:8000 \
  ghcr.io/dannyvfilms/yamtrack:latest

Note: This setup uses named volumes (yamtrack-db and yamtrack-redis-data) and a shared network (yamtrack-net). For docker compose with more options, see the Docker Compose section above.

Portainer Stack

  1. In Portainer, go to Stacks โ†’ Add Stack
  2. Name it yamtrack
  3. Paste the docker compose configuration above
  4. Update the SECRET environment variable with a secure random string
  5. Deploy the stack

Environment Variables

The only required variable is SECRET (a long random string for Django's secret key).

Optional but recommended:

  • TMDB_API - For movie/TV metadata (get from TMDB)
  • MAL_API - For anime metadata (get from MyAnimeList)
  • IGDB_ID / IGDB_SECRET - For game metadata (get from IGDB)
  • STEAM_API_KEY - For Steam game imports
  • BGG_API_TOKEN - For board game metadata (get from BoardGameGeek)
  • URLS - Your public URL if using a reverse proxy (e.g., https://yamtrack.mydomain.com)
  • ADMIN_ENABLED - Set to True to enable the Django admin interface at /admin/ (see Admin Page documentation for setup instructions)

For a complete list, see the Environment Variables documentation.

Example .env file:

TMDB_API=API_KEY
MAL_API=API_KEY
IGDB_ID=IGDB_ID
IGDB_SECRET=IGDB_SECRET
STEAM_API_KEY=STEAM_API_SECRET
BGG_API_TOKEN=BGG_API_TOKEN
SECRET=SECRET
DEBUG=True

Reverse Proxy Setup

If you're using a reverse proxy (Nginx, Traefik, Caddy, etc.) and see a 403 Forbidden error, add your URL to the environment variables:

environment:
  - URLS=https://yamtrack.mydomain.com

Multiple origins can be specified with commas: https://yamtrack.mydomain.com,https://yamtrack-alt.mydomain.com

โœจ Key Features

๐ŸŽต Music & Podcast Tracking

Music Library Support:

  • Track albums, artists, and individual tracks
  • Automatic scrobbling from Plex Music and Last.fm
  • MusicBrainz integration for rich metadata
  • Album artwork from iTunes
  • Artist discography views
  • Search and browse your music library

Podcast Tracking:

  • Track podcast shows and episodes
  • Pocket Casts integration with automatic imports
  • RSS feed support for podcast metadata
  • Episode completion tracking
  • Scheduled imports every 2 hours

๐Ÿ“… History Page

A complete rewrite focused on fast, intuitive browsing of your media history:

  • Month-based navigation - Jump between months easily
  • Per-day caching - Large histories load instantly
  • Background refresh - Updates happen automatically without blocking
  • Mobile-optimized - Works great on phones and tablets
  • Filter by media type - Certain pages take you to filtered versions of history
  • Clean, readable layout - Focus on what you actually watched/listened to

Perfect for answering "What did I watch last month?" or "When did I finish that show?"

๐Ÿ“Š Enhanced Statistics

A comprehensive statistics dashboard with cached results for fast loading:

  • Multiple time ranges: Last 7 Days, Last 30 Days, Last 12 Months, All Time
  • Media type distribution (in hours, not just counts)
  • Daily activity charts - See your consumption patterns
  • Score distributions - Understand your rating habits
  • Genre breakdowns - What genres do you actually consume?
  • Streak tracking - How consistent are your viewing habits?
  • Most active day - When do you consume the most media?

All statistics are cached and refresh in the background, so pages load quickly even with years of data.

๐Ÿ“‹ Lists & Recommendations

Enhanced List Features:

  • Public list sharing - Share your lists with simple URLs
  • List recommendations - Get suggestions based on your lists
  • Advanced sorting - Sort by rating, date, and more
  • Filter by content - Find lists faster
  • List activity tracking - See when lists are updated
  • Import from Trakt - Import your custom lists from Trakt

๐Ÿ“š Book Tracking

Enhanced Book Features:

  • Barcode scanner - Photo upload barcode scanner for ISBN-13 detection
  • Percentage progress - Track reading progress as percentage (0-100) instead of pages/issues/chapters for books, comics, and manga, perfect for ebooks where page counts vary

๐ŸŽฎ Time Left Sorting

Backlog-friendly TV sorting - Sort your TV shows by "Time Left" to see what's closest to completion. Perfect for clearing your backlog efficiently.

๐Ÿ“ฑ Mobile-First Experience

Mobile Optimizations:

  • Compact vs Comfortable grids - Choose your preferred mobile layout
  • PWA support - Install as an app on your phone
  • Touch-friendly controls - No more tap-fights with overlays
  • Responsive navigation - Everything works great on small screens
  • Mobile-specific preferences - Customize your mobile experience

โš™๏ธ Comprehensive Preferences

Customize Everything:

  • Enable/disable media types you don't use
  • Choose date and time formats (including YYYY-MM-DD)
  • Set default sort options for home and lists
  • Configure auto-pause for stale items
  • Mobile layout preferences
  • And much more

๐Ÿ”— Enhanced Integrations

Plex Integration:

  • Improved import workflow
  • Better webhook handling
  • Edge case fixes (GUID quirks, SQLite locking)
  • Auto-pause for stale in-progress items
  • Rating sync - Sync user ratings from Plex library items during import, or manually via the "Sync Metadata" button on media details pages. Note: While webhook support for media.rate events is implemented, Plex may not reliably send these events (varies by server version and client app). The import and manual sync methods provide reliable rating synchronization.

Pocket Casts:

  • OAuth authentication
  • Scheduled automatic imports
  • Better completion inference
  • Podcast artwork fetching

Last.fm Integration:

  • Automatic scrobbling from Last.fm
  • Polls listening history every 15 minutes

Trakt Integration:

  • Import your watch history
  • Import your public and private lists
  • Share your lists with the public

Other Integrations:

  • Jellyseerr webhook support
  • Enhanced Emby/Jellyfin webhooks
  • Improved import stability

๐Ÿ“ธ Screenshots

History Page

See everything you watched or listened to in one place, organized by day and month.

History Page History Page Mobile

Statistics Dashboard

Comprehensive statistics with multiple time ranges and detailed breakdowns.

Statistics Statistics Mobile

Original Yamtrack Features

All the core features from the original Yamtrack are still here:

Homepage Calendar
Homepage Calendar
Media List Grid Media List Table
List Grid List Table
Media Details Tracking
Media Details Tracking

๐ŸŽฏ Quality of Life Improvements

Beyond the major features, this fork includes hundreds of small improvements that make daily use more pleasant:

  • Barcode scanner for books - Quick ISBN-13 scanning via photo upload (perfect for iOS/PWA)
  • Z-index fixes - Buttons and overlays work correctly on all pages
  • Better card layouts - 1:1 aspect ratio for music/podcasts, improved game stats cards
  • Runtime data - Accurate time-left calculations using actual episode runtimes
  • Data validation - Music library validation, runtime checks, better error handling
  • Performance - Caching infrastructure means pages load faster
  • Stability - Fixes for iOS/PWA refresh loops, SQLite locking, edge cases
  • Sorting improvements - Remember sort directions, better aggregate behavior
  • Filtering - Filter lists by content, history by media type, games by genre

๐Ÿณ Docker Image Tags

The Docker image is available at ghcr.io/dannyvfilms/yamtrack with the following tags:

  • :latest - Points to the stable release branch (default)
  • :release - Explicit tag for the release branch
  • :dev - Exact copy of upstream repo (FuzzyGrim/Yamtrack)

๐Ÿ’ป Local Development

If you want to contribute or customize:

  1. Clone the repository:

    git clone https://github.com/dannyvfilms/Yamtrack.git
    cd Yamtrack
  2. Start Redis:

    docker run -d --name redis -p 6379:6379 --restart unless-stopped redis:8-alpine
  3. Create .env file:

    TMDB_API=your_key
    MAL_API=your_key
    IGDB_ID=your_id
    IGDB_SECRET=your_secret
    STEAM_API_KEY=your_key
    SECRET=your_secret
    DEBUG=True
  4. Install dependencies and run:

    python -m pip install -U -r requirements-dev.txt
    cd src
    python manage.py migrate
    python manage.py createsuperuser
  5. Start services (in separate terminals):

    # Django server
    python manage.py runserver
    
    # Celery worker
    celery -A config worker --beat --scheduler django --loglevel DEBUG
    
    # Tailwind CSS watcher
    tailwindcss -i ./static/css/input.css -o ./static/css/main.css --watch

Visit http://localhost:8000 to see your local instance.

๐ŸŒ Demo

Try the app at yamtrack.dannyvfilms.com using:

  • Username: demo
  • Password: demodemo

๐Ÿ“š Core Features (from Original Yamtrack)

All the original Yamtrack features are preserved:

  • ๐ŸŽฌ Track movies, TV shows, anime, manga, games, books, comics, board games, music, and podcasts
  • ๐Ÿ“บ Track each season of a TV show individually and episodes watched
  • โญ Save scores, status, progress, repeats, start/end dates, notes
  • ๐Ÿ“ˆ Complete tracking history with timestamps for every action
  • โœ๏ธ Create custom media entries for niche content
  • ๐Ÿ“‚ Create personal lists and collaborate with others
  • ๐Ÿ“… Calendar with iCalendar (.ics) subscription support
  • ๐Ÿ”” Release notifications via Apprise (Discord, Telegram, ntfy, Slack, email, etc.)
  • ๐Ÿ‘ฅ Multi-user support with individual accounts
  • ๐Ÿ”‘ OIDC and 100+ social providers (Google, GitHub, Discord, etc.)
  • ๐Ÿฆ€ Integration with Jellyfin, Plex, and Emby for automatic tracking
  • ๐Ÿ“ฅ Import from Trakt, Simkl, MyAnimeList, AniList, Kitsu, and more
  • ๐Ÿ“Š Export/import CSV files

๐Ÿ’ช Support the Project

โญ Star the Repository

Show your support by starring the repository on GitHub!

๐Ÿ› Bug Reports

Found a bug? Open an issue with detailed steps to reproduce.

๐Ÿ’ก Feature Suggestions

Have ideas? Share them through GitHub issues.

๐Ÿงช Contributing

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

๐Ÿ“„ License

This project is licensed under the AGPL-3.0 License.

๐Ÿ™ Acknowledgments

This fork is based on FuzzyGrim/Yamtrack, an excellent self-hosted media tracker. This fork adds enhancements focused on daily usability, performance, and additional media types while maintaining compatibility with the core application.

About

A self hosted media tracker.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages