# 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