Add ntfy push notifications with action buttons for meal reminders
CI / test-and-package (push) Successful in 37s

- ntfy.py: send_meal_reminder() with Home/Out HTTP action buttons, test helper
- models.py: new columns ntfy_url, ntfy_token, callback_token on users table
- meals.py: /api/ntfy-callback (public, token-authenticated), /ntfy-settings, /ntfy-test
- app.py: flask send-reminders CLI command (cron-schedulable)
- Dashboard: ntfy config form in Account Settings
- i18n: translations for all ntfy strings (en/fr/de)
- Dockerfile: include ntfy.py in COPY
- tests: 15 new tests covering callback, settings, and auth
- docs: updated AGENTS.md and doc/index.md
This commit is contained in:
agentbox
2026-08-01 06:17:26 +00:00
parent 7bf00ee2e3
commit 3681f9dfce
10 changed files with 650 additions and 4 deletions
+46
View File
@@ -320,6 +320,52 @@ TRANSLATIONS: dict[str, dict[str, str]] = {
"fr": "Le foyer et tous ses membres ont été supprimés.",
"de": "Haushalt und alle Mitglieder wurden gelöscht.",
},
# ── Ntfy notifications ──
"Ntfy Notifications": {
"fr": "Notifications Ntfy",
"de": "Ntfy-Benachrichtigungen",
},
"Get meal reminders on your phone via ntfy.": {
"fr": "Recevez des rappels de repas sur votre téléphone via ntfy.",
"de": "Erhalten Sie Essenserinnerungen auf Ihrem Handy via ntfy.",
},
"Ntfy Topic URL": {
"fr": "URL du sujet Ntfy",
"de": "Ntfy-Themen-URL",
},
"Access Token": {
"fr": "Jeton d'accès",
"de": "Zugriffstoken",
},
"(optional)": {
"fr": "(optionnel)",
"de": "(optional)",
},
"Save": {
"fr": "Enregistrer",
"de": "Speichern",
},
"Send Test": {
"fr": "Tester",
"de": "Test senden",
},
"Ntfy settings saved.": {
"fr": "Paramètres Ntfy enregistrés.",
"de": "Ntfy-Einstellungen gespeichert.",
},
"Please enter an ntfy URL first.": {
"fr": "Veuillez d'abord entrer une URL ntfy.",
"de": "Bitte geben Sie zuerst eine ntfy-URL ein.",
},
"Test notification sent! Check your device.": {
"fr": "Notification de test envoyée ! Vérifiez votre appareil.",
"de": "Testbenachrichtigung gesendet! Überprüfen Sie Ihr Gerät.",
},
"Failed to send test notification. Check your ntfy URL and token.": {
"fr": "Échec de l'envoi du test. Vérifiez votre URL ntfy et votre jeton.",
"de": "Testbenachrichtigung fehlgeschlagen. Überprüfen Sie Ihre ntfy-URL und Ihr Token.",
},
}