banyaro/PROJEKT.md

24 KiB
Raw Blame History

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)
  • 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

  • Domain banyaro.de registriert ✓
  • Domain banyaro.app registriert ✓ (banyaro.com = japanisches Rhythm-Game "バンドやろうぜ!", kein Konflikt) Strategie: banyaro.app = primäre Domain, banyaro.de → Redirect auf .app
  • 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