Files
cat-sitting-planner/README.md

128 lines
4.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🐈 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.
- <20>**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.
---
## <20> Technischer Stack
- **Framework**: [Next.js](https://nextjs.org) (App Router)
- **Datenbank**: SQLite mit [Prisma ORM](https://www.prisma.io)
- **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):
```env
# 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):
```bash
docker-compose up -d --build
```
Mit **Docker CLI**:
```bash
# 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:
```yaml
volumes:
- /pfad/zum/host/data:/app/data
- /pfad/zum/host/uploads:/app/public/uploads
```
---
*Erstellt mit ❤️ für alle Dosenöffner.*