Add Docker deployment and per-player secret-link viewers.

Each player gets an isolated SQLite viewer via a unique URL without login, with landing page warnings to save the link and compose-based hosting for sharing with others.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-19 16:06:13 +02:00
parent fbc2deec45
commit f51f166fa1
14 changed files with 589 additions and 53 deletions
+17
View File
@@ -26,6 +26,7 @@
},
"empty": {
"noSave": "Kein Save importiert. Starte mit: python app.py fantasyidler_save.json",
"noSaveWeb": "Noch kein Save importiert. Importiere ein Backup über den Button in der Sidebar.",
"loadError": "Fehler beim Laden: {message}",
"unknown": "Unbekannt",
"none": "Keine",
@@ -174,5 +175,21 @@
"gems_jewelry": "Edelsteine & Schmuck",
"potions_brews": "Tränke & Brauerei",
"misc": "Sonstiges"
},
"viewer": {
"landingLead": "Erstelle deinen persönlichen Save-Viewer. Kein Konto nur ein privater Link zu deinen Daten.",
"featureDashboard": "Skills, Inventar, Quests und Verlauf",
"featureUpload": "Backups im Browser importieren",
"featurePrivate": "Deine Daten bleiben nur in deinem Viewer",
"create": "Meinen Viewer erstellen",
"creating": "Viewer wird erstellt…",
"createFailed": "Viewer konnte nicht erstellt werden",
"warningTitle": "Wichtig",
"warningBody": "Es gibt keinen Login. Dein Viewer ist nur über seinen einzigartigen Link erreichbar. Link speichern oder bookmarken ohne ihn sind deine Daten nicht wiederherstellbar.",
"linkTitle": "Dein persönlicher Link",
"linkWarning": "Link speichern es gibt keinen Login. Ohne Link sind deine Daten weg.",
"copyLink": "Link kopieren",
"copied": "Kopiert!",
"copyPrompt": "Viewer-Link kopieren:"
}
}
+17
View File
@@ -26,6 +26,7 @@
},
"empty": {
"noSave": "No save imported. Start with: python app.py fantasyidler_save.json",
"noSaveWeb": "No save imported yet. Import a backup using the sidebar button.",
"loadError": "Failed to load: {message}",
"unknown": "Unknown",
"none": "None",
@@ -174,5 +175,21 @@
"gems_jewelry": "Gems & Jewelry",
"potions_brews": "Potions & Brews",
"misc": "Misc"
},
"viewer": {
"landingLead": "Create your personal save viewer. No account just a private link to your data.",
"featureDashboard": "Skills, inventory, quests and history",
"featureUpload": "Import backups in the browser",
"featurePrivate": "Your data stays in your viewer only",
"create": "Create my viewer",
"creating": "Creating viewer…",
"createFailed": "Could not create viewer",
"warningTitle": "Important",
"warningBody": "There is no login. Your viewer is only accessible via its unique link. Bookmark or save the link without it, your data cannot be recovered.",
"linkTitle": "Your personal link",
"linkWarning": "Save this link there is no login. Without it, your data is lost.",
"copyLink": "Copy link",
"copied": "Copied!",
"copyPrompt": "Copy your viewer link:"
}
}