565 lines
24 KiB
Markdown
565 lines
24 KiB
Markdown
# Ban Yaro — Die Hunde-Plattform
|
||
|
||
> "Ban-yaro" ist ein Jedi-Meister aus der Clone-Wars-Ära (Wookieepedia/Jedipedia).
|
||
> Der Name wurde von der Züchterin für einen Wurf vergeben — daher kein Namensrechts-Konflikt.
|
||
|
||
---
|
||
|
||
## Vision
|
||
|
||
Ban Yaro ist die erste deutschsprachige All-in-One Hunde-Plattform:
|
||
kein US-Konzern, kein App Store Zwang, DSGVO-konform, selbst gehostet.
|
||
|
||
**Kern-Versprechen:** "Alles rund um deinen Hund — von Welpe bis Opa."
|
||
|
||
---
|
||
|
||
## Zielgruppe
|
||
|
||
**Primär:** Deutschsprachige Hundebesitzer, 25-55 Jahre, smartphone-affin
|
||
**Sekundär:** Hundeschulen, Tierärzte, Züchter, lokale Shops
|
||
**Markt:** ~10 Mio. Hunde in Deutschland, ~34 Mio. in DACH
|
||
|
||
---
|
||
|
||
## Tech-Stack
|
||
|
||
Konsistent mit akku-werkstatt (bewährt, bekannt):
|
||
|
||
```
|
||
Backend: FastAPI + SQLite (WAL-Modus)
|
||
Frontend: Vanilla JS/HTML + CSS (PWA)
|
||
Auth: JWT (HttpOnly Cookie + Bearer Token)
|
||
Deploy: Docker auf Synology DS1621
|
||
Reverse: NPM (Nginx Proxy Manager)
|
||
Domain: banyaro.de (zu registrieren)
|
||
KI: LM Studio lokal + Claude API für komplexere Tasks
|
||
Push: Web Push API (pywebpush)
|
||
Maps: Leaflet.js + OpenStreetMap (kostenlos, kein Google-Lock)
|
||
```
|
||
|
||
### PWA-First Strategie
|
||
- Kein App Store nötig → sofort updatebar
|
||
- "Zum Homescreen hinzufügen" auf iOS und Android
|
||
- Offline-fähig via Service Worker
|
||
- Web Share Target: App empfängt Fotos/Links aus anderen Apps
|
||
|
||
---
|
||
|
||
## Implementierungsstand (aktuell: 2026-04-27, SW by-v449, APP_VER 428)
|
||
|
||
### Sprint 16 (2026-04-27) ✅
|
||
|
||
#### Landing Page — Hero-Rotation + Phone-Frame
|
||
- 9 rotierende Hero-Slides (alle 6s, Fade-Transition, Zähler "1 / 9")
|
||
- CSS-Phone-Frame mit echten App-Screenshots, synchron mit Hero-Text
|
||
- Statusleiste per `margin-top: -24px` + `overflow:hidden` abgeschnitten
|
||
- Alle Folgebilder beim Start vorgeladen, /img Static-Mount in main.py
|
||
- Screenshots JPEG-optimiert: 8MB → 2.5MB gesamt
|
||
- Kurze emotionale Headlines statt Spec-Sheet
|
||
- PWA-Slide: „Wie eine App. Nur ohne App Store."
|
||
- „Virtueller Trainer" statt „KI" (Training-Slide)
|
||
- „Und noch mehr"-Kacheln eingeklappt, Toggle mit Chevron
|
||
- UX: Dots → Zähler, Anmelden-Button Kontrast, Trust-Strip einzeilig
|
||
- Bug fix: `.wc-grid.wc-grid--collapsed` (CSS-Spezifität)
|
||
|
||
|
||
|
||
### Sprint 14 (2026-04-26) ✅
|
||
|
||
#### Karten-Scan (OSM) — Komplett repariert
|
||
- Diary-Karte lud Leaflet ohne MarkerCluster → `_loadLeaflet()` prüft Leaflet + MarkerCluster separat
|
||
- Overpass 406 = fehlender Referer-Header (nicht IP-Ban) → Header gesetzt → sofort wieder 200
|
||
- Prewarm-Job entfernt (23.500 Anfragen/Tag hatten IP geblockt), CACHE_DAYS 14 → 90
|
||
- Overpass Fallback-Liste: lz4.overpass-api.de primär, kumi.systems Fallback
|
||
- Rate-Limit: Semaphore(1), 2s Mindestabstand, User-Agent + Referer
|
||
- Background-Fetch: asyncio.create_task + _bg_tasks-Set (GC-sicher), _fetching-Set gegen Doppel-Requests
|
||
- Auto-Retry: max 3× (30/60/90s) wenn 0 Marker nach Scan
|
||
|
||
#### Design & Layout
|
||
- Welcome-Seite: Hero-Gradient, App-Icon-Grid (4-spaltig mobil, 8-spaltig Desktop), persönliche Begrüßung
|
||
- Desktop-Breiten vereinheitlicht: alle Bereiche auf 860px (Forum, Chat, Walks, Settings)
|
||
- Knigge: Padding auf Karten, Radfahrer-Icon (person-simple-bike)
|
||
- Forum-Pills: text-overflow:ellipsis auf Desktop und Mobile
|
||
|
||
#### iOS PWA / Service Worker
|
||
- reg.update() beim Start + visibilitychange → automatische SW-Updates ohne Home-Screen-Icon neu anlegen
|
||
- app.js/ui.js/api.js Network-First im SW → keine veralteten Versionen gecacht
|
||
- Website-Daten löschen war einmalig nötig, danach dauerhaft gelöst
|
||
|
||
#### Phosphor Icons — Großer Sweep
|
||
- 50+ neue Icons in den Sprite aufgenommen
|
||
- 10 Seiten von Emoji/Unicode auf Phosphor SVG umgestellt: poison, events, dog-profile, trainingsplaene, health, uebungen, admin, moderation, movies, social, wiki, erste-hilfe
|
||
- notes.js von ph-Font-Syntax auf SVG-Sprite migriert
|
||
|
||
#### Notizblock
|
||
- In pages-Objekt registriert (war vergessen → nicht erreichbar)
|
||
- ph-Font-Icons auf SVG-Sprite umgestellt
|
||
- 4 neue RUBRIKEN: trainingsplan, friends, poison, lost
|
||
- Filter-Chips 2-zeilig auf Desktop (flex-wrap)
|
||
- Datenschutz-Hinweis: "Alle Notizen sind privat"
|
||
- Neue Notiz-Buttons: Tagebuch-Detail, Trainingspläne, Freunde, Giftköder, Verlorener Hund
|
||
|
||
#### Sicherheit & Korrektheit
|
||
- Moderation: Admins für Moderatoren komplett unsichtbar (Backend-Filter + Frontend-Guard)
|
||
- Sitter-Zugriff: Tagebuch-Liste leer für Sitter (GET → []), Erstellen bleibt erlaubt
|
||
- Tagebuch: Datenschutz-Hinweis "nur du kannst sie sehen"
|
||
- KI Symptom-Check: JSON-Code-Fence stripping in ki.py, korrekte Formatierung + Phosphor-Icons
|
||
- Gewicht-Sync: health.js aktualisiert appState.activeDog.gewicht_kg auch bei Bearbeitung
|
||
|
||
## Implementierungsstand (aktuell: 2026-04-25, SW by-v405, APP_VER 385)
|
||
|
||
### Sprint 12+13 (2026-04-25) ✅
|
||
|
||
#### Tagebuch — Day-One-Redesign
|
||
- Listenansicht: Wochentag-Kürzel + große Tageszahl links, Titel fett, Textvorschau, Meta-Zeile (Zeit · Ort · Wetter), Thumbnail quadratisch rechts
|
||
- Vier Ansichten: Liste, Medien (3-Spalten-Mosaik), Kalender (mit Fotos auf Tagen), Karte (Leaflet alle GPS-Standorte)
|
||
- Kalender: Doppelpfeil-Sprungbuttons «/» zum nächsten Monat mit Einträgen
|
||
- Karten-Ansicht: Foto-Marker, Popup-Vorschau, Klick öffnet Eintrag direkt
|
||
- Detail-Ansicht: inline im Content-Bereich (nicht mehr als Fullscreen-Overlay), Sidebar bleibt sichtbar
|
||
- Detail: Hero-Foto (vollständig sichtbar, object-fit:contain), Thumbnails, 2-Spalten-Layout Desktop (Text + Karte/POI)
|
||
- Detail: Karte zeigt GPS-Position, POI-Liste darunter ("In der Nähe")
|
||
- Lightbox: Back-Button + Prev/Next in Bottom-Bar, Safe-Area für Querformat
|
||
- Stats-Leiste: Einträge/Medien/Tage (Gesamtzahlen vom Backend), View-Switcher, kompakt auf Mobile
|
||
- "Weitere laden" nur in Listenansicht sichtbar
|
||
|
||
#### Tagebuch — Daten & Import
|
||
- EXIF-GPS-Extraktion beim Foto-Upload (Pillow), auto-Wetter+POI bei GPS aus EXIF
|
||
- Wetter (Open-Meteo Archive-API historisch): 106 Einträge retroaktiv angereichert
|
||
- POIs (osm_pois DB-Cache, 437k Einträge): 85 Einträge retroaktiv angereichert
|
||
- NoteStation-Import Fix: Fotos in diary_media statt altem media_url-Feld
|
||
- Migration: 80 importierte media_url-Einträge in diary_media (94 statt 15 Medien für Ban Yaro)
|
||
- Neue API-Endpoints: /diary/stats, /diary/calendar, /diary/locations
|
||
|
||
#### Notiz-Feature
|
||
- Generische notes-Tabelle (parent_type + parent_id + meta_json)
|
||
- REST-API /api/notes mit GET/POST/PATCH/DELETE
|
||
- API.notes in api.js
|
||
- 📝-Button in: Übungen, Gesundheit, Tagebuch, Routen, Events, Gassi-Treffen, Sitting, Erste Hilfe
|
||
- Notizblock-Seite: Filter nach Rubrik, Suche, Sortierung, KI-Muster-Erkennung (abschaltbar)
|
||
- KI-Toggle in Einstellungen
|
||
|
||
#### Design & Icons
|
||
- fill:currentColor Fix für SVGs ohne ph-icon-Klasse (welcome.js, onboarding.js, friends.js)
|
||
- --c-icon CSS-Variable, --c-text-muted in Dark Mode aufgehellt (#9A8878)
|
||
- 15+ neue Phosphor-Icons: note-pencil, images, caret-left/right/double, coffee, bed, tree, church, etc.
|
||
- Phosphor-Workflow: fill-Variante aus lokaler Kopie /icons/phosphor-icons/SVGs/fill/
|
||
|
||
#### Infrastruktur
|
||
- CSS Network-First im Service Worker (kein iOS-Caching-Problem mehr)
|
||
- Cache-Control-Middleware: versioned URLs immutable, andere no-cache
|
||
- Python open(w)-vor-read Bug dokumentiert (leert Datei)
|
||
- Scheduler: Wiki-Anreicherungs-Jobs entfernt (abgeschlossen)
|
||
|
||
## Implementierungsstand (aktuell: 2026-04-25, SW by-v370, APP_VER 355)
|
||
|
||
### Sprint 11 (2026-04-25) ✅
|
||
|
||
#### KI & Admin
|
||
- Claude Sonnet statt Opus: `claude-sonnet-4-6` als Default (günstiger)
|
||
- Admin KI-Stats: Cloud/Local/Luna getrennt in `ki_daily_calls.source`
|
||
- Admin: Kachel „Fotos freizugeben" (pending_fotos) in Übersicht
|
||
- Admin: Neuer Tab „Social Media" — Manager-Übersicht, Plattform-Balken, Monats-Timeline, Post-Tabelle mit Links
|
||
|
||
#### Moderation
|
||
- Neues Panel `/moderation` (nur Mods + Admins), Auge-Icon in Sidebar
|
||
- Foto-Freigabe repariert (Bug: rasse_slug statt rasse_id im JOIN — stiller Fehler)
|
||
- PATCH-Endpoint delegiert an wiki.review_submission() (keine doppelte Logik)
|
||
- Bildrechte-Bestätigung: Pflicht-Checkbox beim Foto-Einreichen, `rights_confirmed` in DB + Badge im Mod-Panel
|
||
|
||
#### Wiki & Fotos
|
||
- Breed-Enricher: 70 übersprungene Rassen (ki_enriched=2) → verbesserte Wikipedia-Suche (Aliasse, opensearch, kürzerer Threshold) → 97,6% (979/1003)
|
||
- Wiki: `sehr_gross`-Pill CSS-Klasse ergänzt (fehlte komplett)
|
||
- Wiki: Placeholder-Icon auf Phosphor `dog` umgestellt (Custom-SVG war unförmig)
|
||
- Wiki Foto-System: Gallery-Flow (Original foto_url bleibt, approved Submissions → `/media/breeds/gallery/`)
|
||
- Community-Fotos: Galerie-Ansicht im Detail, horizontaler Scroll mit Thumbnails
|
||
- Wiki-Fotos Badge-Kategorie in Achievements (📸 Bronze/Silber/Gold)
|
||
- fetch_wiki_images.py: Commons File-Suche entfernt (zu viele Falsch-Positive), 819/1003 Rassen mit Foto (81%)
|
||
|
||
#### Pflege & Tagebuch
|
||
- Pflege: `fell_pflege_art` — Schneiden vs. Trimmen unterscheiden, Badge im Hundeprofil
|
||
- Tagebuch: Fotos/Videos-Button direkt nach Textfeld (war ganz unten)
|
||
|
||
#### Social Media Manager
|
||
- Vorschläge zurückstellen: „📌 Merken"-Button speichert als `status='idea'` in DB
|
||
- Post-Link nachträglich eintragen: „+ Link eintragen" für published Posts ohne URL
|
||
- Quick-Post: saubere Modal-Form statt `prompt()`
|
||
- Backend: `POST /api/social/ideas/save`
|
||
|
||
#### UI & UX
|
||
- Registrierung: Hundepassphrase-Generator (🐾 3 Wörter + Zahl, 60+ Hundewörter)
|
||
- Social Media: modernes Design (Cards, Pill-Buttons, Shadows)
|
||
|
||
#### SEO & Doku
|
||
- landing.html + llms.txt: Stand 2026-04-25, nicht-implementierte Features entfernt, neue Features ergänzt (Pflege-System, Lober, Zecken-Warnung, 1003 Rassen Wikipedia-grounded)
|
||
|
||
## Implementierungsstand (aktuell: 2026-04-24, SW by-v356, APP_VER 343)
|
||
|
||
### Fertig implementiert ✅
|
||
|
||
#### Sicherheit (2026-04-23)
|
||
- JWT_SECRET Pflicht-Check, Rate-Limits (Login/Register/KI/Giftköder/Wiki)
|
||
- Honeypot, robots.txt-Härtung, Wasserzeichen in KI-Texten
|
||
- OG-Tag XSS, File-Upload-Limit, Path-Traversal-Schutz, Magic-Byte-Check
|
||
- Port 5001 (DSM Admin) aus Internet entfernt, nur noch via WireGuard
|
||
- Fail2ban auf NPM-Ebene (Scanner/404/Auth)
|
||
|
||
#### Desktop Multi-Column Layout (≥1024px)
|
||
- page-container: 680px → 860px global
|
||
- Walks: Liste (340px) links + Karte rechts nebeneinander, View-Toggle ausgeblendet
|
||
- Forum: Rubriken in 2 Zeilen (CSS Grid, ceil(n/2) Spalten, zentriert, minmax(0,1fr))
|
||
- Welcome: max-width 920px, Feature-Sections 2-spaltig (.welcome-sections grid)
|
||
- Gesundheit, Admin, Karte-Legende: Tab-/Legende-Grid 2 Zeilen (gleiche CSS-Grid-Technik)
|
||
- Hinweis: layout.css lädt vor components.css → ID-Selektor (#page-forum, #page-health, #page-admin, #page-map) nötig für Spezifität
|
||
|
||
#### Social Media Manager (2026-04-24)
|
||
- Neue Rolle `is_social_media` — eigene Seite `/social`
|
||
- Luna KI-Coach: Themen-Vorschläge, Fortschrittsbalken, rotierende Nachrichten
|
||
- **Rasse des Tages**: 1003 Wiki-Rassen = 2,75 Jahre täglicher Content mit Bild
|
||
- **🎾 Trainingstipp**: 104 Übungen in 7 Kategorien, 3 Stil-Varianten
|
||
- **🛁 Pflegetipp**: 43 Tipps rassenspezifisch, auch für normale User im Hundeprofil
|
||
- Diversitäts-Check (Warnung wenn Kategorie >40% dominiert)
|
||
- Post-Bestätigung mit Datum + URL, Ausstehend-Banner
|
||
- Medien-Upload (Kamera/Mediathek/Dateien), Instagram-Vorschau
|
||
- XP/Level-System (Rookie → 👑 Star)
|
||
- Admin: Social-Tracking (published/scheduled/ideas + letzte 10 Posts)
|
||
|
||
#### Pflege-System (2026-04-24)
|
||
- `pflege_tipps` DB-Tabelle: 43 Tipps in 10 Kategorien (Fell, Krallen, Zähne, Ohren, Augen, Pfoten, Parasiten, Saisonal, Gesundheitsvorsorge, Welpen-Pflege)
|
||
- Hundeprofil: 🛁 Pflegetipps — Tipp des Tages (saisonal) + vollständige Kategorieliste
|
||
- Rassen-Autocomplete im Hundeprofil mit Wiki-Match-Badge
|
||
- `dogs.rasse_id` FK → `wiki_rassen` für präzise Filterung
|
||
|
||
#### Breed-Enricher Wikipedia-grounded (2026-04-24)
|
||
- Korrektheit 2.3→~4.5 durch Wikipedia-Quelltext als Basis
|
||
- Claude Haiku extrahiert Fakten aus Wikipedia-Text (de/en Fallback)
|
||
- `ki_source` ('wikipedia_de/en'/'none'), `ki_model` getrackt
|
||
- LLM-as-Judge Evaluator im Admin, Gemma-Reset-Button
|
||
- 1003 Rassen, limit=2000 (ein Rutsch)
|
||
- LM Studio: Mac 10.47.11.70:11435, Modell gemma-4-31b-it
|
||
|
||
#### Infrastruktur
|
||
- SSH-Port DS1621: 4711 (geändert von 22, 2026-04-24)
|
||
|
||
#### Wetter & Umwelt-Alerts
|
||
- GET /api/weather?lat=&lon= (Open-Meteo, 30-min TTL-Cache, kein API-Key)
|
||
- Zecken-Warnung regelbasiert: März–Okt + Temp > 7°C (niedrig/mittel/hoch)
|
||
- Wetterchip in Statusleiste: ☀ 9° Klar · 💧 0% · [Zecken-SVG-Icon]
|
||
- Zecken-Icon: custom SVG (Phosphor-Stil, großer Körper, 4 Beinpaare)
|
||
|
||
#### Badge-System (Header)
|
||
- Avatar-Icon (oben rechts): roter Punkt bei persönlichen Mitteilungen (Chat, Freunde, Trainer, Sitting)
|
||
- Burger-Icon: roter Punkt bei Giftköder/Verlorener Hund in der Nähe (via Geo-Alert-Check)
|
||
- Nur Punkte, keine Zahlen — "Aktuelles" aus Sidebar entfernt
|
||
- Backend: GET /api/notifications/badge → {personal, general}
|
||
|
||
#### Giftköder-System
|
||
- Push-Notification nur im 30km-Radius (statt send_push_to_all)
|
||
- Standort-Tracking: push_subscriptions.last_lat/lon, aktualisiert beim Alerts-Check
|
||
- Alert-Linie (Bottom-Nav): 4px, stärkerer Glow, 1.6s Puls
|
||
- Nach Erledigen: Alert-Linie sofort weg (App.checkNearbyAlerts() nach resolve)
|
||
- Karte und Liste refreshen sofort nach neuer Meldung
|
||
|
||
#### Routen-Validierung (Anti-Cheat)
|
||
- is_valid Flag auf routes-Tabelle (DEFAULT 1)
|
||
- Durchschnittsgeschwindigkeit > 15 km/h → is_valid = 0
|
||
- Stats, Trophäen, Leaderboard filtern auf is_valid = 1
|
||
- Route wird trotzdem gespeichert; User bekommt neutralen Hinweis-Toast
|
||
|
||
#### SEO & Auffindbarkeit
|
||
- `robots.txt`, `llms.txt` (für KI-Crawler), dynamische `sitemap.xml`
|
||
- Server-gerenderte Seiten (für Google/Crawler): `/info`, `/wiki/rassen`, `/wiki/rasse/{slug}`, `/knigge`
|
||
- Open Graph + Twitter Card + JSON-LD in index.html
|
||
- Breadcrumb-Structured-Data auf Rassen-Seiten
|
||
- Google Search Console eingerichtet, 508 Seiten indexiert
|
||
|
||
#### Navigation
|
||
- Bottom-Nav: Karte · Routen · + · Tagebuch · Forum
|
||
- Sidebar: Mein Hund (Tagebuch, Gesundheit, Übungen, Pläne) / Entdecken / Soziales / Community / Wissen (immer sichtbar, nicht mehr collapsible)
|
||
- Welcome-Seite und Landing-Page auf gleiche 5-Gruppen-Struktur abgestimmt
|
||
|
||
#### Wiki-Rassen
|
||
- 500+ Rassen aus Wikidata/TheDogAPI
|
||
- KI-Anreicherung via Claude API: Charakter, Vorkommen DE, technische Daten (Scheduler: 02:30 täglich, 20 Rassen)
|
||
- "So einen hab ich" / "Interessiert mich" Community-Feature
|
||
- Züchter-Verzeichnis (community-basiert, mit Moderation)
|
||
- SSR-Detailseiten mit OG-Tags für jede Rasse
|
||
|
||
#### Training
|
||
- Session-Logging: Wiederholungen, Erfolgsquote (0-100%), Hundestimmung, Zufriedenheit (1-5)
|
||
- Automatischer Tagebucheintrag bei Top-Training (≥80% + ≥4★)
|
||
- Virtueller KI-Trainer: analysiert letzte 20 Sessions, 6h-gecacht
|
||
- Trainingskalender (Habit-Tracker-Style, aktueller + letzter Monat)
|
||
- Gamification ohne Druck: Badges, Stats-Banner, nur vorwärts zählende Streaks
|
||
- Stats-API: Gesamteinheiten, Ø Erfolg, Streak, beste Übung
|
||
|
||
#### Fortschritts-Lober
|
||
- Jeden Montag 09:00: Claude API schreibt 2-3 Sätze Lob für die Vorwoche
|
||
- Basiert auf: Tagebuch, Training, Gesundheitseinträge, Wochen-Gesamtzahl
|
||
- Nur Lob, kein Rat, kein Druck — spricht über den Hund, nicht den Besitzer
|
||
- Push-Notification + Karte im Tagebuch (dezent, wegklickbar)
|
||
|
||
#### Hintergrund-Scheduler
|
||
- Gesundheits-Reminder (08:00)
|
||
- Giftköder-Archiv (03:00)
|
||
- Wetter-Alert (07:30)
|
||
- Meilenstein-Check (00:05)
|
||
- Event-Import VDH (So 02:00)
|
||
- Wiki KI-Anreicherung (02:30 täglich + Startup)
|
||
- Wöchentlicher Lober (Mo 09:00)
|
||
- 4× täglicher Status-Report per Mail (07:00 / 13:00 / 19:00 / 01:00)
|
||
|
||
---
|
||
|
||
## Feature-Roadmap
|
||
|
||
### Phase 1 — MVP (Version 1.0)
|
||
*Ziel: Echter Nutzen ohne Community-Masse. Funktioniert auch für einen einzelnen Nutzer.*
|
||
|
||
#### 1.1 Hunde-Profil & Tagebuch (Herzstück)
|
||
- [ ] Hunde-Profil anlegen (Name, Rasse, Geburtstag, Foto, Chip-Nr.)
|
||
- [ ] Tagebuch: Einträge mit Foto, Text, Datum, GPS-Ort (optional)
|
||
- [ ] Milestone-Karten automatisch ("Ban Yaro ist heute 1 Jahr alt!")
|
||
- [ ] Jahresrückblick-Generator (Premium)
|
||
- [ ] PDF/Printbook-Export (Premium)
|
||
- [ ] Öffentliches Profil optional (banyaro.de/hund/name)
|
||
|
||
#### 1.2 Gesundheit & Impfpass
|
||
- [ ] Impfungen, Entwurmungen, Tierarztbesuche digital
|
||
- [ ] Medikamenten-Reminder (Push Notification)
|
||
- [x] Gewichtsverlauf-Chart ✅
|
||
- [ ] Einfacher Symptom-Checker (KI-gestützt, Triage: beobachten/Tierarzt/Notfall)
|
||
|
||
#### 1.3 Giftköder-Alarm
|
||
- [ ] Fundort melden (GPS + Foto + Beschreibung)
|
||
- [ ] Push Notification für alle Nutzer im konfigurierbaren Radius
|
||
- [ ] Karte mit aktiven Meldungen (OpenStreetMap/Leaflet)
|
||
- [ ] Ablaufdatum (7 Tage ohne Bestätigung → automatisch inaktiv)
|
||
- [ ] Bestätigungs- und Moderationssystem
|
||
- [ ] Statistiken (Hotspots, saisonale Muster)
|
||
|
||
#### 1.4 Wetter-Alert
|
||
- [ ] Täglicher Push wenn Asphalt-Temperatur kritisch (>40°C)
|
||
- [ ] Pollenflug-Alert (für allergische Hunde)
|
||
- [ ] Gewitterwarnung mit Tipps für angstvolle Hunde
|
||
- [ ] Datenquelle: Open-Meteo API (kostenlos)
|
||
|
||
#### 1.5 NFC-Halsband-Tag
|
||
- [ ] Hunde-Profil als öffentliche URL (ohne Login sichtbar)
|
||
- [ ] Notfallkontakte ohne Nummer preiszugeben (vermittelt via App)
|
||
- [ ] "Ich habe diesen Hund gefunden" Button → Owner bekommt Push + Finder-Standort
|
||
- [ ] NFC-Tags als physisches Produkt anbieten (Shop-Integration, erste Monetarisierung)
|
||
|
||
---
|
||
|
||
### Phase 2 — Community (Version 2.0)
|
||
*Ziel: Netzwerkeffekte aufbauen. Features die besser werden je mehr Nutzer dabei sind.*
|
||
|
||
#### 2.1 Gassi-Community
|
||
- [ ] Gassi-Treffen erstellen (Ort, Zeit, Hunde willkommen)
|
||
- [ ] Live-Standort teilen während Spaziergang (opt-in)
|
||
- [ ] Gassi-Route aufzeichnen (GPS-Track)
|
||
- [ ] Routen bewerten (Untergrund, Schatten, Leinenpflicht, Sicherheit)
|
||
- [ ] Routen filtern (Dauer, Schwierigkeit, hundefreundlich)
|
||
|
||
#### 2.2 Verlorener Hund
|
||
- [ ] Alert mit Foto + letzter GPS-Position
|
||
- [ ] Alle Nutzer im Radius alarmieren
|
||
- [ ] KI-Foto-Abgleich (ist das derselbe Hund?)
|
||
- [ ] Automatische Meldung an Tierheime in der Region
|
||
- [ ] "Held des Tages" Badge für erfolgreiche Finder
|
||
|
||
#### 2.3 Hundesitting-Netzwerk
|
||
- [ ] Sitter-Profil (Erfahrung, eigene Hunde, Kapazität)
|
||
- [ ] Buchungsanfragen + Kalender
|
||
- [ ] Bewertungen + verifizierte Buchungen
|
||
- [ ] Provision: 8% (vs. 20% bei Rover/Pawshake)
|
||
- [ ] Notfall-Netzwerk: Vertrauenspersonen definieren
|
||
|
||
#### 2.4 Forum
|
||
- [ ] Rassen-basierte Sub-Foren
|
||
- [ ] Lokale Boards (PLZ-basiert)
|
||
- [ ] KI-Zusammenfassung langer Threads
|
||
- [ ] Experten-Badge (Tierarzt, Trainer verifiziert)
|
||
- [ ] "Ähnliche Fragen" (KI-Duplikat-Erkennung)
|
||
|
||
#### 2.5 Hundefreundliche Orte
|
||
- [ ] Crowd-sourced Datenbank (differenziert: darf rein? Wasser? Leine?)
|
||
- [ ] Foto vom Eingangsbereich
|
||
- [ ] "War mit großem Hund da" spezifische Bewertungen
|
||
- [ ] Negativbewertungen möglich ("Schild sagt ja, Personal sagt nein")
|
||
|
||
---
|
||
|
||
### Phase 3 — Wissen & Content (Version 2.5)
|
||
*Ziel: SEO-Traffic, Nutzerbindung auch ohne aktive Community-Nutzung*
|
||
|
||
#### 3.1 Hunde-Wiki
|
||
- [ ] Rassen-Datenbank (Charakter, Gesundheit, Pflege)
|
||
- [ ] "Passt diese Rasse zu mir?" Quiz
|
||
- [ ] Gesundheits-Wiki (Zecken mit RKI-Risikogebiete-Karte, Vergiftungen, Erste Hilfe)
|
||
- [ ] Recht & Regeln (Leinenpflicht, Rasselisten, Hundsteuer je Bundesland)
|
||
- [ ] Community-Erfahrungsberichte je Rasse
|
||
- [ ] Züchter-Verzeichnis (VDH-verifiziert)
|
||
|
||
#### 3.2 Hunde-Knigge
|
||
- [ ] Begegnungen (fremder Hund, Kinder, Radfahrer)
|
||
- [ ] Öffentliche Orte (ÖPNV-Regeln je Stadt)
|
||
- [ ] "Was wäre richtig?" Community-Szenarien mit Abstimmung
|
||
- [ ] KI-Situationsberater
|
||
- [ ] Haftpflicht-Ratgeber (Verbindung zu Versicherungspartner)
|
||
|
||
#### 3.3 Events & Kultur
|
||
- [ ] Agility-Turniere, Hundeausstellungen (VDH-Kalender scrapen)
|
||
- [ ] Hundefilme (Datenbank + "Stirbt der Hund?" Rubrik)
|
||
- [ ] Hundeberühmtheiten (historisch + Instagram/TikTok)
|
||
- [ ] "Hund des Monats" Community-Voting
|
||
|
||
---
|
||
|
||
### Phase 4 — Smart Features (Version 3.0)
|
||
*Ziel: Premium-Differenzierung, Daten-Netzwerk-Effekte*
|
||
|
||
#### 4.1 Futter-Intelligence
|
||
- [ ] Barcode-Scanner → Inhaltsstoffe gegen Hunde-Profil prüfen
|
||
- [ ] Personalisiertes Rating (Rasse, Alter, Allergien)
|
||
- [ ] Preis-Tracking (Zooplus, Fressnapf, Zooroyal)
|
||
- [ ] Preisalarm via Push
|
||
- [ ] Nachhaltigkeits-Score
|
||
- [ ] Sammelbestellung (Gruppe kauft zusammen → Mengenrabatt)
|
||
|
||
#### 4.2 Smart Collar Integration
|
||
- [ ] Tractive API → GPS-Tracks in Ban Yaro einlesen
|
||
- [ ] Fi Collar Integration
|
||
- [ ] Automatisch: Route → Tagebuch
|
||
- [ ] Geofence-Alarm → Notfall-Netzwerk aktivieren
|
||
|
||
#### 4.3 EU-Reisepass
|
||
- [ ] Einreiseregeln je Land (automatisch aktuell gehalten)
|
||
- [ ] Checkliste für eigenen Hund ("Was brauche ich für Spanien?")
|
||
- [ ] Zeitplan mit Tierarzt-Reminder
|
||
- [ ] PDF-Export
|
||
|
||
#### 4.4 Erziehungs-KI
|
||
- [ ] Tägliches Trainings-Tagebuch (30-Sekunden-Eintrag)
|
||
- [ ] Muster-Erkennung über Zeit ("Du trainierst erfolgreich morgens")
|
||
- [ ] Vergleich mit anderen Hunden gleicher Rasse (anonym)
|
||
- [ ] Automatischer Trainingsplan
|
||
|
||
---
|
||
|
||
## Monetarisierung
|
||
|
||
```
|
||
FREEMIUM-MODELL:
|
||
|
||
Kostenlos (immer):
|
||
- Hunde-Profil (max. 1 Hund)
|
||
- Giftköder-Alarm
|
||
- Verlorener Hund
|
||
- Wiki & Knigge
|
||
- Forum
|
||
- Grundfunktionen Tagebuch
|
||
|
||
Premium — "Ban Yaro Plus" ~4,99€/Monat:
|
||
- Unbegrenzte Hunde-Profile
|
||
- Tagebuch PDF/Printbook-Export
|
||
- Jahresrückblick
|
||
- Symptom-Checker unlimitiert
|
||
- Preisalarm (unbegrenzt viele Produkte)
|
||
- Futter-Barcode Scanner
|
||
- Smart Collar Integration
|
||
- EU-Reisepass Checkliste
|
||
- Erziehungs-KI
|
||
|
||
Provisions-Modell:
|
||
- Hundesitting: 8% Provision (vs. 20% Rover)
|
||
|
||
Physische Produkte:
|
||
- NFC-Halsband-Tags: ~6€ Stück (Marge ~70%)
|
||
- Jahresrückblick als gedrucktes Fotobuch (Partnerschaft)
|
||
|
||
Partner-Modell (später):
|
||
- Hundeschulen-Verzeichnis (verifizierter Badge)
|
||
- Tierarzt-Telemedizin Weiterleitung (Affiliate)
|
||
- Versicherungspartner (Haftpflicht-Ratgeber → Lead)
|
||
```
|
||
|
||
---
|
||
|
||
## Go-to-Market
|
||
|
||
### Launch-Strategie
|
||
1. **Soft Launch** mit Giftköder-Alarm allein → viral in Hundebesitzer-Facebook-Gruppen
|
||
2. **Ban Yaro** (der echte Hund) als Maskottchen / erster Tagebuch-Eintrag
|
||
3. **Hundetrainer und Tierärzte** als Multiplikatoren (Experten-Badge)
|
||
4. **VDH-Vereinskooperation** für Event-Kalender → Backlinks + Traffic
|
||
5. **TikTok/Instagram** mit "Stirbt der Hund?" Film-Rubrik → virales Potential
|
||
|
||
### SEO-Angriffspunkte
|
||
- "Giftköder [Stadt]" — stark lokaler Suchbegriff, hohe Emotion
|
||
- "Hundefreundliche Restaurants [Stadt]"
|
||
- "[Rasse] Erziehungstipps"
|
||
- "Hund nach [Land] reisen"
|
||
|
||
---
|
||
|
||
## Technische Architektur (Detail)
|
||
|
||
```
|
||
ban-yaro/
|
||
├── backend/
|
||
│ ├── main.py # FastAPI App
|
||
│ ├── models.py # SQLite Datenbankmodelle
|
||
│ ├── auth.py # JWT Auth
|
||
│ ├── push.py # Web Push (pywebpush)
|
||
│ ├── maps.py # Leaflet/OSM Helpers
|
||
│ ├── ki.py # KI-Integration (lokal + Claude)
|
||
│ ├── scraper/
|
||
│ │ ├── weather.py # Open-Meteo API
|
||
│ │ ├── events.py # VDH Turnierkalender
|
||
│ │ └── prices.py # Futter-Preise (Phase 4)
|
||
│ └── static/
|
||
│ ├── index.html # SPA Shell
|
||
│ ├── manifest.json # PWA Manifest
|
||
│ ├── sw.js # Service Worker
|
||
│ ├── shared.css # Design System
|
||
│ └── pages/ # HTML-Seiten je Feature
|
||
│
|
||
├── docker-compose.yml
|
||
├── Dockerfile
|
||
└── PROJEKT.md # Diese Datei
|
||
```
|
||
|
||
### Datenbank-Kernmodelle
|
||
```
|
||
users → id, email, pw_hash, rolle, push_sub, created_at
|
||
dogs → id, user_id, name, rasse, geburtsdatum, chip_nr, foto
|
||
tagebuch → id, dog_id, datum, text, foto, gps_lat, gps_lon, typ
|
||
gesundheit → id, dog_id, typ, datum, naechstes_datum, notiz
|
||
giftkoedar → id, user_id, lat, lon, foto, beschreibung, bestaetigt, expires_at
|
||
routen → id, user_id, gps_track (JSON), bewertung, tags
|
||
events → id, titel, datum, ort_lat, ort_lon, typ, quelle
|
||
orte → id, name, lat, lon, typ, hund_erlaubt, bewertung
|
||
forum_posts → id, user_id, dog_id, thread_id, text, created_at
|
||
```
|
||
|
||
---
|
||
|
||
## Nächste Schritte
|
||
|
||
- [x] Domain banyaro.de registriert ✓
|
||
- [x] Domain banyaro.app registriert ✓
|
||
(banyaro.com = japanisches Rhythm-Game "バンドやろうぜ!", kein Konflikt)
|
||
Strategie: banyaro.app = primäre Domain, banyaro.de → Redirect auf .app
|
||
- [x] Forgejo-Repo angelegt ✓
|
||
SSH: ssh://git@dsm.motocamp.de:2222/rene/banyaro.git
|
||
HTTPS: https://git.motocamp.de/rene/banyaro.git
|
||
- [ ] Docker-Grundstruktur aufsetzen (wie akku-werkstatt)
|
||
- [ ] Phase 1 Feature 1.1 beginnen: Hunde-Profil + Tagebuch
|
||
- [ ] Design-System definieren (Farben, Fonts — Hunde-Feeling aber modern)
|
||
|
||
---
|
||
|
||
*Erstellt: 2026-04-12*
|
||
*Stack: FastAPI + SQLite + Vanilla PWA, Deploy auf DS1621*
|