diff --git a/backend/main.py b/backend/main.py index fb55815..db883dc 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1400,208 +1400,6 @@ async def knigge_page(): return HTMLResponse(content=html, headers={"Cache-Control": "max-age=7200"}) -# ------------------------------------------------------------------ -# /partner — Influencer-Landingpage -# ------------------------------------------------------------------ -@app.get("/partner") -async def partner_landing(): - from fastapi.responses import HTMLResponse - from database import db as _db - with _db() as conn: - total_founders = conn.execute("SELECT COUNT(*) FROM users WHERE is_founder=1").fetchone()[0] - partners = conn.execute( - """SELECT label, uses FROM partner_codes WHERE grants_founder=1 ORDER BY uses DESC LIMIT 5""" - ).fetchall() - open_slots = max(0, 100 - total_founders) - - partner_rows = ''.join([ - f'
{p["label"]}' - f'{p["uses"]} Gründer
' - for p in partners - ]) or '
Noch keine Partner aktiv — sei der Erste.
' - - html = f""" - - - - - Ban Yaro Partner — Werde Teil der ersten 100 - - - - - - - -
- - -
- -
Ban Yaro · Influencer-Programm
-

Gib deiner Community
etwas für immer.

-

100 Gründer-Plätze. Weltweit. Nie wieder erhältlich.
Als Partner bringst du deine Follower nach vorne — und steigst im Ranking auf.

- Jetzt Partner werden -
- - -
-
{open_slots}
-
Gründer-Plätze noch frei (von 100)
-
-
0{total_founders} vergeben100
-
- - -
-
Was du und deine Community bekommen
- -
-
🏆
-
-
Gründer-Lizenz für deine Follower
-
Jeder der sich mit deinem Code registriert bekommt einen der 100 Gründer-Plätze — mit einer nummerierten Badge „Gründer #N" die dauerhaft im Profil und im Forum sichtbar ist. Nie wieder erhältlich.
-
-
- -
-
🤝
-
-
Dein persönlicher Partner-Code
-
Du bekommst einen eigenen Code (z.B. HUNDEBLOG). Follower die sich damit registrieren werden automatisch Gründer — du siehst in Echtzeit wie viele du gebracht hast.
-
-
- -
-
📊
-
-
Öffentliches Partner-Ranking
-
Auf der Gründer-Seite siehen alle wer die meisten Gründer gebracht hat. Das Ranking motiviert deine Follower mitzumachen — und stärkt deine Position gegenüber anderen Influencern.
-
-
- -
-
💜
-
-
Partner-Badge für dich
-
Du selbst bekommst ein „Partner"-Badge in deinem Profil — sichtbar für alle Nutzer der App.
-
-
- -
-
🎁
-
-
Lebenslang kostenlos — für immer
-
Gründer zahlen nie für Premium-Features — egal was wir in Zukunft einführen. Das ist ein echtes Dankeschön für die Pioniere.
-
-
-
- - -
-
Wie es funktioniert
-
-
1
-
Kontakt aufnehmenSchreib uns kurz an partner@banyaro.app — wir richten deinen persönlichen Code ein.
-
-
-
2
-
Code teilenDu postest deinen Code in Story, Reel oder Post — deine Follower registrieren sich auf banyaro.app.
-
-
-
3
-
Gründer werdenJede Registrierung mit deinem Code sichert automatisch einen der 100 Gründer-Plätze. Du siehst deinen Fortschritt in Echtzeit.
-
-
-
4
-
Im Ranking aufsteigenJe mehr Gründer du bringst, desto höher dein Platz auf der öffentlichen Gründer-Seite.
-
-
- - - {'
🏅 Aktuelles Partner-Ranking
' + partner_rows + '
' if partners else ''} - - -
-
Was ist Ban Yaro?
-

Ban Yaro ist die Hunde-App für alles was Halter brauchen — Tagebuch, Gesundheit, Routen, Giftköder-Alarm, Community. Kostenlos, ohne App Store, direkt im Browser oder als PWA.

- banyaro.app entdecken → -
- - -
-

Bereit dabei zu sein?

-

Schreib uns kurz wer du bist und auf welchem Kanal du aktiv bist — wir richten deinen Code binnen 24h ein.

- 📧 partner@banyaro.app -
- - - - -
- -""" - return HTMLResponse(content=html, headers={"Cache-Control": "no-cache"}) - - # SPA Fallback — ALLE nicht-API-Routen gehen zur index.html @app.get("/{full_path:path}") async def spa_fallback(full_path: str): diff --git a/backend/routes/breeder.py b/backend/routes/breeder.py index bb5efc8..061c9a7 100644 --- a/backend/routes/breeder.py +++ b/backend/routes/breeder.py @@ -21,7 +21,7 @@ _TZ = ZoneInfo("Europe/Berlin") BREEDER_DOCS_DIR = os.getenv("BREEDER_DOCS_DIR", "/data/breeder_docs") os.makedirs(BREEDER_DOCS_DIR, exist_ok=True) -ADMIN_EMAIL = os.getenv("ADMIN_EMAIL", "admin@banyaro.app") +ADMIN_EMAIL = os.getenv("ADMIN_EMAIL", "mail@motocamp.de") APP_URL = os.getenv("APP_URL", "https://banyaro.app") diff --git a/backend/routes/litters.py b/backend/routes/litters.py index 2bcf629..f47c809 100644 --- a/backend/routes/litters.py +++ b/backend/routes/litters.py @@ -258,7 +258,7 @@ async def welfare_confirm(litter_id: int, user=Depends(_require_breeder)): "FROM breeder_profiles bp JOIN users u ON u.id=bp.user_id " "WHERE bp.user_id=?", (user["id"],) ).fetchone() - admin_email = os.getenv("ADMIN_EMAIL", "admin@banyaro.app") + admin_email = os.getenv("ADMIN_EMAIL", "mail@motocamp.de") app_url = os.getenv("APP_URL", "https://banyaro.app") zuechter = profile["name"] if profile else user.get("name", "Unbekannt") zwinger = profile["zwingername"] if profile else "—" diff --git a/backend/routes/osm.py b/backend/routes/osm.py index e08742b..d75631b 100644 --- a/backend/routes/osm.py +++ b/backend/routes/osm.py @@ -28,7 +28,7 @@ OVERPASS_URLS = [ _overpass_sem = asyncio.Semaphore(1) _overpass_last_req = 0.0 _OVERPASS_MIN_DELAY = 2.0 # Sekunden zwischen Anfragen -_OVERPASS_UA = 'BanYaro/1.0 (https://banyaro.app; dog-walking PWA; contact: admin@banyaro.app)' +_OVERPASS_UA = 'BanYaro/1.0 (https://banyaro.app; dog-walking PWA; contact: mail@motocamp.de)' _OVERPASS_HEADERS = { 'User-Agent': _OVERPASS_UA, 'Referer': 'https://banyaro.app/', # von overpass-api.de verlangt gegen 406 diff --git a/backend/static/index.html b/backend/static/index.html index 5277ae8..1cd9cfa 100644 --- a/backend/static/index.html +++ b/backend/static/index.html @@ -230,7 +230,7 @@ border-top:1px solid var(--c-border,#e5e7eb); font-size:var(--text-xs);color:var(--c-text-muted); display:flex;flex-direction:column;gap:var(--space-2);padding-bottom:var(--space-2)"> -
+
Impressum Datenschutz
diff --git a/backend/static/js/app.js b/backend/static/js/app.js index 692526b..cb4b4a9 100644 --- a/backend/static/js/app.js +++ b/backend/static/js/app.js @@ -3,7 +3,7 @@ Router, State-Management, Navigation, Initialisierung. ============================================================ */ -const APP_VER = '542'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen +const APP_VER = '539'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen const APP_VERSION = '1.1.4'; // ← semantische Version, wird bei make release gesetzt const IS_STAGING = location.hostname === 'staging.banyaro.app'; diff --git a/backend/static/js/pages/datenschutz.js b/backend/static/js/pages/datenschutz.js index 73c2ba8..838aaf4 100644 --- a/backend/static/js/pages/datenschutz.js +++ b/backend/static/js/pages/datenschutz.js @@ -29,7 +29,7 @@ window.Page_datenschutz = (() => { ${sec('Verantwortlicher', `

René Degelmann, Ringstr. 26, 85560 Ebersberg
- E-Mail: hallo@banyaro.app + E-Mail: mail@motocamp.de

`)} ${sec('Deine Daten gehören dir', ` @@ -169,7 +169,7 @@ window.Page_datenschutz = (() => { (Art. 18) sowie Datenportabilität (Art. 20). Erteilte Einwilligungen kannst du jederzeit mit Wirkung für die Zukunft widerrufen (Art. 7 Abs. 3 DSGVO). Zur Ausübung deiner Rechte wende dich per E-Mail an - hallo@banyaro.app.

+ mail@motocamp.de.

Du hast außerdem das Recht, bei der zuständigen Datenschutz-Aufsichtsbehörde Beschwerde einzulegen:
Bayerisches Landesamt für Datenschutzaufsicht (BayLDA)
diff --git a/backend/static/js/pages/impressum.js b/backend/static/js/pages/impressum.js index ffccb44..ac8b3bf 100644 --- a/backend/static/js/pages/impressum.js +++ b/backend/static/js/pages/impressum.js @@ -25,9 +25,9 @@ window.Page_impressum = (() => {

Kontakt

- E-Mail: hallo@banyaro.app
- Kontaktformular: mail@motocamp.de
+ Kontaktformular: Nachricht senden

diff --git a/backend/static/sw.js b/backend/static/sw.js index d493e2a..b443693 100644 --- a/backend/static/sw.js +++ b/backend/static/sw.js @@ -3,7 +3,7 @@ Offline-Cache + Push Notifications + Tile-Cache ============================================================ */ -const CACHE_VERSION = 'by-v565'; +const CACHE_VERSION = 'by-v562'; const CACHE_STATIC = `${CACHE_VERSION}-static`; const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache