Files
rename-mvp/docs/ARCHITECTURE.md
2026-03-07 12:12:54 +01:00

163 lines
2.0 KiB
Markdown

# ARCHITECTURE.md
## Project
Rename-MVP
Webapplicatie voor het hernoemen van mediabestanden op basis van metadata van TheTVDB.
---
# High Level Architecture
browser
FastAPI backend
TVDB service
TheTVDB API
---
# Container Architecture
Runtime:
Rootless Podman container
Image:
rename-mvp
Expose:
8085 → 8080
---
# Volumes
Host en container gebruiken identieke paden.
Volumes:
/Volumes/8TB/Shared_Folders/TV_Shows → /Volumes/8TB/Shared_Folders/TV_Shows
/Volumes/8TB_RAID1/Shared_Folders/Library/TV_Shows → /Volumes/8TB_RAID1/Shared_Folders/Library/TV_Shows
/home/kodi/.config/rename-mvp/data → /app/data
---
# Allowed Media Roots
De applicatie mag alleen bestanden lezen of wijzigen binnen de volgende directories:
/Volumes/8TB/Shared_Folders/TV_Shows
/Volumes/8TB_RAID1/Shared_Folders/Library/TV_Shows
Alle file operations moeten binnen deze paden blijven.
---
# Backend Modules
Belangrijke modules:
tvdb_auth_service
tvdb_client
tvdb_service
file_service
preview_service
rename_service
session_service
---
# TVDB Authentication Flow
1 login via /login
2 ontvang JWT token
3 decode JWT payload
4 lees exp claim
5 bereken renew_after
token wordt opgeslagen in:
/app/data/tvdb_auth.json
---
# Token Lifecycle
Token wordt alleen vernieuwd als:
now >= renew_after
of
TVDB response 401 geeft.
Token wordt **niet bij elke request vernieuwd**.
---
# File Rename Flow
1 user selecteert serie
2 afleveringen worden geladen
3 user selecteert afleveringen
4 user selecteert bestanden
5 backend genereert preview
6 user bevestigt rename
7 backend voert rename uit
---
# Data Storage
SQLite:
session state
rename logs
JSON:
tvdb_auth.json
---
# Naming Format
Bestandsnaam:
{series} ({year}) - S{season:02}E{episode:02} - {title}{ext}
Voorbeeld:
Elsbeth (2024) - S02E03 - Devil's Night.mkv
---
# Invariants
Deze eigenschappen mogen niet veranderen:
- API endpoints
- rename template
- token renew logic
- container runtime