Skip to content

A web application to track media on my Jellyfin server that needs updating. Whether that be new seasons or better quality file versions.

Notifications You must be signed in to change notification settings

carterrows/Media-Tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Media Tracker

A self-hosted web application for tracking TV shows and Movies that need to be updated on your Jellyfin media server.

Tech Stack

  • Frontend: React + Vite + TypeScript + Tailwind CSS
  • Backend: Python + FastAPI + Uvicorn
  • Database: SQLite with SQLModel
  • Containerization: Docker + docker-compose

Features

  • Track TV shows and Movies
  • CRUD operations for show management
  • Simple, clean interface
  • Fully containerized for easy deployment

Getting Started

Prerequisites

  • Docker
  • Docker Compose

Running the Application

  1. Clone the repository:

    git clone <repository-url>
    cd Media-Tracker
  2. Start the application with Docker Compose:

    docker-compose up --build
  3. Access the application:

Development

To run without Docker:

Backend

cd backend
pip install -r requirements.txt
uvicorn app.main:app --reload

Frontend

cd frontend
npm install
npm run dev

Project Structure

Media-Tracker/
├── backend/
│   ├── app/
│   │   ├── main.py        # FastAPI entrypoint
│   │   ├── models.py      # SQLModel database models
│   │   ├── schemas.py     # Pydantic schemas
│   │   ├── database.py    # Database connection
│   │   ├── crud.py        # CRUD operations
│   │   └── api.py         # API routes
│   ├── requirements.txt
│   └── Dockerfile
├── frontend/
│   ├── src/
│   │   ├── components/
│   │   ├── api/
│   │   ├── App.tsx
│   │   └── main.tsx
│   ├── package.json
│   └── Dockerfile
└── docker-compose.yml

API Endpoints

  • GET /health - Health check
  • GET / - Root endpoint
  • GET /media - List all shows
  • POST /media - Create a new show
  • PUT /media/{id} - Update a show
  • DELETE /media/{id} - Delete a show

Future Enhancements

  • Integration with Jellyfin API
  • Automated episode tracking
  • Notifications for new episodes
  • User authentication
  • Show metadata from TMDB

Configuration

  • DATABASE_URL: Database connection string (defaults to SQLite in ./backend/data).
  • ALLOW_ORIGINS: Comma-separated list of allowed CORS origins (defaults to http://localhost:3000,http://localhost:5173).
  • API_KEY: Optional API key for write operations. If set, requests that create/update/delete media must send header X-API-Key.
  • RATE_LIMIT_REQUESTS: Requests allowed per window per client IP (default 60).
  • RATE_LIMIT_WINDOW_SECONDS: Window length in seconds (default 60).
  • TMDB_API_KEY: API key for The Movie Database integration (required for metadata search/enrich).
  • MEDIA_CACHE_DIR: Directory to cache poster/backdrop images (defaults to data/cache, persisted via the backend volume).

License

MIT

About

A web application to track media on my Jellyfin server that needs updating. Whether that be new seasons or better quality file versions.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published