🐈 Katzen-Sitting-Planer (Cat Sitting Planner)

Der Katzen-Sitting-Planer ist eine simple, aber effektive Web-App zur Koordination der Katzenbetreuung während der Urlaubszeit. Anstatt unübersichtlicher Chat-Gruppen bietet die App einen zentralen Kalender, in dem sich Freunde, Nachbarn oder Sitter eintragen können.


🌟 Konzept & Philosophie

Die App folgt dem Prinzip "Keep it simple":

  • Keine Registrierung erforderlich: Sitter müssen kein Konto anlegen.
  • Passwortschutz: Jeder Plan ist durch ein einfaches Gruppen-Passwort geschützt.
  • Fokus auf das Wesentliche: Wer füttert an welchem Tag?

Features

  • 📅 Zentraler Kalender: Übersichtliche Darstellung des gesamten Zeitraums.
  • <EFBFBD> Titel-Personalisierung: Gib deinem Plan einen Namen (z.B. "Urlaub bei Lilly & Diego").
  • 🌍 Mehrsprachig: Volle Unterstützung für Deutsch und Englisch.
  • 🔔 Webhook-Integration: Erhalte sofort Benachrichtigungen via Discord oder Telegram bei neuen Buchungen, Absagen oder wenn ein Job erledigt wurde.
  • 🕒 Flexible Intervalle: Konfiguriere individuelle Intervalle für Fütterung und Reinigung (z.B. Fütterung alle 3 Tage bei Futterautomaten).
  • Erledigt-Bestätigung: Sitter können mit einem Klick bestätigen, wenn sie vor Ort waren du erhältst sofort eine Notification.
  • 📅 iCal-Export: Sitter können den Plan als Kalender-Abo (ICS) in ihr Handy integrieren.
  • 🏠 Besitzer-Status: Markiere Tage, an denen du noch (oder schon wieder) zu Hause bist.
  • 📝 Instruktionen: Hinterlege wichtige Infos (Futtermenge, Medikamente, Notfallnummern) direkt im Plan.

🚀 Bedienung

  1. Plan erstellen: Wähle deinen Reisezeitraum, die Intervalle für Futter & Klo, vergib einen Titel und ein Gruppen-Passwort.
  2. Link teilen: Schicke den Link und das Passwort an deine Sitter.
  3. Eintragen lassen: Sitter klicken einfach auf einen freien Tag, geben ihren Namen ein und bestätigen.
  4. Bestätigen lassen: Sobald der Sitter seine Aufgabe erledigt hat, klickt er im Dashboard auf "Job erledigt?".
  5. Informiert bleiben: Dank der Webhooks weißt du sofort, wenn ein Tag abgedeckt ist, jemand absagen musste oder die Katzen gerade versorgt wurden.

<EFBFBD> Technischer Stack

  • Framework: Next.js (App Router)
  • Datenbank: SQLite mit Prisma ORM
  • Styling: Tailwind CSS & Shadcn/UI
  • Benachrichtigungen: Universelle HTTP-Webhooks

🔔 Notification Setup (Discord/Telegram)

Um Alarme zu erhalten, konfiguriere einen Webhook in den Einstellungen deines Dashboards.

👾 Discord

  1. Gehe in deinem Discord-Server auf Servereinstellungen > Integrationen > Webhooks.
  2. Erstelle einen Neuen Webhook, kopiere die Webhook-URL.
  3. Füge diese URL in den Plan-Einstellungen ein.

✈️ Telegram

Am einfachsten via Intergram:

  1. Suche in Telegram nach @IntergramBot.
  2. Sende /start, um deine Chat ID zu erhalten.
  3. Webhook-URL: https://www.intergram.xyz/msg/DEINE_CHAT_ID


📲 Push Notifications (PWA)

Die App funktioniert als Progressive Web App (PWA) und unterstützt Push-Benachrichtigungen direkt auf dem Smartphone oder Desktop.

Setup für Selbsthoster (VAPID Keys)

Damit Push funktioniert, müssen VAPID Keys in der Umgebung hinterlegt werden.

  1. Generiere Keys: npx web-push generate-vapid-keys
  2. Setze die Environment Variables (z.B. in .env oder Docker):
# Public Key (Wird vom Browser benötigt)
NEXT_PUBLIC_VAPID_PUBLIC_KEY="<Dein Public Key>"

# Private Key (Bleibt auf dem Server!)
VAPID_PRIVATE_KEY="<Dein Private Key>"

# Kontakt-Email für den Push-Service
VAPID_SUBJECT="mailto:admin@example.com"

Der Benutzer kann Push-Benachrichtigungen dann direkt im Dashboard über die Einstellungen aktivieren.


🐳 Deployment (Docker)

1. Build & Run

Mit Docker Compose (empfohlen):

docker-compose up -d --build

Mit Docker CLI:

# Image bauen
docker build -t cat-sitting-planner .

# Container starten
# Container starten
docker run -d \
  --name cat-sitting-planner \
  -p 3000:3000 \
  -v /pfad/zum/host/data:/app/data \
  -v /pfad/zum/host/uploads:/app/public/uploads \
  --restart always \
  cat-sitting-planner

2. Datenpersistenz (Wichtig)

Die Daten liegen in /app/data/dev.db. Bilder werden in /app/public/uploads gespeichert. Mappe diese Ordner unbedingt auf lokale Volumes:

volumes:
  - /pfad/zum/host/data:/app/data
  - /pfad/zum/host/uploads:/app/public/uploads

🏥 System Status

Die App stellt einen einfachen Healthcheck-Endpoint bereit, der von Docker oder externen Monitoring-Tools genutzt werden kann:

  • Endpoint: /health
  • Method: GET
  • Response: 200 OK {"status":"ok"}

Erstellt mit ❤️ für alle Dosenöffner.

Description
No description provided
Readme 1.2 MiB
Languages
TypeScript 92.9%
CSS 3.6%
JavaScript 2.2%
Dockerfile 1.3%