No description
  • Svelte 36.4%
  • TypeScript 35.9%
  • JavaScript 16.5%
  • Java 9.3%
  • Shell 0.9%
  • Other 0.9%
Find a file
Kevin Heyer e7a6a42eb8 Android app 1.2.2: month calendar widget
Ships the month widget (33c5397) to the phones. It needs a new APK
because it adds native code (CalendarMonthWidget, the extended
CalendarWidget plugin and background bridge), a layout and a manifest
entry. Its web side goes live with the same deployment and stays
inactive in 1.2.1, which only offers the list widget.

Release: familie-1.2.2.apk (versionCode 5) in releases/, familie.apk and
version.json point to it, so installed apps announce the update
themselves and the family page shows it as available. The script keeps
the two newest APKs, so 1.2.0 is removed.
2026-10-06 12:53:03 +02:00
.vscode Add root docker-compose.yml for server deployment 2026-10-04 12:51:34 +02:00
android Android app 1.2.2: month calendar widget 2026-10-06 12:53:03 +02:00
deploy Take recipes and ingredients from the family's own Mealie 2026-10-05 09:10:07 +02:00
docs Add routines per person with a notification when a step starts 2026-10-05 17:39:55 +02:00
releases Android app 1.2.2: month calendar widget 2026-10-06 12:53:03 +02:00
skills Add workflow skills, remove the sync prototypes and dead exports 2026-10-05 08:00:02 +02:00
src Add a month calendar widget next to the event list widget 2026-10-06 12:52:30 +02:00
static first commit 2026-10-04 12:43:49 +02:00
tests/e2e Add routines per person with a notification when a step starts 2026-10-05 17:39:55 +02:00
.dockerignore Add workflow skills, remove the sync prototypes and dead exports 2026-10-05 08:00:02 +02:00
.gitignore Add server backups, encrypted family backups and a roadmap 2026-10-04 20:02:22 +02:00
.npmrc Add root docker-compose.yml for server deployment 2026-10-04 12:51:34 +02:00
AGENTS.md Add a month calendar widget next to the event list widget 2026-10-06 12:52:30 +02:00
capacitor.config.ts Add Android app as a native shell around the web app 2026-10-04 18:19:29 +02:00
CLAUDE.md first commit 2026-10-04 12:43:49 +02:00
docker-compose.yml Take recipes and ingredients from the family's own Mealie 2026-10-05 09:10:07 +02:00
GEMINI.md first commit 2026-10-04 12:43:49 +02:00
LICENSE first commit 2026-10-04 12:43:49 +02:00
package-lock.json Add the family map with end-to-end encrypted positions 2026-10-04 22:42:42 +02:00
package.json Add workflow skills, remove the sync prototypes and dead exports 2026-10-05 08:00:02 +02:00
README.md Add routines per person with a notification when a step starts 2026-10-05 17:39:55 +02:00
tsconfig.json first commit 2026-10-04 12:43:49 +02:00
vite.config.ts Take recipes and ingredients from the family's own Mealie 2026-10-05 09:10:07 +02:00

Heyer Familien-App

Selbst gehostete Familien-App für Browser und Android, ohne App-Store. Alle Familiendaten sind Ende-zu-Ende-verschlüsselt.

Funktionen

  • Gemeinsamer Kalender: Farbe pro Person, Personen ein- und ausblendbar, Erinnerung aufs Handy, Ferien und Feiertage aus Kalenderdateien (.ics)
  • Stundenplan für die Kinder: Zeiten festlegen, Fächer zuweisen
  • Routinen pro Person wie ein Stundenplan (z. B. Aufstehen, Zähne putzen, Vorlesen) mit Bildern für Kinder; einzelne Schritte erinnern beim Start aufs Handy, auf Wunsch Pause in den Ferien
  • Essenplan fürs ganze Jahr mit Vorschlägen aus bisherigen Gerichten; Zutaten mit einem Tipp auf die Einkaufsliste; Rezepte samt Zutaten aus dem eigenen Mealie übernehmen
  • Einkaufsliste mit Abgleich in Echtzeit
  • Haushaltsplan: Aufgaben mit wechselnder Zuständigkeit und Sternen für die Kinder
  • Wetter mit Kleidungsempfehlung für heute und morgen, Vorschau auf die nächsten 5 Tage
  • Abfahrten an den eigenen Haltestellen (Bahn und Bus) mit Echtzeit, Verspätungen und Ausfällen
  • Links zu den selbst gehosteten Familiendiensten (Musik, Kochbuch, Immich …)
  • Familienkarte: Wer teilt, ist mit Bild auf der Karte zu sehen; jede Person sieht, wer sie sehen kann, und kann das Teilen pausieren
  • Familienspiele zum Abwechseln, auch zeitversetzt: Tic-Tac-Toe und Vier gewinnt, Kinder ohne eigenes Gerät spielen mit
  • Einfache Ansicht pro Gerät für Kinder und Großeltern: größere Schrift, nur die nächsten Termine und der Kalender

Stand

Phasen 1–5: Familie gründen, Geräte per QR-Code hinzufügen und entfernen, Personen mit Farbe und Bild, gemeinsamer Kalender (Farbe pro Person, ein- und ausblendbar, Wiederholungen, Erinnerungen solange die App offen ist), Stundenplan für die Kinder, Routinen mit Erinnerung, Haushaltsplan mit Sternen, Einkaufsliste mit Abgleich in Echtzeit, Essenplan fürs ganze Jahr, Links zu den Familiendiensten, Wetter mit UV-Index und Kleidungsempfehlung, Familienkarte (ADR 0008, 0009), installierbare Web-App, Android-App, Deployment mit Docker. Entscheidungen stehen in docs/adr. Was noch offen ist und in welcher Reihenfolge, steht in der Roadmap.

Ausprobieren

Lokal zum Entwickeln (zwei Terminals):

npm install
npm run sync   # Sync-Server
npm run dev    # App auf http://localhost:5173

Wie auf dem Server (App und Sync-Server in Docker, Port 8080):

docker compose up -d --build

Für Handys die App hinter dem Reverse Proxy mit HTTPS betreiben und auf Port 8080 weiterleiten (änderbar mit APP_PORT); WebSockets für /sync müssen erlaubt sein. Ohne HTTPS verweigern Handy-Browser Verschlüsselung und Installation.

Rezepte aus dem eigenen Mealie übernehmen: auf dem Server MEALIE_URL setzen, z. B. in einer .env neben docker-compose.yml (MEALIE_URL=http://mealie:9000, wenn Mealie im selben Docker-Netz läuft, sonst seine HTTPS-Adresse). In der App dann unter „Essen“ ganz unten einen API-Schlüssel aus Mealie (Profil → API-Tokens) eintragen (ADR 0011).

Sicherung

Zwei voneinander unabhängige Wege:

  • Server-Backup: deploy/backup.sh sichert die (verschlüsselten) Daten des Sync-Servers nach backups/, deploy/restore.sh <Datei> spielt sie zurück. Am besten regelmäßig per Cronjob auf dem Server ausführen und backups/ ins normale Backup aufnehmen. Ohne ein Gerät der Familie ist dieses Backup nicht lesbar.
  • Familien-Backup in der App: Unter Familie → Sicherung lädt man alle Familiendaten als Datei herunter, verschlüsselt mit einem eigenen Passwort. Diese Datei lässt sich auch in eine neu gegründete Familie einspielen, etwa wenn alle Geräte verloren sind. Beim Einspielen wird nur ergänzt, nichts überschrieben.

Handy verloren?

  • Ein normales Gerät entfernt man von einem verwaltenden Gerät aus unter Familie → „Entfernen“.
  • Ein Gerät, das die Familie verwaltet, kann Jazz nicht von außen entfernen. Dann unter Familie → „Handy verloren? Familie umziehen“ das verlorene Gerät abwählen. Alle Daten wandern in eine neue Familie, die anderen Geräte tippen beim nächsten Öffnen auf „Mitkommen“, das verlorene sieht nichts Neues mehr. Dafür braucht es ein zweites verwaltendes Gerät („Darf verwalten“), die App erinnert daran.

Android-App

Die App ist eine Hülle um die Live-Seite (ADR 0005). Ab Version 1.1.0 gleicht sie alle 2 Stunden im Hintergrund ab, damit Erinnerungen auch für Termine kommen, die andere Geräte angelegt haben (ADR 0006). Ab Version 1.2.0 sendet sie, wenn die Person ihren Standort teilt und „Immer erlauben“ gewährt hat, alle 15 Minuten den Standort für die Familienkarte (ADR 0008). Verbesserungen kommen deshalb meist ohne neue APK aufs Handy. Gebaut wird in Docker, auf dem Rechner muss nichts installiert werden.

Einmalig den Signaturschlüssel anlegen und den Ordner ~/.heyer-app sichern (Passwortmanager oder Backup). Ohne ihn lassen sich keine Updates mehr installieren:

npm run android:keystore

Neue Version bauen und verteilen:

npm run android:release        # Version +1, bauen, signieren -> releases/
git add releases android && git commit && git push
# auf dem Server: git pull && docker compose up -d --build

Die Familie installiert die App über /installieren. Ab Version 1.1.0 meldet die App neue Versionen selbst (auf der Startseite und als Benachrichtigung) und installiert sie mit einem Tipp auf „Jetzt aktualisieren“ (ADR 0007). Alternativ geht Obtainium mit der Quelle https://<domain>/download/. Die Adresse der App und die Version stehen in android/release.properties.

Agent-Skills

Die Skills für KI-Coding-Agents liegen in skills/.

Lizenz

LGPL-3.0