feat: initial commit for media tracking software

- Setup C++/Qt6 desktop application structure
- Added initial Go proxy backend for TMDB/IGDB integration
This commit is contained in:
Tronax 2026-06-15 02:02:25 +02:00
commit 3f07c78316
Signed by: Tronax
SSH key fingerprint: SHA256:2pKKXDZucWvaF/GzXNz0FY53EAO1YDLN80bqS+TTz/o
63 changed files with 6547 additions and 0 deletions

83
README.md Normal file
View file

@ -0,0 +1,83 @@
# Ultimate Media Tracker
Ein hochgradig anpassbarer Tracker für **Filme, Serien, Mangas, Bücher und
Spiele** geschrieben in C++17 mit **Qt 6**. Behalte den Überblick darüber, was
du gesehen/gelesen/gespielt hast, und zwar auf jeder Ebene: ganzes Werk,
Staffel/Band oder einzelne Folge/Kapitel.
## Features
- **5 Medientypen**: Filme, Serien, Mangas, Bücher, Spiele
- **Granularer Fortschritt**: komplett · pro Staffel/Band · pro Folge/Kapitel
(tri-state Häkchen-Baum, automatische „Abgeschlossen“-Erkennung)
- **Automatische Titelbilder** über Online-Provider, jederzeit per integrierter
Suche austauschbar oder durch eigene Datei ersetzbar
- **Mehrsprachige Titel** pro Eintrag (de/en/ja/…), inkl. Originaltitel
- **Online-Metadaten-Provider**
- Filme & Serien: **TMDB** (kostenloser API-Key nötig)
- Bücher: **OpenLibrary** (kein Key)
- Mangas: **AniList** (kein Key)
- **Umfangreiche Filter**: Genre, Status, Bewertung, Jahr, Tags, Favoriten,
**Franchise** (automatisch aus den Titeln erkannt, manuell überschreibbar),
Volltextsuche, plus Sortierung (Datum/Titel/Bewertung/Jahr/Fortschritt)
- **Geteilter TMDB-Zugang** optional über einen **OIDC-Proxy** (siehe
`server/`): die Gruppe teilt sich einen API-Key, Login via Authentik
- **Customizability**: eigene Tags, eigene Felder (Key/Value), eigene
Strukturen (beliebige Abschnitte & Einheiten), anpassbare Kartengröße
- **Modernes GUI** mit **Dark- & Light-Mode** und frei wählbarer **Akzentfarbe**
- **Bewertung** als halbe-Sterne-Widget, Favoriten, Notizen, Beschreibung
- Lokale **SQLite**-Datenbank, Cover-Cache auf Platte
## Bauen
Voraussetzungen: Qt 6 (Widgets, Network, Sql, Svg, Concurrent), CMake ≥ 3.21,
ein C++17-Compiler, SQLite-Treiber (Teil von Qt).
```bash
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
./build/uwt
```
Identisch unter **Linux und Windows** (sowie macOS). Unter Windows wird das
Programm als GUI-App ohne Konsolenfenster gebaut und bekommt das App-Icon
eingebettet; unter Linux installiert `cmake --install build` zusätzlich einen
`.desktop`-Eintrag samt Icon.
## Konfiguration
Öffne **⚙ Einstellungen**:
- **Design**: Dunkel/Hell
- **Akzentfarbe**: frei wählbar
- **Bevorzugte Sprache**: bestimmt angezeigte Titel & Provider-Sprache
- **Filme/Serien über**: entweder **eigener TMDB API-Key** (kostenlos auf
themoviedb.org) **oder** ein **Proxy-Server** (URL + Token von dessen
Login-Seite kein eigener Key nötig, siehe `server/`)
- **Cover automatisch laden**, **Kartengröße**
## TMDB-Proxy (optional)
Im Verzeichnis `server/` liegt ein kleiner Go-Server, der die TMDB-API hinter
**OIDC/Authentik** kapselt. So können Freunde die App nutzen, ohne sich je einen
eigenen TMDB-Key zu erstellen der Server hält einen geteilten Key und gibt
nach dem Login ein persönliches Token aus. Details: `server/README.md`.
## Daten
- Datenbank: `…/AppData/UMT/Ultimate Media Tracker/library.db`
- Cover-Bibliothek: `…/AppData/…/covers/`
- (Pfade gemäß `QStandardPaths::AppDataLocation`)
## Architektur
```
src/
core/ Enums, MediaItem (Werk→Abschnitt→Einheit), Database (SQLite), Settings
providers/ MetadataProvider-Interface + TMDB/OpenLibrary/AniList, ImageCache
ui/ ThemeManager, MainWindow, MediaCard, FilterPanel, FlowLayout,
StarRating, DetailDialog, EditDialog, OnlineSearchDialog, SettingsDialog
```
Das Datenmodell ist generisch: Jedes Werk besteht aus *Abschnitten* (Staffel /
Band / Teil), die *Einheiten* (Folge / Kapitel) enthalten. Filme/Bücher ohne
Struktur nutzen einfach den Status `Abgeschlossen`.