Early beta · actively developed · AGPL-3.0 licensed

A library for books, CDs and films — run by you, hosted on your own server.

MedInv catalogs physical collections automatically: scan a barcode, let it fetch title & cover art through metadata lookups, organize everything across any number of libraries — and search, analyze, and share it with others whenever you like. Runs entirely on your own infrastructure.

MedInv's statistics view showing value history and a genre distribution for a library
Feature set

Everything a serious collection needs.

Six areas, one tool — from the first scan to the last backup.

Media & libraries

Three dedicated media types — books, CDs, DVDs/Blu-rays — each with its own purpose-built fields instead of generic free text. Any number of independent libraries, shared per user with fine-grained control.

Capture & metadata

Scan a barcode or type a title — MedInv queries up to nine providers per media type automatically and downloads covers locally. A miss is never a dead end: manual entry always stays an option.

EAN/ISBN scan Optional AI lookup Cover download

Search & statistics

Full-text search with genuine typo tolerance, fine filters by genre, language, year, or price. Plus distributions and value history per library — including automatic currency conversion.

Access & sharing

Three account levels — guest, user, admin — plus fine-grained sharing per library. Optional OpenID Connect/OAuth2 login alongside classic accounts, with brute-force protection.

Backup, export & import

Automatic and manual backups with configurable retention, plus a safety backup before every schema-changing update. Full instance restore or targeted per-library export.

Languages & themes

18 bundled language packs, six themes, and its own CSS plugin system for a custom look — switchable per instance, with an editor for adding further languages.

In practice

This is what your own collection feels like.

Real interface, real sample data — no mockups.

Search page with filters for media type, genre, language, price, and release year
Search

Find any title again, no matter how large the collection grows.

A full-text search across every library you can see, combinable with structured filters — plus a genuine, typo-tolerant fuzzy search for when the name isn't quite on the tip of your tongue.

  • Filters by media type, genre, language, medium, price, year
  • Saved searches for recurring queries
  • Results automatically respect library sharing
MedInv capture page with barcode entry, camera scan, and capture without an EAN
Capture

Scan instead of type.

A single barcode is enough: MedInv queries every enabled metadata provider in parallel and merges the results field by field. No matching code on hand? Free-text title search works just as well.

  • Camera scan right in the browser, or manual entry
  • Bulk import of whole lists from a text file
  • Re-fetch metadata for any title later
Library view with a title list, author, and EAN, plus PDF export
Libraries

Clear lists instead of index-card chaos.

Every library shows its holdings as a sortable, exportable list — including PDF export, multi-select for bulk changes, and direct access to every detail.

  • Bulk edit and delete for selected titles
  • PDF export of an entire library
  • Free-text shelf location per copy
Plugin management listing metadata providers per media type, version, source, EAN support, and enabled state
Plugins

Every metadata provider, controlled individually.

More than twenty metadata providers across all media types — API-based, web-scraping, or AI-powered — can each be enabled, configured, and tested individually, with no code changes required.

  • Its own API key & settings per provider
  • EAN support per provider visible at a glance
  • Connection test right in the interface
Overview of reports: duplicates, data quality, recent additions, top lists, capture source, sharing
Reports

Answers to concrete questions about the collection.

Seven ready-made tables answer what a chart alone can't: where are the duplicates? Which entries are missing a cover or price? What was added most recently?

  • Duplicates, data quality, top lists, sharing & more
  • Every table exports to PDF
  • Spans all libraries, respects sharing
Statistics distributions by director, medium, and release year for a DVD/Blu-ray library
Statistics

The collection in numbers, sorted by frequency.

Every library gets its own distributions — genre, language, director, medium, release year — plus a value history over time and automatic currency conversion for mixed holdings.

  • Distributions always sorted by frequency
  • Value history over time, per library
  • Automatic conversion across multiple currencies
Quick start

One container, no setup marathon.

MedInv runs as a single, self-contained Docker image — with an embedded SQLite database, no separate database container required.

Terminal
# Then available at http://localhost:8080
docker run -d \
  --name medinv \
  -p 8080:8080 \
  -e MEDINV_ADMINUSER=admin@example.com \
  -e MEDINV_ADMINPASS='ChangeMe123!' \
  -v medinv-storage:/var/www/backend/storage \
  --restart unless-stopped \
  ghcr.io/vulture20/medinv:latest

The medinv-storage volume is what makes the database, covers, and backups survive restarts — always mount it. Every option, including MariaDB/PostgreSQL support, is documented in the README on GitHub.

Backend · PHP / Laravel 13 Frontend · React / TypeScript Database · SQLite, MariaDB, or PostgreSQL Deployment · one Docker image, one port