Files
dogfather-universe/community.html
T
DogFatherGitandClaude Opus 5 51c3d4402b Audit des Creator Workspace, App-Symbole fuer alle Apps der Domain
AUDIT (Auftrag: vollstaendiger Durchgang, Fehler direkt beheben)

Ausgangslage waren 40 Pruefungen mit 1616 Einzelpunkten, alle gruen.
Acht neue Pruefungen kamen dazu; sie haben gefunden, was die alten nicht
sehen konnten.

Der schwerste Fund: Die Zugangsschranke verglich req.path EXAKT gegen
eine Liste. Express raeumt Punkt-Segmente selbst weg, mehrfache
Schraegstriche aber nicht. Damit kam //workspace/start.html OHNE
Anmeldung mit HTTP 200, und ein Creator bekam ueber
/workspace//personen.html die Verwaltungsseite. Die DATEN waren nie
betroffen (nachgemessen: 404 bzw. 401). Behoben durch Normalisierung
UND eine Umkehr der Logik -- jetzt ist jede .html geschuetzt ausser der
Anmeldeseite, statt nur die in der Liste. Eine vergessene neue Seite
steht damit nicht mehr versehentlich offen.

Weiter behoben:
  * Kaputter/abgebrochener Rumpf ergab 500 in HTML statt 400 in JSON --
    die Oberflaeche ruft ueberall a.json() und lief in einen zweiten
    Fehler; der Knopf hing ohne Meldung.
  * POST /zustand/sichern war der einzige von 60 schreibenden Wegen
    ohne Herkunftspruefung.
  * workspace-sicherung.js gab interne Pfade in Fehlermeldungen nach
    aussen; alle 23 anderen Module antworten neutral.
  * admin_notiz war als einziges von 14 Feldern ohne <label>.
  * Der aktive Filter hatte keinen sichtbaren Fokus (CSS-Spezifitaet
    0,3,0 schlug 0,2,0) -- genau der Knopf, auf dem man steht.
  * h1 -> h3 ohne Zwischenstufe auf zwei Seiten.
  * HSTS ging auch ueber http mit (RFC 6797, 7.2 verbietet das).
  * upgrade-insecure-requests galt auch auf 127.0.0.1 -- dadurch war
    WebKit/Safari ueberhaupt nicht pruefbar, also der Browser, den
    jedes iPhone benutzt.
  * pruef-grosscheck las readdirSync(".") und pruefte aus server/
    gestartet NULL oeffentliche Seiten -- meldete aber "ok".

Neue Pruefungen: struktur, schranke, haerte, alle-wege,
barrierefrei-workspace, breiten, tempo-workspace, browser.
Jede mit Gegenprobe und mit der geprueften Anzahl in der Bedingung.
Vier davon sind beim Bauen durch die eigene Gegenprobe aufgeflogen und
haetten sonst dauerhaft gruen gemeldet, ohne etwas zu messen.

APP-SYMBOLE (Wunsch: alle Apps der Domain, jede anders, ausser
safeaddress)

Zehn Apps, zehn Stile, zehn in OKLCH gerechnete Farben. Zusammen haelt
sie dasselbe Logo, dieselbe Eckenrundung und eine gemeinsame gedeckte
Farbreihe. Beim Bauen wird gemessen, ob sich das Logo vom Grund abhebt
(19 bis 58 Helligkeitsstufen).

Dabei aufgefallen: Das Kundenportal hatte kein eigenes Manifest und
trug Namen und Symbol der Webdesign-Seite. Der Workspace hatte gar
keins und war als App nicht installierbar. Beide haben jetzt eins.

Geaendert wurde AUSSCHLIESSLICH das Symbol. Ein Zwischenstand hatte
auch die Themenfarben gesetzt; das war mehr als bestellt und wurde
zurueckgenommen.

Werkzeuge: tools/logo-freistellen.mjs, tools/app-symbole.mjs,
tools/app-symbole-einbinden.mjs -- alles im Browser gerechnet, kein
Bildprogramm, keine neue Abhaengigkeit.

Gitea und Nextcloud sind bereits live und nachgeprueft.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-05 11:42:17 +02:00

92 lines
7.0 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="de" data-theme="hasidog">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Die Community — DOGFATHER UNIVERSE</title>
<meta name="description" content="Team Dogi ist Familie — die Community rund um DogFather und HasiDog." />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/universe-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/universe-180.png" />
<link rel="manifest" href="/manifest.json" />
<meta name="theme-color" content="#0b0d10" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="DOGFATHER UNIVERSE" />
<meta property="og:title" content="Die Community — DOGFATHER UNIVERSE" />
<meta property="og:description" content="Team Dogi ist Familie — die Community rund um DogFather und HasiDog." />
<meta property="og:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
<meta property="og:url" content="https://dogfather-universe.com/community.html" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Die Community — DOGFATHER UNIVERSE" />
<meta name="twitter:description" content="Team Dogi ist Familie — die Community rund um DogFather und HasiDog." />
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
<link rel="stylesheet" href="assets/css/main.css?v=20260828e" />
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828e" />
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828e" />
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828e" />
</head>
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-community.jpg');--page-bg-mobile:url('/assets/img/bg-community-mobile.jpg');">
<div id="site-header"></div>
<main>
<section class="hero page-bg">
<div class="hero-banner"><img src="/assets/img/bg-community.jpg" alt="" loading="eager" /></div>
<div class="container">
<span class="eyebrow" data-i18n="com_eyebrow">Welt 2 — HasiDog</span>
<h1 data-i18n="com_h1">Die Community</h1>
<p class="lead worlds" data-i18n="com_lead">Team Dogi ist Familie 🩵</p>
</div>
</section>
<section class="section-tight">
<div class="container grid grid-2" style="align-items:center;">
<div>
<h2 data-i18n="com_mehr_h2">Mehr als Follower</h2>
<p data-i18n="com_mehr_1">Team Dogi soll niemals nur „DogFather und Follower" sein, sondern eine echte Gemeinschaft. Jeder verdient Spotlight 🩵</p>
<p data-i18n="com_mehr_2">Discord ist das Community-Zentrum — hier trifft man sich, tauscht sich aus und ist Teil des Alltags von Team Dogi.</p>
<a class="btn btn-primary" href="links.html" data-i18n="com_discord_btn">Discord beitreten</a>
</div>
<div class="collage-photo" style="aspect-ratio:3/4;border-radius:var(--radius);">
<img src="assets/img/community-team-dogi.jpg" alt="Diene, Ghost, VanVan und Dogi bei einem gemeinsamen Treffen von Team Dogi" style="width:100%;height:100%;object-fit:cover;object-position:center 25%;" />
</div>
</div>
</section>
<section class="section-tight">
<div class="container" style="max-width:70ch;">
<h2 class="text-center" data-i18n="com_story_h2">Team Dogi – mehr als eine Community 🩵</h2>
<p data-i18n="com_1">Meine Community ist nicht einfach nur eine Gruppe von Menschen, die sich regelmäßig in einem Livestream trifft. <strong>Team Dogi ist Familie.</strong></p>
<p data-i18n="com_2">Hier kommen Menschen zusammen, die unterschiedlicher kaum sein könnten – und trotzdem verbindet uns etwas ganz Besonderes: Loyalität, Ehrlichkeit, Respekt, Zusammenhalt und das Herz am richtigen Fleck.</p>
<p data-i18n="com_3">Bei uns darf jeder so sein, wie er wirklich ist. Niemand muss sich verstellen, niemand muss perfekt sein und niemand wird allein gelassen. Wir lachen zusammen, machen Blödsinn, unterstützen uns gegenseitig und stehen füreinander ein, wenn das Leben einmal nicht so läuft, wie es sollte.</p>
<p data-i18n="com_4">Natürlich sind wir manchmal laut, verrückt, chaotisch und komplett verpeilt. Aber genau das macht uns aus. Hinter jedem Spaß, jedem Insider und jedem verrückten Moment steckt eine Gemeinschaft, die zusammenhält – nicht nur während eines Lives, sondern auch weit darüber hinaus.</p>
<p data-i18n="com_5">Neue Menschen werden bei uns nicht einfach nur begrüßt. Sie werden aufgenommen, respektiert und Schritt für Schritt ein Teil unserer Truppe. Denn bei Team Dogi zählt nicht, woher du kommst, wie du aussiehst oder was andere über dich denken. Es zählt, welchen Charakter du hast, wie du mit anderen Menschen umgehst und ob dein Herz am richtigen Fleck sitzt.</p>
<p data-i18n="com_6">Wir feiern gemeinsam Erfolge, tragen gemeinsam schwere Zeiten und erinnern uns gegenseitig daran, niemals aufzugeben. Wenn einer fällt, helfen die anderen ihm wieder aufzustehen. Wenn einer lacht, lachen alle mit. Und wenn jemand Schutz, Rückhalt oder Unterstützung braucht, steht die gesamte Community hinter ihm.</p>
<p data-i18n="com_7">Was als TikTok-Live begonnen hat, ist längst zu etwas viel Größerem geworden: zu echten Freundschaften, besonderen Verbindungen und einer Familie, die man sich selbst ausgesucht hat.</p>
<p data-i18n="com_8">Wir sind nicht immer einer Meinung. Wir sind nicht immer leise. Und wir sind ganz sicher nicht normal. Aber wir sind echt, wir sind loyal und wir gehören zusammen.</p>
<p class="quote" data-i18n="com_quote" style="margin-top:1.4rem;">Das ist Team Dogi.<br>Das ist unsere Community.<br>Das ist Familie. 🩵</p>
<p style="text-align:right;"><strong data-i18n="com_signatur">– DogFather, im Namen von Team Dogi 🩵</strong></p>
</div>
</section>
<section>
<div class="container">
<h2 class="text-center" data-i18n="com_werte_h2">Werte der Community</h2>
<div class="grid grid-3">
<div class="card text-center"><h3 data-i18n="com_wert1_h3">🩵 Familie</h3><p data-i18n="com_wert1_p">Team Dogi ist Familie — niemand fühlt sich allein.</p></div>
<div class="card text-center"><h3 data-i18n="com_wert2_h3">🎉 Community-Treffen</h3><p data-i18n="com_wert2_p">Reale Treffen mit der Community, z.B. rund um Dogis Geburtstag.</p></div>
<div class="card text-center"><h3 data-i18n="com_wert3_h3">💬 Offenes Ohr</h3><p data-i18n="com_wert3_p">Immer erreichbar, immer präsent.</p></div>
</div>
<div class="btn-row" style="justify-content:center;">
<a class="btn btn-outline" href="medien-dogfather.html#events" data-i18n="com_aktionen_btn">Community-Aktionen ansehen</a>
<a class="btn btn-outline" href="stimmen.html" data-i18n="com_stimmen_btn">Stimmen aus der Community</a>
</div>
</div>
</section>
</main>
<div id="site-footer"></div>
<script src="assets/js/i18n-community.js?v=20260828e"></script>
<script src="assets/js/main.js?v=20260828e"></script>
</body>
</html>