Entwurf zur Abstimmung, noch nichts umgesetzt: Seitenstruktur beider Domains, Host-Routing statt zweitem Deployment, geteilter Login über .d4rkst3r.de, Weiterleitungen für alte Permalinks, zwei URL-Einstellungen statt einer. Enthält auch die Abwägung zur Repo-Frage: getrennte Repositories würden bedeuten, dass der Hub für alles, was heute direkter Zugriff ist (Rollen holen und setzen, Wünsche posten, Monitor-Ergebnisse, Devlogs, Level), HTTP-Schnittstellen zum Bot braucht — die Web-API nutzt an 33 Stellen den laufenden Discord-Client. Vorschlag stattdessen: ein Repo mit getrennten Frontend-Ordnern (shared/hub/bot) und zwei Builds. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
7.1 KiB
Konzept: Bot-Produktseite und Community-Hub trennen
Stand: 31.07.2026 · Entwurf zur Abstimmung, noch nichts umgesetzt.
Warum
Heute liegt alles auf bot.d4rkst3r.de: Devlogs, Roadmap, Galerie, Level,
Events, Member-Profile — und die Bot-Einstellungen. Die Adresse führt in die
Irre. Wer bot. liest, erwartet eine Bot-Dokumentation und klickt vielleicht
gar nicht erst, obwohl dahinter der Community-Hub steckt.
Vorbild sind MEE6 und Carl-bot: eine Produktseite erklärt den Bot und bietet das Dashboard — die Community-Inhalte leben woanders.
Aufteilung
bot.d4rkst3r.de — Produktseite
Zielgruppe: Leute, die wissen wollen, was der Bot kann, und du selbst zum Konfigurieren.
| Route | Inhalt |
|---|---|
/ |
Landing: „Das kann der Bot" — Hero, Feature-Kacheln, Einladen-Button |
/features |
Alle Funktionen ausführlich, gruppiert (Community, Moderation, Feeds, Server) |
/commands |
Slash-Command-Referenz, aus dem Code erzeugt |
/docs |
Kurzanleitungen: API v1, SSO, Webhooks, Design-System |
/dashboard |
die heutige Setup-Seite (Login + Berechtigung nötig) |
/impressum, /datenschutz |
Rechtstexte (auf beiden Domains identisch) |
Die 16 Slash-Commands, die es aktuell gibt: ping, bug, wunsch,
geburtstag, giveaway, rank, remind, tag, warn, warns, timeout,
purge, devlog-backfill, galerie-backfill, playtester-setup,
ticket-setup.
hub.d4rkst3r.de — Community
Zielgruppe: Member und Interessierte.
| Route | Inhalt |
|---|---|
/ |
Startseite mit Live-Zahlen, Bereichs-Kacheln, neuestem Devlog |
/devlogs, /devlogs/:id |
Archiv mit Volltextsuche und Permalinks |
/roadmap |
Meilensteine, Community-Wünsche, Heatmap |
/server |
Live-Status der Game-Server |
/galerie |
Community-Screenshots |
/level |
XP-Bestenliste und Aktivitäts-Chart |
/events |
Discord-Events |
/changelog |
Releases |
/profil |
eigenes Profil, Rollen-Selfservice, Datenlöschung |
/commits |
Commit-Archiv (nur Owner) |
/feed.xml |
RSS |
Ein Repo oder zwei?
Naheliegend wäre, für den Hub ein eigenes Repository anzulegen. Davon rate ich ab — nicht aus Bequemlichkeit, sondern weil die Community-Seite ohne den laufenden Bot gar nicht funktioniert:
/api/profileholt Rollen und Beitrittsdatum live überguild.members.fetch()/api/myroles/togglevergibt Discord-Rollen über den ClientPOST /api/wishespostet den Wunsch als Embed in den Voting-Kanal/api/serversliest die letzten Monitor-Ergebnisse aus dem Arbeitsspeicher des Bot-Prozesses- Devlogs, Level, Galerie, Commits und Events kommen direkt aus der SQLite-Datei, die der Bot schreibt
Insgesamt greift die Web-API an 33 Stellen auf den laufenden Discord-Client zu. Bei getrennten Repos müsste all das über HTTP laufen: Der Hub bräuchte für jede dieser Stellen einen API-Endpunkt beim Bot, dazu Authentifizierung, Fehlerbehandlung und Zeitüberschreitungen. Die Alternative — beide Anwendungen schreiben dieselbe SQLite-Datei — funktioniert nur auf demselben Host und ist bei gleichzeitigen Schreibzugriffen fehleranfällig.
Das hieße: deutlich mehr Code, zwei Deployments, zwei Update-Zyklen — für einen Betreiber, der alles allein pflegt.
Vorschlag stattdessen: ein Repository, aber sauber getrennte Ordner.
src/ Bot, API, Datenbank (unverändert)
frontend/
shared/ Design-System, Icons, gemeinsame Komponenten
hub/ Community-Seite → eigener Build
bot/ Produktseite → eigener Build
Zwei getrennte Builds, ein Server liefert je nach Domain den passenden aus. Das gibt die gewünschte Klarheit — jede Seite hat ihren eigenen Ordner und ihr eigenes Bundle — ohne die Kosten einer echten Trennung. Und falls du den Hub später doch herauslösen willst, ist die Grenze dann schon gezogen.
Technischer Ansatz
Eine Anwendung, zwei Gesichter. Ein Container, eine Datenbank. Der Server
erkennt am Host-Header, welche Seite gefragt ist:
- Backend (
src/web/server.js): liefert je nach Host die passenden Open-Graph-Tags aus. Die Injektion dafür gibt es schon, sie bekommt nur eine Fallunterscheidung. - Frontend: zwei Builds aus
frontend/hub/undfrontend/bot/, die sich Design-System und Komponenten ausfrontend/shared/teilen. Der Server liefert je nach Domain das passendeindex.htmlaus. - API bleibt unverändert und für beide Domains erreichbar.
Alte Links auffangen
Geteilte Devlog-Permalinks zeigen heute auf bot.d4rkst3r.de/devlogs/…. Diese
Adressen dürfen nicht ins Leere laufen: Ruft jemand eine Community-Route auf
der Bot-Domain auf, antwortet der Server mit einer dauerhaften Weiterleitung
(301) auf dieselbe Route unter hub.. Umgekehrt ebenso für /dashboard.
Login über beide Domains
Damit man sich nur einmal anmeldet, wird das Sitzungs-Cookie künftig für
.d4rkst3r.de gesetzt statt nur für bot.. Dann gilt es auf beiden
Subdomains.
Was das bedeutet: Das Cookie wird technisch auch an git. und cdn.
mitgesendet. Die ignorieren es, aber es verlässt damit die eine Anwendung.
Vertretbar ist das, weil es signiert und für JavaScript unlesbar ist
(httpOnly) — mitlesen könnte es nur, wer bereits Serverzugriff auf einer
Subdomain hat. Umgesetzt wird es als Einstellung, damit es sich zurückdrehen
lässt.
Neue Einstellungen
Heute gibt es genau eine „Öffentliche URL". Nach der Trennung braucht es zwei:
| Einstellung | Zweck |
|---|---|
hub_url |
Community-Adresse — speist Devlog-Buttons, RSS, Open-Graph-Bilder, brand-nav.js |
bot_url |
Produktseite — Ziel für Dashboard-Links und OAuth-Rücksprung |
Alles, was heute publicUrl() benutzt, wird auf hubUrl() umgestellt; nur die
Login-Umleitung und Dashboard-Verweise nutzen botUrl().
Was zu tun ist
- Kanban von
hub.entfernen — dort läuft noch das alte Board. - Proxy:
hub.d4rkst3r.deauf denselben Container zeigen lassen wiebot. - Discord-Portal: Redirect-URI für beide Domains eintragen
- Frontend in
shared/,hub/undbot/aufteilen, zwei Builds einrichten - Host-Routing in Backend und Frontend (siehe oben)
- Bot-Landing, Feature- und Command-Seite bauen
- Setup-Seite nach
/dashboardumhängen - Weiterleitungen für alte Links
- Cookie-Domain umstellen
hub_url/bot_urlin den Einstellungen ergänzen und alle Verwendungen umziehen
Schritte 1–3 machst du, 4–10 übernehme ich. Aufwand geschätzt: Schritt 4 und 5 sind der größte Block (Umbau der Ordnerstruktur), 6 ist reine Neuentwicklung, der Rest sind Kleinigkeiten.
Offene Fragen
- Soll die Bot-Seite den Bot zum Einladen anbieten? Ein „Auf deinen Server einladen"-Button hieße, dass Fremde den Bot nutzen können. Dafür müsste er mit mehreren Servern umgehen — aktuell ist er auf einen ausgelegt. Ohne Button wird die Seite zur Visitenkarte („so ist er gebaut"), was für ein Portfolio auch Sinn ergibt.
- Gehört
/commitsauf den Hub oder auf die Bot-Seite? Vorschlag: Hub, es gehört zur Projekt-Entwicklung. - Braucht die Bot-Seite eine eigene Farbnote, um sich vom Hub abzuheben — oder bleibt beides identisch gebrandet?