2026-04-12 19:18:55 +02:00
2026-04-13 18:19:34 +02:00
2026-04-12 19:18:55 +02:00
2026-04-12 19:18:55 +02:00
2026-04-13 18:19:34 +02:00
2026-04-12 10:36:13 +02:00

Nouri

Nouri ist eine kleine private Flask-App für einen Haushalt, um Essensideen, Einkäufe, vorhandene Lebensmittel und eine einfache Tages- oder Wochenplanung ruhig und alltagsnah festzuhalten.

Merkmale in Version 1.0.0

  • Lebensmittel und Mahlzeitenideen anlegen
  • Fotos lokal hochladen
  • Einkaufsliste mit Abhaken
  • „Zuhause“ als sichtbarer Vorrat mit Tageszeit-Filtern
  • Archiv mit Suche und schneller Wiederaufnahme
  • Tagesplan mit schnellen Vorschlägen je Tageszeit
  • Wochenansicht für die nächsten 7 Tage
  • einfache Suche und Filter für Lebensmittel und Mahlzeitenideen
  • mehrere Haushaltsnutzer mit Rollen
  • gemeinsame und persönliche Inhalte
  • Profilseite und Passwortänderung
  • kleine Admin-Verwaltung für Nutzer
  • kompaktere mobile Navigation mit Bottom-Bar
  • Tagesvorlagen und Wochenvorlagen
  • kleine Pakete für wiederkehrende Einkaufs- oder Planungsbausteine
  • ruhige Hinweise und Vorschläge aus Zuhause, Archiv und bisherigen Planungen
  • globale Kategorien pro Haushalt
  • „Für wen?“ direkt an Lebensmitteln und Mahlzeiten
  • Einkaufsrhythmus mit geplantem Einkaufstag und später aktivierten Bedarfen
  • PWA-Grundlage mit Web App Manifest, Service Worker und optionalem Web Push

Lokal starten

python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
flask --app wsgi run --debug

Dann http://127.0.0.1:5000 öffnen und beim ersten Start einen ersten Haushalt-Benutzer unter /auth/setup anlegen.

Konfiguration

Die App legt Daten standardmäßig unter ./data ab.

Wichtige Umgebungsvariablen:

  • NOURI_SECRET_KEY: Session-Secret für Produktion
  • NOURI_DATA_DIR: Pfad für Datenbank und Uploads, lokal standardmäßig ./data, auf Cloudron /app/data
  • NOURI_MAX_UPLOAD_MB: maximales Upload-Limit in MB, Standard 5
  • NOURI_SECURE_COOKIES: bei HTTPS in Produktion auf 1 setzen
  • NOURI_TIMEZONE: lokale Zeitzone, z. B. Europe/Berlin
  • NOURI_VAPID_PUBLIC_KEY: öffentlicher VAPID-Schlüssel für Web Push
  • NOURI_VAPID_PRIVATE_KEY: privater VAPID-Schlüssel für Web Push
  • NOURI_VAPID_SUBJECT: Kontaktangabe für Web Push, z. B. mailto:mail@hnz.io

Migration und Datenhaltung

Beim Start erweitert Nouri das SQLite-Schema pragmatisch direkt weiter. Vorhandene Daten bleiben dabei erhalten und werden weiterverwendet.

Wichtig für die Trennung zwischen lokal und Produktion:

  • lokal nutzt Nouri ohne gesetzte Variable standardmäßig ./data
  • auf Cloudron nutzt Nouri /app/data
  • data/ ist nicht für Git oder das Paket gedacht
  • produktive Daten unter /app/data bleiben bei Updates erhalten

Cloudron

Nouri ist so vorbereitet, dass Code und persistente Daten sauber getrennt bleiben:

  • Code liegt im Container unter /app/code
  • persistente Daten liegen unter /app/data
  • Datenbank und Uploads werden nicht aus dem lokalen ./data nach Produktion übernommen
  • Updates ersetzen den Code, aber nicht die produktiven Inhalte in /app/data

Neu installieren

  1. Paket oder Image bauen und nach Cloudron hochladen.
  2. Die App einmal per Cloudron installieren.
  3. Nach dem ersten Start Nouri öffnen.
  4. Den ersten Haushalt-Zugang unter /auth/setup anlegen.
  5. Danach Push, Erinnerungen und Einkaufstag in den Optionen einrichten.

Bestehende Installation aktualisieren

Wenn Nouri bereits installiert ist, bitte kein neues cloudron install ausführen. Stattdessen die bestehende App aktualisieren, zum Beispiel mit:

cloudron update --no-backup --app <deine-app> --server <dein-server> --token <dein-token>

Dabei gilt:

  • produktive Daten unter /app/data bleiben erhalten
  • lokale Testdaten aus ./data werden nicht mit hochgeladen
  • die bestehende Installation läuft mit demselben persistenten Datenordner weiter

Wichtige Cloudron-Variablen

Für eine saubere produktive Installation sind diese Werte sinnvoll:

  • NOURI_DATA_DIR=/app/data
  • NOURI_SECURE_COOKIES=1
  • NOURI_TIMEZONE=Europe/Berlin
  • NOURI_SECRET_KEY=<eigenes-secret>
  • NOURI_VAPID_PUBLIC_KEY=<public-key>
  • NOURI_VAPID_PRIVATE_KEY=<private-key>
  • NOURI_VAPID_SUBJECT=mailto:mail@hnz.io

Push einrichten

1. VAPID-Schlüssel erzeugen

Die Schritte dafür stehen kompakt in PUSH_SETUP.md.

2. VAPID-Werte in Cloudron setzen

Zum Beispiel so:

cloudron env set --app <deine-app> \
  NOURI_VAPID_PUBLIC_KEY='...' \
  NOURI_VAPID_PRIVATE_KEY='...' \
  NOURI_VAPID_SUBJECT='mailto:mail@hnz.io'

Danach die App neu starten:

cloudron restart --app <deine-app>

3. Push auf dem Gerät aktivieren

  1. Nouri im Browser oder auf dem iPhone öffnen.
  2. In Optionen auf Push erlauben tippen.
  3. Optional eine Test-Mitteilung senden.
  4. Auf dem iPhone Nouri am besten zusätzlich zum Home-Bildschirm hinzufügen.

Wichtig:

  • Push funktioniert nur auf Geräten, die sich einmal aktiv registriert haben.
  • Ohne VAPID-Werte bleibt Push bewusst deaktiviert.
  • Die Browser- oder iPhone-Freigabe allein reicht nicht: Hinweise müssen zusätzlich in Nouri eingeschaltet sein.

Lizenz

Nouri ist in diesem Repository für private, nicht-kommerzielle Nutzung freigegeben. Details stehen in LICENSE.md.

S
Description
Eine App um Mahlzeiten zu planen.
Readme 1.8 MiB
Version 1.3.4 Latest
2026-05-01 12:48:18 +00:00
Languages
Python 50%
HTML 29.8%
CSS 14.2%
JavaScript 5.9%
Shell 0.1%