Compare commits

...

3 commits

8 changed files with 81 additions and 21 deletions

View file

@ -2,7 +2,7 @@
**Single Source of Truth fürs Marketing.** Vor jeder Aktion hier prüfen, danach updaten — so wird nichts doppelt gemacht, vergessen oder übersehen. Pflege: René + Claude.
_Stand: 2026-06-03_
_Stand: 2026-06-09_
> Diese Datei = Planung & Checkliste. Für **Live-Daten** (User-Meilenstein, Kanal-Tracking) lohnt zusätzlich ein Marketing-Tab im **Admin-Bereich** — siehe „Ausbau" unten.
@ -20,7 +20,7 @@ _Stand: 2026-06-03_
| Verzeichnisse / Listings | ⬜ offen | Product Hunt, PWA-Dirs, Google Business EBE |
| SEO / KI-Auffindbarkeit | 🟡 technisch optimiert | Backlinks (Blog-Testberichte) |
| Landing Page | 🟡 Redesign-Briefing da | 3 Einstiege, Outcomes statt Features |
| App Store (iOS) | 🟢 in Review (1.0 (3), 03.06.) | Freigabe abwarten |
| App Store (iOS) | 🟢 **LIVE im App Store** (09.06., Apple-ID 6775012705) | Landing bewirbt „Ban Yaro Go" (Hero + iOS-Abschnitt `#ios-app`) + Profil-Hinweis (Settings → App installieren). Offizielles „Laden im App Store"-Badge nachgebaut als `/img/appstore-badge-de.svg` (brauner Rand #C4843A). **Auf STAGING live (v1275)** — Produktion (`make deploy`) erst auf Renés Go |
| Play Store (Android) | 🔴 ON HOLD | 12 Closed-Tester / 14 Tage fehlen |
| Merch / NFC-Halsband | 💡 recherchiert | 20 Tags für Beta (~33 €) |
@ -28,7 +28,7 @@ Legende: 🟢 läuft/erledigt · 🟡 angefangen · ⬜ offen · 💡 Idee ·
## ⏳ Gates / Trigger (nicht zu früh starten)
- **Influencer & Presse Runde 3** erst ab **~50 aktiven Usern** — vorher zu früh (Großredaktionen fragen zuerst nach Zahlen). → Bei jeder Session aktuelle User-Zahl checken.
- iOS-App ist nativ gebaut & in Review**überholt** die alte „iOS erst ab 10k via Rork/PWABuilder"-Strategie.
- iOS-App ist nativ gebaut & **live im App Store****überholt** die alte „iOS erst ab 10k via Rork/PWABuilder"-Strategie. Web→App-Bewerbung ist erlaubt (anders als App→Web, das Apple wegen Abo-Steering nach 3.1.1 abgelehnt hatte).
## 📋 Backlog (konkret als Nächstes)
- [ ] **Flyer lokal verteilen (Ebersberg)** — Tierärzte (Wartezimmer), Hundeschulen/Welpengruppen, Futterläden, Hundesalons, Tierheim, Hundewiesen-Aushänge, hundefreundliche Cafés. Persönlich erklären; Aufhänger: Giftköder-Radar + „Daten in Deutschland". **Lokal bündeln, nicht streuen** (Community-Dichte für Gassi-Treffen/Giftköder).
@ -40,7 +40,8 @@ Legende: 🟢 läuft/erledigt · 🟡 angefangen · ⬜ offen · 💡 Idee ·
## ✅ Erledigt
- [x] 1000 Flyer A5 (zweiseitig) gedruckt — 03.06.2026
- [x] iOS-App nativ gebaut + eingereicht (1.0 (3), in Review) — Details im Repo `banyaro-ios`
- [x] iOS-App nativ gebaut + **im App Store freigegeben** (Ban Yaro Go, 09.06.) — Details im Repo `banyaro-ios`
- [x] Landing-Promotion für „Ban Yaro Go" gebaut (Hero-Badge + iOS-Abschnitt) — 09.06., develop (URL-Platzhalter offen)
- [x] Influencer-Outreach Runde 1 (5) + Runde 2 (13) — Mai 2026
- [x] SEO-Grundlagen (llms.txt, Landing About-Section)

View file

@ -1 +1 @@
1273
1276

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 340 100" role="img" aria-label="Laden im App Store">
<rect x="2.5" y="2.5" width="335" height="95" rx="17" fill="#000000" stroke="#C4843A" stroke-width="2.5"/>
<path transform="translate(38,22) scale(0.057)" fill="#FFFFFF" d="M788.1 340.9c-5.8 4.5-108.2 62.2-108.2 190.5 0 148.4 130.3 200.9 134.2 202.2-.6 3.2-20.7 71.9-68.7 141.9-42.8 61.6-87.5 123.1-155.5 123.1s-85.5-39.5-164-39.5c-76.5 0-103.7 40.8-165.2 40.8s-104.4-57-154.3-127C46.7 790.8 0 663.3 0 542.4c0-194 126.1-296.9 250.2-296.9 65.9 0 120.8 43.3 162.2 43.3 39.4 0 100.8-45.9 175.8-45.9 28.4 0 130.8 2.6 197.9 99.1zM554.1 159.4c31-36.8 52.9-87.9 52.9-139 0-7.1-.6-14.3-1.9-20.1-50.4 1.9-110.4 33.6-146.6 75.6-28.4 32.3-54.9 83.4-54.9 135.2 0 7.8 1.3 15.6 1.9 18.1 3.2.6 8.4 1.3 13.6 1.3 45.2 0 102.1-30.3 135.1-71.1z"/>
<text x="105" y="40" fill="#FFFFFF" font-family="-apple-system,BlinkMacSystemFont,'Helvetica Neue',Helvetica,Arial,sans-serif" font-size="20" font-weight="400">Laden im</text>
<text x="103" y="83" fill="#FFFFFF" font-family="-apple-system,BlinkMacSystemFont,'Helvetica Neue',Helvetica,Arial,sans-serif" font-size="43" font-weight="500" letter-spacing="-1">App Store</text>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -86,14 +86,14 @@
<title>Ban Yaro</title>
<!-- Theme + theme-color Statusleiste vor CSS setzen -->
<script src="/js/boot-early.js?v=1273"></script>
<script src="/js/boot-early.js?v=1276"></script>
<!-- CSS: Reihenfolge ist wichtig — ?v= zwingt Browser zur Neuladung -->
<link rel="stylesheet" href="/css/design-system.css?v=1273">
<link rel="stylesheet" href="/css/layout.css?v=1273">
<link rel="stylesheet" href="/css/components.css?v=1273">
<link rel="stylesheet" href="/css/utilities.css?v=1273">
<link rel="stylesheet" href="/css/lists.css?v=1273">
<link rel="stylesheet" href="/css/design-system.css?v=1276">
<link rel="stylesheet" href="/css/layout.css?v=1276">
<link rel="stylesheet" href="/css/components.css?v=1276">
<link rel="stylesheet" href="/css/utilities.css?v=1276">
<link rel="stylesheet" href="/css/lists.css?v=1276">
</head>
<body>
@ -620,11 +620,11 @@
<div id="modal-container"></div>
<!-- JS: Reihenfolge ist wichtig — erst Basis, dann Features -->
<script src="/js/api.js?v=1273"></script>
<script src="/js/ui.js?v=1273"></script>
<script src="/js/app.js?v=1273"></script>
<script src="/js/worlds.js?v=1273"></script>
<script src="/js/offline-indicator.js?v=1273"></script>
<script src="/js/api.js?v=1276"></script>
<script src="/js/ui.js?v=1276"></script>
<script src="/js/app.js?v=1276"></script>
<script src="/js/worlds.js?v=1276"></script>
<script src="/js/offline-indicator.js?v=1276"></script>
<!-- Feature-Seiten werden lazy geladen -->
@ -634,7 +634,7 @@
<!-- Boot: Offline-Banner + SW-Registration (extrahiert für CSP) -->
<script src="/js/boot.js?v=1273"></script>
<script src="/js/boot.js?v=1276"></script>
</body>

View file

@ -3,7 +3,7 @@
Router, State-Management, Navigation, Initialisierung.
============================================================ */
const APP_VER = '1273'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
const APP_VER = '1276'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
const APP_VERSION = '1.6.0'; // ← semantische Version, wird bei make release gesetzt
window.APP_VER = APP_VER; // global verfügbar für andere Module (z.B. offline-indicator)
window.APP_VERSION = APP_VERSION;

View file

@ -900,6 +900,14 @@ window.Page_settings = (() => {
<span>Installations-Anleitung</span>
<span style="margin-left:auto;color:var(--c-text-secondary)"></span>
</div>
<a href="https://apps.apple.com/app/ban-yaro-go/id6775012705" rel="noopener"
style="display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);text-decoration:none;border-top:1px solid var(--c-border)">
<div style="display:flex;flex-direction:column;gap:1px;flex:1;min-width:0">
<span style="font-weight:600;color:var(--c-text)">Ban Yaro Go fürs iPhone</span>
<span class="text-xs-secondary">Tracking im Hintergrund, offline dabei</span>
</div>
<img src="/img/appstore-badge-de.svg" alt="Laden im App Store" style="height:42px;width:auto;flex-shrink:0">
</a>
</div>
</div>

View file

@ -4,9 +4,9 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="color-scheme" content="light dark">
<script src="/js/landing-init.js?v=1273"></script>
<script src="/js/landing-init.js?v=1276"></script>
<title>Ban Yaro — Die Hunde-App für Deutschland, Österreich & Schweiz</title>
<meta name="description" content="Ban Yaro: Die kostenlose All-in-One Hunde-App für DACH. Tagebuch, Giftköder-Alarm, Training mit KI, Forum, Wurfbörse, Stammbaum, Inzucht-Check — DSGVO-konform, offline-fähig, direkt im Browser.">
<meta name="description" content="Ban Yaro: Die kostenlose All-in-One Hunde-App für DACH. Tagebuch, Giftköder-Alarm, Training mit KI, Forum, Wurfbörse, Stammbaum, Inzucht-Check — DSGVO-konform, offline-fähig, direkt im Browser oder als native iPhone-App (Ban Yaro Go).">
<meta name="keywords" content="Hunde App, Hunde Community, Wurfbörse, Züchter, Welpen kaufen, Stammbaum Hund, Inzuchtkoeffizient, Hundezucht, Impfpass Hund, Giftköder Alarm, Gassi Community, Hundetraining App, Hunde Forum, Hunde KI, Hundefilm Datenbank, Welpen Marktplatz">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://banyaro.app/">
@ -79,6 +79,7 @@
"Zecken-Warnung regelbasiert (Saison und Temperatur)",
"Wetter-Chip in der App (Open-Meteo, ohne API-Key)",
"Gassi-Community und GPS-Routen aufzeichnen",
"Native iPhone-App (Ban Yaro Go): Tracking im Hintergrund bei gesperrtem Display, Apple Health, Live-Aktivität, GPX-Import",
"Täglicher Routenvorschlag (2, 4 oder 6 km via OpenRouteService)",
"Hundesitting-Vermittlung (nur 8% Provision)",
"NFC-Halsband-Tags mit öffentlichem Hunde-Profil",
@ -731,6 +732,7 @@
html.dark tr:nth-child(even) td { background: #141210 !important; }
html.dark footer { background: #0d0b09 !important; }
html.dark .section-intro { color: #a89880 !important; }
html.dark .ios-card { background: #1e1a16 !important; border-color: #2e2620 !important; }
</style>
</head>
<body>
@ -1534,6 +1536,49 @@
</div>
</section>
<!-- Native iOS-App — Ban Yaro Go -->
<section id="ios-app" style="background:var(--bg)">
<div class="container">
<div class="ios-card" style="background:white;border:2px solid var(--border);border-radius:18px;padding:clamp(1.75rem,5vw,3rem);text-align:center;max-width:780px;margin:0 auto;box-shadow:0 8px 32px rgba(0,0,0,.06)">
<span style="display:inline-flex;align-items:center;gap:.45rem;background:var(--primary-light);color:var(--primary);font-weight:700;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;padding:.4rem 1rem;border-radius:999px;margin-bottom:1rem">
<svg viewBox="0 0 256 256" style="width:1rem;height:1rem;fill:currentColor"><use href="/icons/phosphor.svg#apple-logo"></use></svg>
Jetzt im App Store
</span>
<h2 style="margin:0 0 .75rem">Lieber nativ? Ban&nbsp;Yaro&nbsp;Go fürs iPhone</h2>
<p class="section-intro" style="margin:0 auto 2rem">Die native App ist auf das gemacht, was unterwegs wirklich zählt — und läuft auch dann weiter, wenn der Browser längst aufgegeben hätte.</p>
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1.4rem;text-align:left;margin-bottom:2.25rem">
<div class="usp-item">
<svg class="usp-icon" viewBox="0 0 256 256"><use href="/icons/phosphor.svg#device-mobile"></use></svg>
<div>
<h3>Track läuft einfach weiter</h3>
<p>Die Aufzeichnung läuft im Hintergrund — auch bei gesperrtem Display, in der Hosentasche oder während du telefonierst. Mit Live-Aktivität in der Dynamic Island und automatischer Pause beim Stehenbleiben.</p>
</div>
</div>
<div class="usp-item">
<svg class="usp-icon" viewBox="0 0 256 256"><use href="/icons/phosphor.svg#cloud-slash"></use></svg>
<div>
<h3>Funkloch-sicher unterwegs</h3>
<p>Kein Empfang? Egal. Die Tour wird lokal auf dem iPhone gesichert und automatisch hochgeladen, sobald wieder Netz da ist. Hunde, Touren und Tagebuch sind offline dabei.</p>
</div>
</div>
<div class="usp-item">
<svg class="usp-icon" viewBox="0 0 256 256"><use href="/icons/phosphor.svg#heartbeat"></use></svg>
<div>
<h3>Tief in iOS integriert</h3>
<p>Touren landen auf Wunsch als Spaziergang-Workout in Apple Health, Fotos hängen am richtigen Streckenpunkt, und GPX-Tracks aus Komoot &amp; Co. kommen per Teilen-Menü rein.</p>
</div>
</div>
</div>
<a href="https://apps.apple.com/app/ban-yaro-go/id6775012705" data-appstore aria-label="Ban Yaro Go im App Store laden" style="display:inline-block;line-height:0;margin-top:.5rem">
<img src="/img/appstore-badge-de.svg" alt="Laden im App Store" style="height:58px;width:auto">
</a>
<p style="font-size:.85rem;color:var(--text-muted);margin-top:1rem">Kostenlos · iPhone, iOS&nbsp;17+ · banyaro.app bleibt im Browser voll nutzbar</p>
</div>
</div>
</section>
<section>
<div class="container" style="text-align:center">
<h2>Jetzt kostenlos starten</h2>

View file

@ -4,7 +4,7 @@
============================================================ */
// ← EINZIGE Stelle für die Version — STATIC_ASSETS und CACHE_VERSION leiten sich ab
const VER = '1273';
const VER = '1276';
const CACHE_VERSION = `by-v${VER}`;
const CACHE_STATIC = `${CACHE_VERSION}-static`;
const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten