- Setup C++/Qt6 desktop application structure - Added initial Go proxy backend for TMDB/IGDB integration
83 lines
3.6 KiB
Markdown
83 lines
3.6 KiB
Markdown
# 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`.
|