banyaro/PROJEKT.md

565 lines
24 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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.

# 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ärzOkt + 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*