A comprehensive media tracking application that helps you keep track of movies and TV shows you want to watch and have already watched. Perfect for maintaining your personal "canonical source of truth" for media consumption.
- Movie & TV Series Management: Add, track, and manage your watchlist
- IMDB Integration: Search and import movies/series directly from IMDB
- Episode Tracking: Automatic episode import for TV series with season/episode tracking
- Watched Status: Mark movies and episodes as watched/unwatched
- Web Interface: Beautiful, responsive web UI accessible from any device
- Statistics: Track your viewing progress and statistics
- Docker Support: Easy deployment on Synology NAS or any Docker environment
- RESTful API: Full API for potential mobile app integration
- In Portainer, create a new Stack β From git repository.
- Repository: your GitHub repo; Branch:
main. - Compose path:
viewvault-backend/docker-compose.yml. - Environment/Secrets: create a file on your NAS (e.g.,
/volume1/docker/viewvault-backend/secrets.env) fromsecrets.env.exampleand bind it in the stack (see composeenv_fileor a bind mount). - Deploy. Named volumes for DB/posters will be created automatically.
The stack builds directly from Git; no local files are required on the NAS besides your secrets.env.
-
Clone the repository:
git clone <repository-url> cd viewvault-backend
-
Set up environment (optional):
# Create .env file for IMDB API key (optional) echo "IMDB_API_KEY=your_api_key_here" > .env
-
Run with Docker Compose:
docker-compose up -d
-
Access the application:
- Web UI: http://your-nas-ip:8000
- API: http://your-nas-ip:8000/api/
-
Install dependencies:
pip install -r requirements.txt
-
Run the application:
uvicorn main:app --reload --host 0.0.0.0 --port 8000
-
Access the application:
- Web UI: http://localhost:8000
- API: http://localhost:8000/api/
Copy secrets.env.example to secrets.env and set values:
SECRET_KEY=change-me
TMDB_API_KEY=your_tmdb_key
IMDB_API_KEY=your_omdb_key
JELLYFIN_URL=http://192.168.1.211:8096
JELLYFIN_API_KEY=your_jellyfin_api_key
JELLYFIN_USER_ID=your_jellyfin_user_id
Mount this file on the NAS as /app/secrets.env (or use env_file: ./secrets.env if building locally).
For full IMDB integration, get a free API key from OMDB API:
- Visit http://www.omdbapi.com/
- Request a free API key
- Set the environment variable:
Or add it to your
export IMDB_API_KEY=your_api_key_here.envfile for Docker deployment.
Note: The app works without an API key using mock data for development.
-
Search & Import:
- Enter a movie or TV show title in the search box
- Click "Search Movies" or "Search Series"
- Click "Import" to add to your watchlist
-
Manage Watchlist:
- View all your movies and series
- Mark items as watched/unwatched
- Track episode progress for TV series
-
Statistics:
- View your viewing statistics
- Track progress across different media types
GET /search/movies/?query={title}- Search for moviesGET /search/series/?query={title}- Search for TV seriesPOST /import/movie/{imdb_id}- Import a moviePOST /import/series/{imdb_id}- Import a series with episodes
GET /movies/- Get all moviesPOST /movies/- Add a movieGET /movies/{id}- Get specific moviePUT /movies/{id}- Update movieDELETE /movies/{id}- Delete moviePATCH /movies/{id}/watched- Toggle watched status
GET /series/- Get all seriesPOST /series/- Add a seriesGET /series/{id}- Get specific seriesPUT /series/{id}- Update seriesDELETE /series/{id}- Delete series
GET /episodes/?series_id={id}- Get episodes for a seriesPOST /episodes/- Add an episodeGET /episodes/{id}- Get specific episodePUT /episodes/{id}- Update episodeDELETE /episodes/{id}- Delete episodePATCH /episodes/{id}/watched- Toggle watched status
GET /stats/- Get viewing statistics
The application uses SQLite for data storage. The database file (viewvault.db) is automatically created on first run and contains:
- Movies: Movie information and watched status
- Series: TV series information
- Episodes: Episode details with season/episode tracking
- Scheduled Updates: Automatic checking for new episodes
- Mobile App: Native mobile application
- Notifications: Alerts for new episodes/seasons
- Export/Import: Backup and restore functionality
- Multiple Users: User authentication and profiles
- Advanced Filtering: Filter by genre, year, rating, etc.
- Recommendations: AI-powered content recommendations
viewvault-backend/
βββ main.py # FastAPI application
βββ models.py # Database models
βββ imdb_service.py # IMDB integration
βββ static/
β βββ index.html # Web frontend
βββ requirements.txt # Python dependencies
βββ Dockerfile # Docker configuration
βββ docker-compose.yml # Docker Compose setup
βββ README.md # This file
- Database Models: Add new models in
models.py - API Endpoints: Add endpoints in
main.py - Frontend: Update
static/index.html - Services: Add new services in separate files
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is open source and available under the MIT License.
If you encounter any issues:
- Check the application logs
- Verify your IMDB API key (if using)
- Ensure the database file is writable
- Check Docker container health status
For Docker deployments:
# Check container status
docker-compose ps
# View logs
docker-compose logs viewvault-backend
# Restart the service
docker-compose restart viewvault-backendHappy watching! π¬