From f8e4cf82db0cde924ad069f270f83b45bac6cff6 Mon Sep 17 00:00:00 2001 From: Dogfather Date: Thu, 30 Jul 2026 20:09:09 +0200 Subject: [PATCH] =?UTF-8?q?DOGFATHER=20UNIVERSE:=20erste=20lauff=C3=A4hige?= =?UTF-8?q?=20Website=20+=20Bewerbungs-Postfach=20+=20Hosting-Vorbereitung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 6 + .nojekyll | 0 404.html | 45 ++++ DEPLOY.md | 92 +++++++ _headers | 9 + aktion-detail.html | 86 ++++++ aktionen.html | 61 +++++ assets/css/main.css | 450 ++++++++++++++++++++++++++++++++ assets/css/theme-dogfather.css | 16 ++ assets/css/theme-hasidog.css | 15 ++ assets/css/theme-spicymedia.css | 15 ++ assets/js/data-aktionen.js | 70 +++++ assets/js/data-creator.js | 27 ++ assets/js/data-modis.js | 94 +++++++ assets/js/data-scouts.js | 42 +++ assets/js/forms.js | 129 +++++++++ assets/js/gallery.js | 93 +++++++ assets/js/main.js | 193 ++++++++++++++ bewerben.html | 125 +++++++++ cloudflare-worker/README.md | 72 +++++ cloudflare-worker/src/worker.js | 119 +++++++++ cloudflare-worker/wrangler.toml | 14 + community.html | 70 +++++ creator.html | 93 +++++++ dogfather.html | 99 +++++++ hasidog.html | 71 +++++ index.html | 94 +++++++ kasper.html | 72 +++++ kontakt.html | 89 +++++++ links.html | 95 +++++++ manager.html | 89 +++++++ medien.html | 57 ++++ netlify.toml | 13 + postfach.html | 156 +++++++++++ robots.txt | 10 + sitemap.xml | 25 ++ stimmen.html | 61 +++++ streamer.html | 93 +++++++ streamplan.html | 59 +++++ team-modis.html | 83 ++++++ team-scouts.html | 67 +++++ vanvan.html | 71 +++++ videos.html | 63 +++++ werte.html | 78 ++++++ zeitreise.html | 81 ++++++ 45 files changed, 3462 insertions(+) create mode 100644 .gitignore create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 DEPLOY.md create mode 100644 _headers create mode 100644 aktion-detail.html create mode 100644 aktionen.html create mode 100644 assets/css/main.css create mode 100644 assets/css/theme-dogfather.css create mode 100644 assets/css/theme-hasidog.css create mode 100644 assets/css/theme-spicymedia.css create mode 100644 assets/js/data-aktionen.js create mode 100644 assets/js/data-creator.js create mode 100644 assets/js/data-modis.js create mode 100644 assets/js/data-scouts.js create mode 100644 assets/js/forms.js create mode 100644 assets/js/gallery.js create mode 100644 assets/js/main.js create mode 100644 bewerben.html create mode 100644 cloudflare-worker/README.md create mode 100644 cloudflare-worker/src/worker.js create mode 100644 cloudflare-worker/wrangler.toml create mode 100644 community.html create mode 100644 creator.html create mode 100644 dogfather.html create mode 100644 hasidog.html create mode 100644 index.html create mode 100644 kasper.html create mode 100644 kontakt.html create mode 100644 links.html create mode 100644 manager.html create mode 100644 medien.html create mode 100644 netlify.toml create mode 100644 postfach.html create mode 100644 robots.txt create mode 100644 sitemap.xml create mode 100644 stimmen.html create mode 100644 streamer.html create mode 100644 streamplan.html create mode 100644 team-modis.html create mode 100644 team-scouts.html create mode 100644 vanvan.html create mode 100644 videos.html create mode 100644 werte.html create mode 100644 zeitreise.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..238ab9b --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.DS_Store +Thumbs.db +*.log +node_modules/ +cloudflare-worker/.wrangler/ +cloudflare-worker/node_modules/ diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..ead820c --- /dev/null +++ b/404.html @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + +Seite nicht gefunden — DOGFATHER UNIVERSE + + + + + + + + + +
+
+
+ 404 +

Diese Seite ist verlorengegangen 🐾

+

Selbst HasiDog konnte sie nicht erschnüffeln.

+ +
+
+
+ + + + + diff --git a/DEPLOY.md b/DEPLOY.md new file mode 100644 index 0000000..11bcbac --- /dev/null +++ b/DEPLOY.md @@ -0,0 +1,92 @@ +# DOGFATHER UNIVERSE — Go-Live-Anleitung + +Diese Website ist rein statisch (HTML/CSS/JS) — sobald eine Domain feststeht, ist „online stellen" +nur noch eine Frage von ein paar Klicks/Befehlen, kein Code-Umbau nötig. Diese Datei ist die +Checkliste dafür. + +## 1. Domain-Platzhalter ersetzen (einmalig, sobald Domain feststeht) + +An folgenden Stellen steht aktuell `REPLACE-WITH-YOUR-DOMAIN.tld` als Platzhalter: + +- `sitemap.xml` (alle ``-Einträge) +- `robots.txt` (Sitemap-Zeile) +- in **jeder** `.html`-Datei: `og:url`, `og:image`, `twitter:image` (im ``) + +Am schnellsten mit Suchen-&-Ersetzen im Editor, oder per Terminal (im Ordner `DogFather-Website/`): + +```bash +# Beispiel mit echter Domain (macOS/Linux/Git-Bash): +find . -type f \( -name "*.html" -o -name "*.xml" -o -name "*.txt" \) \ + -exec sed -i 's/REPLACE-WITH-YOUR-DOMAIN.tld/deine-domain.de/g' {} + +``` + +## 2. Social-Preview-Bild ergänzen (optional, aber empfohlen) + +`assets/img/og-cover.jpg` (1200×630px) anlegen — erscheint als Vorschaubild, wenn Links z.B. bei +TikTok, WhatsApp oder Discord geteilt werden. Bis dahin zeigen Plattformen einfach kein Bild an, +nichts bricht. + +## 3. Bewerbungs-Postfach deployen (falls noch nicht geschehen) + +Siehe `cloudflare-worker/README.md`. Danach die Worker-URL eintragen in: +- `assets/js/forms.js` → `API_BASE_URL` +- `postfach.html` → `API_BASE_URL` + +## 4. Hosting wählen & deployen + +Alle drei Optionen sind kostenlos im Free-Tier und unterstützen automatisch HTTPS + +Custom-Domains. Empfehlung: **Cloudflare Pages**, weil das Bewerbungs-Postfach schon auf +Cloudflare läuft — dann liegt alles in einem Account. + +### Option A — Cloudflare Pages (empfohlen) + +```bash +cd DogFather-Website +npx wrangler pages deploy . --project-name=dogfather-universe +``` + +Danach im Cloudflare-Dashboard unter **Workers & Pages → dogfather-universe → Custom domains** +die eigene Domain hinzufügen (DNS läuft automatisch über Cloudflare, wenn die Domain dort +verwaltet wird). + +### Option B — Netlify + +1. Auf [netlify.com](https://netlify.com) einloggen (kostenloser Account reicht) +2. „Add new site" → „Deploy manually" → den Ordner `DogFather-Website/` per Drag&Drop hochladen + (oder Repo verbinden, falls die Seite auf GitHub liegt) +3. `netlify.toml` wird automatisch erkannt (liegt schon bereit) +4. Unter **Site settings → Domain management** die eigene Domain hinzufügen + +### Option C — GitHub Pages + +1. Repo auf GitHub erstellen, Inhalt von `DogFather-Website/` pushen (siehe Abschnitt 5) +2. Im Repo unter **Settings → Pages** → Branch `main`, Ordner `/ (root)` auswählen +3. Datei `.nojekyll` liegt schon bereit (verhindert, dass GitHub Dateien wie `_headers` + fälschlich ignoriert) +4. Unter **Settings → Pages → Custom domain** die eigene Domain eintragen — GitHub legt dafür + automatisch eine `CNAME`-Datei im Repo an + +## 5. Git-Repo einrichten (falls noch nicht geschehen) + +```bash +cd DogFather-Website +git init +git add . +git commit -m "DOGFATHER UNIVERSE — erste lauffähige Version" +git branch -M main +git remote add origin +git push -u origin main +``` + +`.gitignore` ist bereits vorbereitet (schließt z.B. Wrangler-Cache aus). + +## 6. Nach dem Go-Live prüfen + +- [ ] Alle Seiten über die echte Domain aufrufbar (nicht nur `index.html`, auch Unterseiten) +- [ ] `https://deine-domain.de/robots.txt` und `/sitemap.xml` erreichbar +- [ ] Bewerbungsformular sendet erfolgreich (Postfach zeigt neue Einträge) +- [ ] Link-Vorschau testen, z.B. mit dem + [Facebook Sharing Debugger](https://developers.facebook.com/tools/debug/) oder + [Twitter Card Validator](https://cards-dev.twitter.com/validator) +- [ ] In `cloudflare-worker/src/worker.js` → `corsHeaders()` `"*"` durch die echte Domain + ersetzen und den Worker neu deployen (`wrangler deploy`) diff --git a/_headers b/_headers new file mode 100644 index 0000000..834f2d8 --- /dev/null +++ b/_headers @@ -0,0 +1,9 @@ +# DOGFATHER UNIVERSE — Sicherheits-Header +# Funktioniert automatisch auf Netlify & Cloudflare Pages. GitHub Pages +# unterstützt diese Datei nicht (dort keine Wirkung, aber auch kein Fehler). + +/* + X-Frame-Options: DENY + X-Content-Type-Options: nosniff + Referrer-Policy: strict-origin-when-cross-origin + Permissions-Policy: geolocation=(), camera=(), microphone=() diff --git a/aktion-detail.html b/aktion-detail.html new file mode 100644 index 0000000..648be41 --- /dev/null +++ b/aktion-detail.html @@ -0,0 +1,86 @@ + + + + + +Aktion — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Aktionen & Projekte +

Aktion wird geladen …

+

+
+
+ +
+
+
Foto folgt
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/aktionen.html b/aktionen.html new file mode 100644 index 0000000..fb14300 --- /dev/null +++ b/aktionen.html @@ -0,0 +1,61 @@ + + + + + +Aktionen & Projekte — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Aktionen & Projekte +

Was Team Dogi gerade bewegt

+

Von Tierwohl-Aktionen bis Merchandise-Kooperationen.

+
+
+ +
+
+
+
+
+
+ + + + + + + diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 0000000..b1fe270 --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,450 @@ +/* ===================================================================== + DOGFATHER UNIVERSE — main.css + Gemeinsames Design-System für alle drei Welten (Dogfather / HasiDog / + Manager Dogfather). Farben kommen aus den theme-*.css Dateien über + CSS-Variablen — dieses File ist bewusst themen-neutral. + ===================================================================== */ + +/* ---------- Reset ---------- */ +*, *::before, *::after { box-sizing: border-box; } +html, body { margin: 0; padding: 0; } +img, svg { max-width: 100%; display: block; } +a { color: inherit; text-decoration: none; } +button { font: inherit; } +ul { list-style: none; margin: 0; padding: 0; } + +/* ---------- Fallback-Theme (Dogfather) — wird von theme-*.css überschrieben ---------- */ +:root { + --bg: #0b0d10; + --bg-alt: #12151a; + --card-bg: #171b21; + --text: #f3f5f7; + --text-muted: #9aa4b2; + --border: #262c35; + --accent: #8fd9ea; /* Babyblau */ + --accent-2: #8b5cf6; /* Lila */ + --accent-contrast: #0b0d10; + --radius: 14px; + --font-head: "Poppins", "Segoe UI", system-ui, sans-serif; + --font-body: "Inter", "Segoe UI", system-ui, sans-serif; + --shadow: 0 10px 30px rgba(0,0,0,.35); +} + +body { + background: var(--bg); + color: var(--text); + font-family: var(--font-body); + line-height: 1.6; + -webkit-font-smoothing: antialiased; + min-height: 100vh; + position: relative; + overflow-x: hidden; +} + +h1, h2, h3, h4 { + font-family: var(--font-head); + line-height: 1.2; + margin: 0 0 .5em; + font-weight: 700; +} +h1 { font-size: clamp(2rem, 5vw, 3.2rem); } +h2 { font-size: clamp(1.5rem, 3.5vw, 2.3rem); } +h3 { font-size: 1.3rem; } +p { margin: 0 0 1em; color: var(--text-muted); } +.lead { font-size: 1.15rem; color: var(--text); } + +.container { + width: min(1180px, 92vw); + margin: 0 auto; +} + +section { padding: clamp(3rem, 6vw, 5.5rem) 0; } +.section-tight { padding: clamp(1.5rem, 3vw, 2.5rem) 0; } + +.eyebrow { + display: inline-block; + font-size: .78rem; + letter-spacing: .14em; + text-transform: uppercase; + color: var(--accent); + font-weight: 700; + margin-bottom: .8em; +} + +/* ---------- Nebel/Partikel Hintergrund ---------- */ +.fog-layer { + position: fixed; + inset: 0; + pointer-events: none; + z-index: 0; + overflow: hidden; +} +.fog-layer span { + position: absolute; + border-radius: 50%; + background: radial-gradient(circle, var(--accent) 0%, transparent 70%); + opacity: .08; + filter: blur(4px); + animation: drift 26s linear infinite; +} +@keyframes drift { + 0% { transform: translateY(0) translateX(0); } + 50% { transform: translateY(-40px) translateX(20px); } + 100% { transform: translateY(0) translateX(0); } +} +@media (prefers-reduced-motion: reduce) { + .fog-layer span { animation: none; } +} + +/* ---------- Header / Navigation ---------- */ +header.site-header { + position: sticky; + top: 0; + z-index: 50; + background: rgba(11,13,16,.82); + backdrop-filter: blur(10px); + border-bottom: 1px solid var(--border); +} +.nav-bar { + width: min(1180px, 92vw); + margin: 0 auto; + display: flex; + align-items: center; + justify-content: space-between; + padding: .9rem 0; +} +.brand { + display: flex; + align-items: center; + gap: .6rem; + font-family: var(--font-head); + font-weight: 800; + font-size: 1.15rem; + letter-spacing: .02em; +} +.brand .heart { color: var(--accent); } +.brand small { + display: block; + font-size: .6rem; + font-weight: 500; + letter-spacing: .1em; + color: var(--text-muted); + text-transform: uppercase; +} + +.nav-links { + display: flex; + align-items: center; + gap: 1.6rem; +} +.nav-group { position: relative; } +.nav-group > button { + background: none; + border: none; + color: var(--text); + font-weight: 600; + cursor: pointer; + display: flex; + align-items: center; + gap: .3rem; + padding: .5rem 0; +} +.nav-group > button:hover, .nav-group.open > button { color: var(--accent); } +.nav-flat { font-weight: 600; padding: .5rem 0; } +.nav-flat:hover, .nav-flat.active { color: var(--accent); } +.nav-dropdown { + position: absolute; + top: 100%; + left: 50%; + transform: translateX(-50%); + min-width: 220px; + background: var(--card-bg); + border: 1px solid var(--border); + border-radius: var(--radius); + padding: .5rem; + box-shadow: var(--shadow); + display: none; + flex-direction: column; +} +.nav-group.open .nav-dropdown { display: flex; } +.nav-dropdown a { + padding: .55rem .7rem; + border-radius: 8px; + font-size: .92rem; + color: var(--text-muted); +} +.nav-dropdown a:hover, .nav-dropdown a.active { background: var(--bg-alt); color: var(--accent); } + +.nav-cta { + padding: .55rem 1.1rem; + border-radius: 999px; + background: var(--accent); + color: var(--accent-contrast); + font-weight: 700; + font-size: .88rem; +} + +.nav-toggle { + display: none; + background: none; + border: 1px solid var(--border); + border-radius: 8px; + color: var(--text); + padding: .5rem .7rem; + cursor: pointer; +} + +@media (max-width: 880px) { + .nav-toggle { display: block; } + .nav-links { + position: fixed; + inset: 62px 0 0 0; + background: var(--bg); + flex-direction: column; + align-items: stretch; + padding: 1.2rem 6vw; + gap: .3rem; + transform: translateY(-110%); + transition: transform .25s ease; + overflow-y: auto; + } + .nav-links.open { transform: translateY(0); } + .nav-group > button { width: 100%; justify-content: space-between; padding: .9rem 0; border-bottom: 1px solid var(--border); } + .nav-flat { display: block; padding: .9rem 0; border-bottom: 1px solid var(--border); } + .nav-dropdown { position: static; transform: none; box-shadow: none; width: 100%; } + .nav-group.open .nav-dropdown { display: flex; } + .nav-cta { align-self: flex-start; margin: 1rem 0; } +} + +/* ---------- Buttons ---------- */ +.btn { + display: inline-flex; + align-items: center; + gap: .5rem; + padding: .8rem 1.5rem; + border-radius: 999px; + font-weight: 700; + font-size: .95rem; + border: 1px solid transparent; + cursor: pointer; + transition: transform .15s ease, opacity .15s ease; +} +.btn:hover { transform: translateY(-2px); } +.btn-primary { background: var(--accent); color: var(--accent-contrast); } +.btn-secondary { background: var(--accent-2); color: #fff; } +.btn-outline { background: transparent; border-color: var(--border); color: var(--text); } +.btn-outline:hover { border-color: var(--accent); color: var(--accent); } +.btn-row { display: flex; gap: 1rem; flex-wrap: wrap; margin-top: 1.5rem; } + +/* ---------- Hero ---------- */ +.hero { + position: relative; + padding: clamp(4rem, 10vw, 7rem) 0; + text-align: center; +} +.hero .worlds { + margin: .6rem 0 1.2rem; + color: var(--text-muted); + font-size: 1.05rem; +} +.hero-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1.2rem; + margin-top: 3rem; +} +@media (max-width: 760px) { .hero-grid { grid-template-columns: 1fr; } } + +/* ---------- Cards ---------- */ +.card { + background: var(--card-bg); + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 1.6rem; + box-shadow: var(--shadow); + height: 100%; + transition: border-color .15s ease, transform .15s ease; +} +.card:hover { border-color: var(--accent); transform: translateY(-3px); } +.card h3 { margin-bottom: .4rem; } +.card .tag { + display: inline-block; + font-size: .72rem; + text-transform: uppercase; + letter-spacing: .08em; + color: var(--accent); + border: 1px solid var(--accent); + border-radius: 999px; + padding: .15rem .6rem; + margin-bottom: .8rem; +} + +.grid { display: grid; gap: 1.4rem; } +.grid-2 { grid-template-columns: repeat(2, 1fr); } +.grid-3 { grid-template-columns: repeat(3, 1fr); } +.grid-4 { grid-template-columns: repeat(4, 1fr); } +@media (max-width: 980px) { .grid-3, .grid-4 { grid-template-columns: repeat(2, 1fr); } } +@media (max-width: 620px) { .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } } + +/* ---------- Profil-Karten (Team/Creator) ---------- */ +.profile-card { + background: var(--card-bg); + border: 1px solid var(--border); + border-radius: var(--radius); + overflow: hidden; + text-align: center; + padding: 1.6rem 1.2rem; +} +.avatar { + width: 96px; + height: 96px; + border-radius: 50%; + margin: 0 auto .9rem; + background: linear-gradient(135deg, var(--accent), var(--accent-2)); + display: flex; + align-items: center; + justify-content: center; + font-family: var(--font-head); + font-weight: 800; + font-size: 1.6rem; + color: var(--accent-contrast); + overflow: hidden; +} +.avatar img { width: 100%; height: 100%; object-fit: cover; } +.profile-card .role { color: var(--accent); font-weight: 600; font-size: .85rem; margin-bottom: .6rem; } +.profile-card .quote { font-style: italic; font-size: .9rem; } +.profile-card .socials { display: flex; justify-content: center; gap: .6rem; margin-top: .8rem; } +.profile-card .socials a { + border: 1px solid var(--border); + border-radius: 999px; + padding: .35rem .8rem; + font-size: .78rem; + color: var(--text-muted); +} +.profile-card .socials a:hover { color: var(--accent); border-color: var(--accent); } + +/* ---------- Placeholder-Bild-Boxen (bis echte Fotos da sind) ---------- */ +.img-placeholder { + aspect-ratio: 4 / 3; + border-radius: var(--radius); + background: repeating-linear-gradient(135deg, var(--bg-alt), var(--bg-alt) 10px, var(--card-bg) 10px, var(--card-bg) 20px); + border: 1px dashed var(--border); + display: flex; + align-items: center; + justify-content: center; + color: var(--text-muted); + font-size: .8rem; + text-align: center; + padding: 1rem; +} + +/* ---------- Timeline (Zeitreise) ---------- */ +.timeline { position: relative; margin: 2rem 0; padding-left: 2rem; border-left: 2px solid var(--border); } +.timeline-item { position: relative; padding-bottom: 2.4rem; } +.timeline-item::before { + content: ""; + position: absolute; + left: -2.45rem; + top: .2rem; + width: 14px; height: 14px; + border-radius: 50%; + background: var(--accent); + box-shadow: 0 0 0 4px var(--bg); +} +.timeline-item .date { color: var(--accent); font-weight: 700; font-size: .85rem; } + +/* ---------- Gallery / Lightbox ---------- */ +.filter-bar { display: flex; gap: .6rem; flex-wrap: wrap; margin-bottom: 1.6rem; } +.filter-btn { + border: 1px solid var(--border); + background: transparent; + color: var(--text-muted); + padding: .5rem 1rem; + border-radius: 999px; + cursor: pointer; + font-size: .85rem; +} +.filter-btn.active, .filter-btn:hover { border-color: var(--accent); color: var(--accent); } +.gallery-item { cursor: pointer; } +.lightbox { + position: fixed; inset: 0; background: rgba(0,0,0,.85); + display: none; align-items: center; justify-content: center; z-index: 200; padding: 5vh 5vw; +} +.lightbox.open { display: flex; } +.lightbox img, .lightbox .img-placeholder { max-height: 85vh; max-width: 90vw; } +.lightbox-close { + position: absolute; top: 20px; right: 30px; color: #fff; font-size: 2rem; cursor: pointer; background: none; border: none; +} + +/* ---------- Formulare ---------- */ +form.app-form { display: grid; gap: 1rem; max-width: 640px; } +.field { display: grid; gap: .4rem; } +.field label { font-weight: 600; font-size: .9rem; } +.field input, .field select, .field textarea { + background: var(--bg-alt); + border: 1px solid var(--border); + border-radius: 10px; + padding: .75rem .9rem; + color: var(--text); + font-family: var(--font-body); +} +.field textarea { min-height: 120px; resize: vertical; } +.field .error-msg { color: #ff6b6b; font-size: .8rem; display: none; } +.field.has-error input, .field.has-error select, .field.has-error textarea { border-color: #ff6b6b; } +.field.has-error .error-msg { display: block; } +.form-status { padding: .9rem 1.1rem; border-radius: 10px; font-size: .9rem; display: none; } +.form-status.show { display: block; } +.form-status.success { background: rgba(143,217,234,.12); border: 1px solid var(--accent); } +.form-status.error { background: rgba(255,107,107,.1); border: 1px solid #ff6b6b; } +.tabs { display: flex; gap: .6rem; margin-bottom: 1.8rem; flex-wrap: wrap; } +.tab-btn { + border: 1px solid var(--border); background: var(--card-bg); color: var(--text-muted); + padding: .7rem 1.3rem; border-radius: 999px; cursor: pointer; font-weight: 600; +} +.tab-btn.active { border-color: var(--accent); color: var(--accent); } +.tab-panel { display: none; } +.tab-panel.active { display: block; } + +/* ---------- Footer ---------- */ +footer.site-footer { + border-top: 1px solid var(--border); + padding: 3rem 0 2rem; + margin-top: 4rem; + position: relative; + z-index: 1; +} +.footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 2rem; } +@media (max-width: 760px) { .footer-grid { grid-template-columns: 1fr 1fr; } } +.footer-grid h4 { font-size: .85rem; text-transform: uppercase; letter-spacing: .08em; color: var(--accent); } +.footer-grid ul { display: grid; gap: .5rem; } +.footer-grid a { color: var(--text-muted); font-size: .9rem; } +.footer-grid a:hover { color: var(--accent); } +.footer-bottom { + margin-top: 2.5rem; padding-top: 1.5rem; border-top: 1px solid var(--border); + display: flex; justify-content: space-between; flex-wrap: wrap; gap: .8rem; + font-size: .8rem; color: var(--text-muted); +} + +/* ---------- Badges / Hierarchy ---------- */ +.badge { display: inline-block; font-size: .7rem; text-transform: uppercase; letter-spacing: .06em; padding: .2rem .6rem; border-radius: 999px; background: var(--bg-alt); border: 1px solid var(--border); color: var(--text-muted); } +.badge.rank-1 { border-color: var(--accent); color: var(--accent); } + +/* ---------- QR ---------- */ +.qr-card { text-align: center; } +.qr-card .img-placeholder { width: 160px; height: 160px; margin: 0 auto 1rem; aspect-ratio: auto; } + +/* ---------- Utility ---------- */ +.text-center { text-align: center; } +.mt-0 { margin-top: 0; } +.muted { color: var(--text-muted); } +.small { font-size: .85rem; } +.todo-note { + border: 1px dashed var(--accent-2); + background: rgba(139,92,246,.08); + padding: 1rem 1.2rem; + border-radius: 10px; + font-size: .85rem; + color: var(--text-muted); + margin: 1.5rem 0; +} +.todo-note strong { color: var(--accent-2); } diff --git a/assets/css/theme-dogfather.css b/assets/css/theme-dogfather.css new file mode 100644 index 0000000..829c4e0 --- /dev/null +++ b/assets/css/theme-dogfather.css @@ -0,0 +1,16 @@ +/* ===================================================================== + theme-dogfather.css — Welt 1: DOGFATHER (Streamer/Person) + Babyblau / Schwarz / Lila — die "Core"-Welt, sitzt auch als globaler + Default darunter (main.css Fallback = diese Werte). + ===================================================================== */ +:root[data-theme="dogfather"] { + --bg: #0a0c10; + --bg-alt: #12151b; + --card-bg: #171b22; + --text: #f4f6f8; + --text-muted: #9aa4b3; + --border: #262b35; + --accent: #8fd9ea; /* Babyblau — Markenfarbe */ + --accent-2: #8b5cf6; /* Lila */ + --accent-contrast: #0a0c10; +} diff --git a/assets/css/theme-hasidog.css b/assets/css/theme-hasidog.css new file mode 100644 index 0000000..b098263 --- /dev/null +++ b/assets/css/theme-hasidog.css @@ -0,0 +1,15 @@ +/* ===================================================================== + theme-hasidog.css — Welt 2: HASIDOG (Community/Maskottchen/Kasper) + Babyblau / Silber / Nachtblau — verspielt, weicher, "Familie"-Gefühl. + ===================================================================== */ +:root[data-theme="hasidog"] { + --bg: #0d1420; /* Nachtblau */ + --bg-alt: #131b29; + --card-bg: #182233; + --text: #f2f6fa; + --text-muted: #a9b6c9; + --border: #263248; + --accent: #8fd9ea; /* Babyblau */ + --accent-2: #c7ccd1; /* Silber */ + --accent-contrast: #0d1420; +} diff --git a/assets/css/theme-spicymedia.css b/assets/css/theme-spicymedia.css new file mode 100644 index 0000000..6f78800 --- /dev/null +++ b/assets/css/theme-spicymedia.css @@ -0,0 +1,15 @@ +/* ===================================================================== + theme-spicymedia.css — Welt 3: MANAGER DOGFATHER (Spicy Media) + Schwarz / Rot / Orange — professionell, Agentur-Charakter. + ===================================================================== */ +:root[data-theme="spicymedia"] { + --bg: #0a0a0a; + --bg-alt: #131313; + --card-bg: #191717; + --text: #f6f5f4; + --text-muted: #ab9f9c; + --border: #2c2726; + --accent: #e0263f; /* Rot */ + --accent-2: #ff7a1a; /* Orange */ + --accent-contrast: #0a0a0a; +} diff --git a/assets/js/data-aktionen.js b/assets/js/data-aktionen.js new file mode 100644 index 0000000..3d16061 --- /dev/null +++ b/assets/js/data-aktionen.js @@ -0,0 +1,70 @@ +/* ===================================================================== + data-aktionen.js — Aktionen & Projekte-Datenobjekt + + aktionen.html rendert daraus die Übersichtskarten, aktion-detail.html + liest per URL-Parameter (?id=slug) den passenden Eintrag aus und + zeigt die Detailansicht — so gibt es EIN Template für alle Aktionen, + ohne für jede neue Aktion eine neue HTML-Datei zu brauchen. + + Felder: + id – eindeutiger Slug (für aktion-detail.html?id=...) + title, summary, description (Array von Absätzen) + status – "geplant" | "läuft" | "abgeschlossen" + tag – kurzer Kategorie-Text fürs Badge + photo – Pfad zu assets/img/... oder "" für Platzhalter + ===================================================================== */ + +const AKTIONEN = [ + { + id: "weihnachtsaktion-portugal", + title: "Weihnachtsaktion & Portugal-Trip", + tag: "Tierwohl", + status: "geplant", + summary: "Weihnachtsaktion für Tierheime in Portugal — Team Dogi hilft Tieren in Not.", + description: [ + "Jedes Jahr organisiert Team Dogi eine Weihnachtsaktion zugunsten von Tierheimen in Portugal.", + // TODO: genaue Details (Spendenziel, Ablauf, Partner-Tierheime, Termin) ergänzen. + ], + photo: "", + }, + { + id: "community-treffen", + title: "Community-Treffen (Geburtstag)", + tag: "Community", + status: "geplant", + summary: "Ein persönliches Treffen mit der Community rund um Dogfathers Geburtstag.", + description: [ + "Team Dogi ist Familie — deshalb gibt es ein reales Treffen mit der Community.", + // TODO: Ort, Datum, Anmeldeprozess ergänzen. + ], + photo: "", + }, + { + id: "vanvan-teddys", + title: "Kooperation: VanVan Teddys", + tag: "Merchandise", + status: "läuft", + summary: "Merchandise-Kooperation rund um VanVan — Teddys für die Community.", + description: [ + "Gemeinsam mit VanVan entstehen limitierte Teddys als Teil des Merchandise-Angebots.", + // TODO: Preis, Verfügbarkeit, Bestellweg ergänzen. + ], + photo: "", + }, + { + id: "online-shop", + title: "Online-Shop (in Planung)", + tag: "Merchandise", + status: "geplant", + summary: "Der eigene Online-Shop für Tassen, Decken, Popsockets, Schlüsselanhänger, Sticker & mehr.", + description: [ + "Aktuell läuft der Merchandise-Vertrieb nur über private Einzelbestellungen.", + "Ziel: ein eigener Online-Shop, damit die Community jederzeit bestellen kann.", + // TODO: Launch-Termin, Plattform (z.B. Shopify) ergänzen. + ], + photo: "", + }, + // TODO: weitere Aktionen/Projekte hier nach gleichem Muster ergänzen. +]; + +if (typeof window !== "undefined") window.AKTIONEN = AKTIONEN; diff --git a/assets/js/data-creator.js b/assets/js/data-creator.js new file mode 100644 index 0000000..45020b2 --- /dev/null +++ b/assets/js/data-creator.js @@ -0,0 +1,27 @@ +/* ===================================================================== + data-creator.js — Creator-Datenobjekt (Creator im Spicy-Media-Team) + + TODO: Noch keine Creator-Profile final geklärt (siehe Masterplan- + Fragenkatalog, Block Creator/Team). Sobald Namen + Infos da sind, + einfach nach dem Muster unten Objekte ins Array einfügen — + creator.html liest automatisch aus und rendert Filter/Karten. + + Felder: + name, category (z.B. "Gaming", "Lifestyle", "Comedy" ...), + role, photo, quote, social, status + ===================================================================== */ + +const CREATORS = [ + // Beispiel-Struktur (auskommentiert, zur Orientierung beim Befüllen): + // { + // name: "Name", + // category: "Comedy", + // role: "Creator bei Spicy Media", + // photo: "assets/img/creator-name.jpg", + // quote: "Kurzes Zitat", + // social: { tiktok: "https://tiktok.com/@handle" }, + // status: "aktiv", + // }, +]; + +if (typeof window !== "undefined") window.CREATORS = CREATORS; diff --git a/assets/js/data-modis.js b/assets/js/data-modis.js new file mode 100644 index 0000000..4bf9fb8 --- /dev/null +++ b/assets/js/data-modis.js @@ -0,0 +1,94 @@ +/* ===================================================================== + data-modis.js — Modi-/Core-Team-Datenobjekt + + Hierarchie (wichtig, bitte bei Änderungen respektieren): + VanVan (rechte Hand, eigene Seite vanvan.html) + > Diene (rechte Hand von VanVan) + > Funny (Modi) + > Miss (Modi + Cutterin) + > Marina / Michi (Kommentare auf Clip-Accounts) + + Feld "rank" steuert nur die Sortier-/Anzeigereihenfolge (1 = höchste + Stufe). VanVan wird auf team-modis.html separat hervorgehoben UND hat + eine eigene exklusive Seite (vanvan.html) — hier trotzdem gelistet, + damit die Hierarchie an einer Stelle vollständig bleibt. + + Felder: name, role, rank, photo, quote, social, page (optionale eigene + Unterseite), status + ===================================================================== */ + +const MODIS = [ + { + name: "VanVan", + role: "Rechte Hand von Dogfather · Musik-Produzentin (Van-Van, Spotify)", + rank: 1, + photo: "", + quote: "", // TODO: Zitat von VanVan einholen + social: {}, + page: "vanvan.html", + status: "aktiv", + }, + { + name: "Diene", + role: "Organisiert & plant gemeinsam mit VanVan", + rank: 2, + photo: "", + quote: "", + social: {}, + page: "", + status: "aktiv", + }, + { + name: "Funny", + role: "Modi", + rank: 3, + photo: "", + quote: "", + social: {}, + page: "", + status: "aktiv", + }, + { + name: "Miss", + role: "Modi & Cutterin", + rank: 4, + photo: "", + quote: "", + social: {}, + page: "", + status: "aktiv", + }, + { + name: "Marina", + role: "Kommentare auf den Clip-Accounts", + rank: 5, + photo: "", + quote: "", + social: {}, + page: "", + status: "aktiv", + }, + { + name: "Michi", + role: "Kommentare auf den Clip-Accounts", + rank: 5, + photo: "", + quote: "", + social: {}, + page: "", + status: "aktiv", + }, + { + name: "Dan", + role: "Team Dogi — Rolle noch zu klären", // TODO: genaue Rolle von Dan im Team klären + rank: 6, + photo: "", + quote: "", + social: {}, + page: "", + status: "aktiv", + }, + // TODO: weitere Modis/Team-Mitglieder hier nach gleichem Muster ergänzen. +]; + +if (typeof window !== "undefined") window.MODIS = MODIS; diff --git a/assets/js/data-scouts.js b/assets/js/data-scouts.js new file mode 100644 index 0000000..e731622 --- /dev/null +++ b/assets/js/data-scouts.js @@ -0,0 +1,42 @@ +/* ===================================================================== + data-scouts.js — Scout-Datenobjekt + Scouts arbeiten mit Dogfather als Manager zusammen (Spicy Media), + 50/50 Gewinn-Sharing-Modell (Details siehe manager.html / TODO). + + NEUEN SCOUT HINZUFÜGEN: einfach ein neues Objekt unten ins Array + kopieren und Felder ausfüllen. Kein Code-Umbau nötig — team-scouts.html + liest dieses Array automatisch aus. + + Felder: + name – Anzeigename (Groß-/Kleinschreibung korrekt!) + role – Kurzrolle / Fokus + photo – Pfad zu assets/img/... oder "" für Platzhalter-Avatar + quote – kurzes Zitat/Motto (optional, "" wenn keins) + social – { platform: "url", ... } optional + status – "aktiv" | "neu" | "pausiert" + ===================================================================== */ + +const SCOUTS = [ + { + name: "Patrick", + role: "Scout — Team Dogi", + photo: "", + quote: "", // TODO: Zitat von Patrick einholen + social: {}, + status: "aktiv", + }, + { + name: "Bananenstift", + role: "Scout — Team Dogi", + photo: "", + quote: "", // TODO: Zitat von Bananenstift einholen + social: {}, + status: "aktiv", + }, + // TODO: Dogi liefert die vollständige, aktuelle Scout-Liste (Namen + + // Kurzrolle) per Text nach — hier weitere Objekte nach obigem Muster + // ergänzen. Struktur bleibt gleich, egal wie viele dazukommen. +]; + +// Für + + + diff --git a/cloudflare-worker/README.md b/cloudflare-worker/README.md new file mode 100644 index 0000000..c609de2 --- /dev/null +++ b/cloudflare-worker/README.md @@ -0,0 +1,72 @@ +# DOGFATHER UNIVERSE — Bewerbungs-Postfach (Cloudflare Worker) + +Dieser Worker nimmt Bewerbungen von `bewerben.html` entgegen und speichert sie in Cloudflare KV. +Nur wer den richtigen Code kennt, kann sie über `postfach.html` einsehen — der Code wird +**serverseitig** geprüft (nicht im Browser-Code sichtbar), das ist der eigentliche Schutz. + +Kosten: läuft im kostenlosen Cloudflare-Tier (Workers Free + KV Free reichen für dieses Volumen locker). + +## Voraussetzungen + +- Ein (kostenloser) Cloudflare-Account +- Node.js installiert (für `npx wrangler`) + +## Deploy in 5 Schritten + +Alles im Ordner `cloudflare-worker/` ausführen: + +```bash +cd cloudflare-worker + +# 1. Bei Cloudflare einloggen (öffnet Browser zur Anmeldung) +npx wrangler login + +# 2. KV-Namespace anlegen (Speicher für die Bewerbungen) +npx wrangler kv namespace create BEWERBUNGEN +``` + +Die Ausgabe von Schritt 2 enthält eine `id = "..."`. Diese `id` in `wrangler.toml` bei +`REPLACE_ME` eintragen. + +```bash +# 3. Geheimen Zugangscode für das Postfach festlegen +# (wird abgefragt, nirgends im Code sichtbar — frei wählbar, z.B. ein langes Passwort) +npx wrangler secret put POSTFACH_CODE + +# 4. Worker deployen +npx wrangler deploy +``` + +Schritt 4 gibt eine URL aus, z.B. `https://dogfather-universe-postfach..workers.dev`. + +```bash +# 5. Kurz testen +curl https://dogfather-universe-postfach..workers.dev/health +# sollte {"ok":true,"service":"dogfather-universe-postfach"} zurückgeben +``` + +## Website mit dem Worker verbinden + +Nach dem Deploy die Worker-URL an zwei Stellen eintragen: + +1. `assets/js/forms.js` → Konstante `API_BASE_URL` ganz oben auf die Worker-URL setzen + (ohne abschließenden Slash). +2. `postfach.html` → Konstante `API_BASE_URL` im ` + + diff --git a/creator.html b/creator.html new file mode 100644 index 0000000..27ce59d --- /dev/null +++ b/creator.html @@ -0,0 +1,93 @@ + + + + + +Creator im Team — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Manager Dogfather — Team +

Creator im Team

+

Content Creator, die bei Spicy Media / Team Dogi mitmachen.

+
+
+ +
+
+
+
+
+ TODO: Noch keine Creator-Profile final geklärt. Sobald Namen/Infos feststehen, in assets/js/data-creator.js ergänzen — diese Seite rendert automatisch. +
+ +
+
+
+ + + + + + + diff --git a/dogfather.html b/dogfather.html new file mode 100644 index 0000000..6056715 --- /dev/null +++ b/dogfather.html @@ -0,0 +1,99 @@ + + + + + +Die Person hinter Dogfather — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Welt 1 — Dogfather +

Die Person hinter Dogfather

+

Dogi, Hasidog — der Mensch hinter der Kamera.

+
+
+ +
+
+
+ Profilbild Dogfather
Foto folgt (assets/img/dogfather-portrait.jpg) +
+
+

Wer ist Dogfather?

+

Content Creator, Streamer auf TikTok (@dogfather0804) und das Herz einer wachsenden Community.

+

An seiner Seite: Husky Casper und Kater Simba — treue Begleiter, die längst Teil der Marke geworden sind. Mit seinem Core-Team baut Dogfather jeden Tag daran, dass sich Menschen in seiner Community nicht allein fühlen.

+
+ Hinweis zur Privatsphäre: Auf dieser Website wird ausschließlich der Persona-Name „Dogfather / Dogi" veröffentlicht — keine echten bürgerlichen Daten (kein Nachname, kein genaues Alter, keine genaue Herkunft). +
+
+
+
+ +
+
+

Persönlichkeit

+
+

Loyal

Passt auf jeden in seinem Team und seiner Community auf.

+

Witzig

Humor ist seine Sprache — auf und abseits der Kamera.

+

Immer erreichbar

Ein offenes Ohr für die Community, jederzeit.

+

Verpeilt & lustig

Chaotisch-kreativ, aber mit viel Herz — genau das macht den Charme aus.

+
+
+
+ +
+
+

Werte & Antrieb

+
+
+

🩵 Mission

+

Jeder soll lächeln und sich nicht allein fühlen. Das ist der Antrieb hinter allem, was Dogfather macht.

+
+
+

🐾 Team Dogi ist Familie

+

Nicht nur Content, sondern echte Beziehungen. Entertainer, Vertrauter, Zuhörer — mit Herz und Ehrlichkeit.

+
+
+
+
+ +
+
+

Nebenprojekte & Leidenschaften

+
+

🎵 Musik-Produzent

Eigene Songs unter dem Namen „Hasidog" auf Spotify.

+

🧸 Merchandise-Creator

Tassen, Decken, Popsockets, Schlüsselanhänger, Sticker.

+

📖 Autor

Ein Buch über Hasidog & Casper.

+
+
+ TODO: Weitere persönliche Details, Anekdoten und Insider-Fragen aus dem Masterplan-Fragenkatalog (Block „Über Dogfather") werden hier iterativ ergänzt, sobald sie mit Dogi geklärt sind. +
+
+
+
+ + + + + diff --git a/hasidog.html b/hasidog.html new file mode 100644 index 0000000..91c8354 --- /dev/null +++ b/hasidog.html @@ -0,0 +1,71 @@ + + + + + +HasiDog-Welt — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Welt 2 — HasiDog +

Willkommen in der HasiDog-Welt

+

Babyblau, Silber, Nachtblau — verspielt, warm und familiär.

+
+
+ +
+
+
+ HasiDog Logo / Maskottchen
Foto folgt (assets/img/hasidog-logo.jpg) +
+
+

Was ist HasiDog?

+

HasiDog ist mehr als ein Spitzname — es ist die verspielte, familiäre Marke rund um Dogfathers Community. Unter dem Namen „Hasidog" erscheint auch die eigene Musik auf Spotify.

+ +
+
+
+ +
+
+

Die HasiDog-Familie

+
+

🎵 Musik

Songs unter dem Namen „Hasidog" auf Spotify.

+

🐕 Casper

Der Husky, der zum Gesicht der HasiDog-Welt wurde — eigene Seite: Kasper.

+

📖 Buch

„Hasidog & Casper" — die Geschichte in Buchform.

+
+
+ TODO: Herkunftsgeschichte des Maskottchens, Design-Beschreibung des Logos und weitere HasiDog-Lore aus dem Masterplan werden hier ergänzt. +
+
+
+
+ + + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..ec1c1f2 --- /dev/null +++ b/index.html @@ -0,0 +1,94 @@ + + + + + +DOGFATHER UNIVERSE — Streamer. Community. HasiDog. Manager. + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+
+

🐾 Team Dogi ist Familie

+

Unsere Mission: Jeder soll lächeln und sich nicht allein fühlen.

+
+
+

🎥 TikTok @dogfather0804

+

Halligalli, Eindeutig Zweideutig & Hasencontent — Content mit Herz und Humor.

+
+
+

🎵 Musik: Hasidog & Van-Van

+

Eigene Musikprojekte auf Spotify — von Dogfather und VanVan.

+
+
+
+
+ +
+
+ Neu in der Community? +

Schau dir an, wer Team Dogi ausmacht

+

Von den Scouts über die Modis bis zu VanVan — lerne die Menschen hinter Dogfather kennen.

+ +
+
+
+ + + + + diff --git a/kasper.html b/kasper.html new file mode 100644 index 0000000..9db6c7a --- /dev/null +++ b/kasper.html @@ -0,0 +1,72 @@ + + + + + +Kasper — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Welt 2 — HasiDog +

Kasper 🐾

+

Der Husky an Dogfathers Seite — Namensgeber vieler Herzen in der Community.

+
+
+ +
+
+
+ Foto: Casper
Foto folgt (assets/img/casper-1.jpg — ggf. aus HEIC konvertieren) +
+
+

Wer ist Kasper?

+

Husky Casper ist einer von Dogfathers treuen Begleitern und längst Teil der Marke geworden. Zusammen mit Kater Simba gehört er zur „Familie" hinter der Kamera.

+

Die gemeinsame Geschichte von Dogfather und Casper gibt es sogar als Buch: „Hasidog & Casper".

+
+
+
+ +
+
+

Casper-Galerie

+
+
Casper Foto 1
+
Casper Foto 2
+
Casper Foto 3
+
Casper & Simba
+
+
+ TODO: Echte Casper-Fotos einbinden (HEIC → JPG/WebP konvertieren, dann in assets/img/ ablegen und hier bzw. in gallery.js verlinken). +
+ +
+
+
+ + + + + diff --git a/kontakt.html b/kontakt.html new file mode 100644 index 0000000..a2ebed0 --- /dev/null +++ b/kontakt.html @@ -0,0 +1,89 @@ + + + + + +Kontakt & Rechtliches — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Kontakt +

Kontakt & Rechtliches

+
+
+ +
+
+
+

Kontakt

+

Für Anfragen zu Kooperationen, Presse oder allgemeine Fragen:

+

kontakt@dogfather-universe.example

+

TODO: echte Kontakt-E-Mail eintragen (auch in assets/js/forms.jsCONTACT_EMAIL anpassen).

+
+
+

Social

+

Alle Kanäle findest du gesammelt auf der Links-Seite.

+
+
+
+ +
+
+

Impressum

+
+ WICHTIG — offene rechtliche Frage: Ein Impressum ist in Deutschland/EU für + geschäftlich genutzte Websites gesetzlich vorgeschrieben (§5 TMG bzw. Nachfolgeregelungen) + und verlangt Angaben wie Name, ladungsfähige Anschrift und Kontakt des Betreibers. Das steht + im Spannungsfeld zur Entscheidung „nur Persona-Name, keine echten bürgerlichen Daten + öffentlich". Mögliche Lösungswege (mit Dogi klären, bevor die Seite live geht): +
1) Impressum über die Spicy-Media-Firmendaten statt Privatperson, +
2) rechtliche Beratung einholen, welche Mindestangaben nötig sind, +
3) vorerst nur lokal/offline nutzen, bis das geklärt ist. +
+

Platzhalter-Struktur (mit echten Daten zu befüllen, sobald geklärt):

+

+ Angaben gemäß § 5 TMG
+ [Firmenname / Betreiber] — TODO
+ [Anschrift] — TODO
+ [Kontakt] — TODO
+ Vertreten durch: [Name] — TODO +

+
+
+ +
+
+

Datenschutz

+

Diese Website wird aktuell lokal/offline entwickelt und ist noch nicht öffentlich gehostet. Sobald ein Hosting-Anbieter feststeht und Formulare (z.B. Bewerbung) echte Daten versenden, wird hier eine vollständige Datenschutzerklärung ergänzt (Verarbeitungszwecke, Rechtsgrundlage, Speicherdauer, Empfänger, Rechte der Nutzer:innen).

+
+ TODO: Datenschutzerklärung final ausformulieren, sobald Hosting/Formular-Backend feststehen. +
+
+
+
+ + + + + diff --git a/links.html b/links.html new file mode 100644 index 0000000..a3b4656 --- /dev/null +++ b/links.html @@ -0,0 +1,95 @@ + + + + + +Alle Links — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ 🩵 Alle Links +

Alles an einem Ort

+

Ersatz für die Wonderlink-Seite — direkt Teil vom DOGFATHER UNIVERSE.

+
+
+ +
+ +
+ +
+
+

QR-Codes

+
+
+
QR: Scout-Bewerbung
assets/qr/scout-bewerbung-qr.png
+

Scout-Bewerbung

+
+
+
QR: DOGFATHER UNIVERSE
assets/qr/universe-qr.png
+

Diese Seite teilen

+
+
+
QR: Deine eigene Teilen-Seite
assets/qr/dogi-share-qr.png
+

Dogis persönlicher Teilen-Baustein

+
+
+
+ TODO: Vorhandenen QR-Code scout-qr-1785422377936.png nach assets/qr/scout-bewerbung-qr.png kopieren, sobald die Datei bereitsteht. Restliche Links (Spotify, Discord, Shop) mit echten URLs befüllen. +
+
+
+
+ + + + + diff --git a/manager.html b/manager.html new file mode 100644 index 0000000..2c59b0f --- /dev/null +++ b/manager.html @@ -0,0 +1,89 @@ + + + + + +Manager Dogfather — Spicy Media — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Welt 3 — Manager Dogfather +

Manager Dogfather bei Spicy Media

+

Professionell. Fair. Auf Augenhöhe mit Scouts und Creator.

+ +
+
+ +
+
+
+

Spicy Media Agency

+

Neben seiner Arbeit als Streamer ist Dogfather Manager bei der Spicy Media Agency. Er unterstützt Scouts und Creator dabei, gemeinsam zu wachsen — professionell, aber mit demselben Herz wie im restlichen DOGFATHER UNIVERSE.

+

Scouts arbeiten in einem 50/50 Gewinn-Sharing-Modell mit Dogfather zusammen.

+
+ TODO / zu bestätigen: Genaue Kommissions-/Gewinnbeteiligungs-Details sollen so öffentlich stehen? Bitte mit Dogi final absegnen, bevor die Seite live geht. +
+
+
+ Spicy Media Logo
Foto folgt (assets/img/spicy-media-logo.jpg) +
+
+
+ +
+ +
+ +
+
+

Willst du dazugehören?

+

Als Creator, Scout oder Kooperationspartner — bewirb dich direkt.

+ Zur Bewerbung +
+
+
+ + + + + diff --git a/medien.html b/medien.html new file mode 100644 index 0000000..d469b36 --- /dev/null +++ b/medien.html @@ -0,0 +1,57 @@ + + + + + +Medien-Galerie — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Medien +

Galerie

+

Bilder aus allen drei Welten — filterbar nach Kategorie.

+
+
+ +
+
+ + +
+ TODO: Echte Fotos aus den vom User gelieferten Assets in assets/img/ ablegen und Pfade in assets/js/gallery.js (MEDIA-Array) eintragen. HEIC-Dateien (z.B. Casper-Fotos) vorher nach JPG/WebP konvertieren. +
+
+
+
+ + + + + + + + diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 0000000..1650c21 --- /dev/null +++ b/netlify.toml @@ -0,0 +1,13 @@ +# DOGFATHER UNIVERSE — Netlify-Konfiguration +# Nur relevant, falls Netlify als Hosting gewählt wird (siehe DEPLOY.md). +# GitHub Pages / Cloudflare Pages brauchen diese Datei nicht. + +[build] + publish = "." + +[[redirects]] + from = "/*" + to = "/404.html" + status = 404 + +# Sicherheits-Header liegen in _headers (funktioniert auch auf Cloudflare Pages) diff --git a/postfach.html b/postfach.html new file mode 100644 index 0000000..089cff0 --- /dev/null +++ b/postfach.html @@ -0,0 +1,156 @@ + + + + + + +Postfach — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ 🔒 Intern +

Bewerbungs-Postfach

+

Nur für Dogfather & ausgewählte Personen mit Code.

+
+
+ +
+
+
+
+ + +
+ +
+
+ +
+ Noch nicht aktiv: Dieses Postfach ist erst nutzbar, sobald der + Cloudflare-Worker deployed und die Worker-URL in dieser Datei + (API_BASE_URL, ganz unten im Script) sowie in + assets/js/forms.js eingetragen ist. Anleitung: + cloudflare-worker/README.md. +
+
+
+ + +
+ + + + + + diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..9a65a83 --- /dev/null +++ b/robots.txt @@ -0,0 +1,10 @@ +# DOGFATHER UNIVERSE — robots.txt +# TODO: sobald die Domain feststeht, die Sitemap-Zeile unten mit der +# echten Domain aktivieren (siehe sitemap.xml TODO). + +User-agent: * +Allow: / +Disallow: /postfach.html +Disallow: /cloudflare-worker/ + +Sitemap: https://REPLACE-WITH-YOUR-DOMAIN.tld/sitemap.xml diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..8671383 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,25 @@ + + + + https://REPLACE-WITH-YOUR-DOMAIN.tld/index.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/dogfather.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/streamer.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/streamplan.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/community.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/hasidog.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/kasper.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/aktionen.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/zeitreise.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/medien.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/videos.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/links.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/manager.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/werte.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/team-scouts.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/team-modis.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/vanvan.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/creator.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/stimmen.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/bewerben.html2026-07-30 + https://REPLACE-WITH-YOUR-DOMAIN.tld/kontakt.html2026-07-30 + diff --git a/stimmen.html b/stimmen.html new file mode 100644 index 0000000..6dc134f --- /dev/null +++ b/stimmen.html @@ -0,0 +1,61 @@ + + + + + +Stimmen über Dogfather — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Welt 2 — HasiDog +

Stimmen über Dogfather

+

Was Community und Team sagen.

+
+
+ +
+
+
+

„Platzhalter-Zitat — echtes Testimonial folgt."

+

— Community-Mitglied (TODO: Name/Erlaubnis einholen)

+
+
+

„Platzhalter-Zitat — echtes Testimonial folgt."

+

— Team-Mitglied (TODO)

+
+
+

„Platzhalter-Zitat — echtes Testimonial folgt."

+

— Scout/Creator (TODO)

+
+
+
+ TODO: Echte Testimonials von Community, Team, Scouts und Creator sammeln (mit Einverständnis zur Veröffentlichung). Bis dahin bleiben hier Platzhalter stehen. +
+
+
+ + + + + diff --git a/streamer.html b/streamer.html new file mode 100644 index 0000000..3615461 --- /dev/null +++ b/streamer.html @@ -0,0 +1,93 @@ + + + + + +Dogfather als Streamer — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Welt 1 — Dogfather +

Dogfather als Streamer

+

TikTok @dogfather0804 — Halligalli, Humor und ganz viel Community.

+ +
+
+ +
+
+

Content-Säulen

+
+
+ Kern +

Halligalli, Spaß & Humor

+

Content der Menschen zum Lachen bringt — der Kern von allem, was Dogfather macht.

+
+
+ Frech +

Eindeutig Zweideutig

+

Suggestiver, frecher Humor, der bewusst mit Grenzen spielt.

+
+
+ Chaos +

Hasencontent

+

Pranks, Überraschungen und lustig-verpeilte Vibes — Leute werden liebevoll „hops genommen".

+
+
+
+
+ +
+
+
+

Warum schauen Menschen zu?

+

Weil hier niemand nur zuschaut, sondern dazugehört. Dogfather ist loyal, witzig, konfliktscheu aber direkt wenn es drauf ankommt — und immer erreichbar für seine Community.

+
+ TODO (Masterplan Block D — Streamformate/Insider): Konkrete Streamformate, wiederkehrende Segmente, Running Gags und Insider-Begriffe werden hier ergänzt, sobald die entsprechenden Fragen aus dem 110-Fragen-Katalog mit Dogi geklärt sind. +
+
+
+ Stream-Szene / Highlight-Bild
Foto folgt (assets/img/streamer-highlight.jpg) +
+
+
+ +
+
+

Mehr sehen

+ +
+
+
+ + + + + diff --git a/streamplan.html b/streamplan.html new file mode 100644 index 0000000..6655a1b --- /dev/null +++ b/streamplan.html @@ -0,0 +1,59 @@ + + + + + +Streamplan & Livebereich — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Welt 1 — Dogfather +

Streamplan & Livebereich

+

Wann ist Dogfather live?

+ +
+
+ +
+
+

Wochenplan

+
+

Montag

TODO: Uhrzeit/Format

+

Mittwoch

TODO: Uhrzeit/Format

+

Freitag

TODO: Uhrzeit/Format

+

Sonntag

TODO: Uhrzeit/Format

+
+
+ TODO: Echte Streamtage/-zeiten und Formate mit Dogi klären (Masterplan Block D) und hier eintragen. +
+
+
+
+ + + + + diff --git a/team-modis.html b/team-modis.html new file mode 100644 index 0000000..2f9c40e --- /dev/null +++ b/team-modis.html @@ -0,0 +1,83 @@ + + + + + +Modi-Team — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Manager Dogfather — Team +

Das Modi-Team

+

Das Rückgrat von Team Dogi — von VanVan bis Michi.

+
+
+ +
+
+
+ Hervorgehoben +
+
+

VanVan 🩵

+

Rechte Hand von Dogfather · Musik-Produzentin

+

VanVan ist nicht nur die rechte Hand von Dogfather, sondern auch seine beste Freundin. Sie bekommt täglich alle Neuigkeiten und Aufgaben und delegiert oder organisiert gemeinsam mit Diene.

+ VanVans exklusive Seite → +
+
+ VanVan Profilbild
Foto folgt +
+
+
+ +

Team-Hierarchie

+
+ +
+ Hinweis: Reihenfolge/Rollen basieren auf: VanVan (rechte Hand) → Diene (rechte Hand von VanVan) → Funny (Modi) → Miss (Modi + Cutterin) → Marina/Michi (Clip-Account-Kommentare). Änderungen einfach in assets/js/data-modis.js pflegen. +
+
+
+
+ + + + + + + diff --git a/team-scouts.html b/team-scouts.html new file mode 100644 index 0000000..e22cd30 --- /dev/null +++ b/team-scouts.html @@ -0,0 +1,67 @@ + + + + + +Scout-Team — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Manager Dogfather — Spicy Media +

Unser Scout-Team

+

Sie finden und begleiten neue Talente für Team Dogi — mit 50/50 Gewinn-Sharing.

+
+
+ +
+
+
+
+ TODO: Dogi liefert die vollständige, aktuelle Scout-Liste per Text nach — assets/js/data-scouts.js ist so gebaut, dass neue Scouts einfach als Objekt ergänzt werden können, ohne dass diese Seite verändert werden muss. +
+ +
+
+
+ + + + + + + diff --git a/vanvan.html b/vanvan.html new file mode 100644 index 0000000..7cc1c35 --- /dev/null +++ b/vanvan.html @@ -0,0 +1,71 @@ + + + + + +VanVan — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ 🩵 Exklusive Seite +

VanVan

+

Rechte Hand von Dogfather. Beste Freundin. Musik-Produzentin.

+
+
+ +
+
+
+ VanVan Profilbild
Foto folgt (assets/img/vanvan-portrait.jpg) +
+
+

Wer ist VanVan?

+

VanVan ist die rechte Hand von Dogfather — und seine beste Freundin. Sie bekommt täglich die Neuigkeiten, Aufgaben und Infos direkt von ihm und verteilt bzw. delegiert sie im Team, oder organisiert gemeinsam mit Diene.

+

Neben ihrer Rolle im Team ist VanVan auch Musik-Produzentin — ihre Songs erscheinen unter dem Namen Van-Van auf Spotify.

+
+
+
+ +
+
+

Was VanVan ausmacht

+
+

🩵 Vertrauen

Die engste Vertraute von Dogfather im Team.

+

🗂️ Organisation

Behält den Überblick und delegiert an das richtige Teammitglied.

+

🎵 Musik

Produziert eigene Songs als „Van-Van" auf Spotify.

+
+
+ TODO: Persönliches Zitat, Story und Social-Links von VanVan noch einholen (siehe Masterplan-Fragenkatalog, Block Team). +
+ +
+
+
+ + + + + diff --git a/videos.html b/videos.html new file mode 100644 index 0000000..5b00327 --- /dev/null +++ b/videos.html @@ -0,0 +1,63 @@ + + + + + +Video-Highlights — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Medien +

Video-Highlights

+

Die besten Momente von TikTok & Co.

+
+
+ +
+
+
+
+
Video folgt
TikTok-Embed / Link TODO
+

Highlight #1

+
+
+
Video folgt
TikTok-Embed / Link TODO
+

Highlight #2

+
+
+
Video folgt
TikTok-Embed / Link TODO
+

Highlight #3

+
+
+
+ TODO: Echte TikTok-Video-Links/Embeds ergänzen, sobald ausgewählt. Struktur ist bereit für TikTok-Embed-Code oder direkte Video-Dateien. +
+
+
+
+ + + + + diff --git a/werte.html b/werte.html new file mode 100644 index 0000000..b08ed10 --- /dev/null +++ b/werte.html @@ -0,0 +1,78 @@ + + + + + +Werte als Manager — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Welt 3 — Manager Dogfather +

Werte als Manager

+

Professionell. Fair. Mit Herz — auch im Business.

+
+
+ +
+
+
+
+

🤝 Fairness

+

Zusammenarbeit auf Augenhöhe — z.B. das 50/50 Gewinn-Sharing-Modell mit Scouts.

+
+
+

📈 Wachstum ermöglichen

+

Scouts und Creator werden aktiv unterstützt, statt allein gelassen.

+
+
+

🩵 Loyalität

+

Dieselbe Loyalität, die Dogfather für seine Community lebt, gilt auch fürs Team bei Spicy Media.

+
+
+

🎯 Direktheit

+

Konfliktscheu, aber wenn nötig klar und direkt — für ehrliche, verlässliche Zusammenarbeit.

+
+
+

🧭 Professionalität

+

Trotz lockerem Ton: klare Prozesse, verlässliche Kommunikation, echtes Engagement.

+
+
+

🐾 Familie im Business

+

Team Dogi ist Familie — dieses Prinzip gilt auch im geschäftlichen Teil des Universums.

+
+
+
+ TODO: Weitere konkrete Grundsätze/Richtlinien aus dem Masterplan (Block Manager-Werte) ergänzen. +
+ +
+
+
+ + + + + diff --git a/zeitreise.html b/zeitreise.html new file mode 100644 index 0000000..b148380 --- /dev/null +++ b/zeitreise.html @@ -0,0 +1,81 @@ + + + + + +Zeitreise — DOGFATHER UNIVERSE + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Welt 1 — Dogfather +

Zeitreise

+

Die Geschichte von Dogfather & Team Dogi.

+
+
+ +
+
+
+
+
TODO: Datum
+

Start als Content Creator

+

Die ersten Schritte auf TikTok. TODO: genaues Datum & Story ergänzen.

+
+
+
TODO: Datum
+

HasiDog entsteht

+

Aus dem Spitznamen wird eine eigene Marke — inkl. Musikprojekt auf Spotify.

+
+
+
TODO: Datum
+

Start als Manager bei Spicy Media

+

Dogfather übernimmt die Manager-Rolle, erste Scouts und Creator kommen dazu.

+
+
+
TODO: Datum
+

Buch „Hasidog & Casper"

+

Die Geschichte von Dogfather und seinem Husky wird zum Buch.

+
+
+
TODO: Datum
+

Kooperation VanVan Teddys

+

Merchandise-Kooperation rund um VanVan startet.

+
+
+
2026
+

DOGFATHER UNIVERSE geht online

+

Die eigene Website vereint alle drei Welten erstmals an einem Ort.

+
+
+
+ TODO: Echte Meilensteine & Daten aus dem Masterplan-Fragenkatalog (Block Zeitreise) ergänzen — Struktur/Timeline-Komponente steht bereits. +
+
+
+
+ + + + +