Diese Anwendung ist eine responsive Web-App mit Authentifizierung, Profilverwaltung und öffentlicher Profilansicht.
- Registrierung mit Verifizierungscode per E-Mail (
@tha.de) - Login mit E-Mail oder Benutzername
- Passwort-Reset mit Verifizierungscode
- Session-basierter Login (express-session)
- Profilbild hochladen/aktualisieren
- Vollständigen Namen und Benutzernamen bearbeiten
- Profilname (Anzeigename) setzen
- Frei wählbar (inkl. Sonderzeichen/Emoji)
- Maximal 20 Zeichen
- Optional (leer = keine Anzeige)
- Optionale Pronomen speichern (max. 30 Zeichen)
- Live-Zeichenzähler (
0/30) direkt unter dem Eingabefeld
- Live-Zeichenzähler (
- Optionale Bio speichern (max. 200 Zeichen, Zeilenumbrüche erlaubt)
- Live-Zeichenzähler (
0/200) direkt unter dem Eingabefeld
- Live-Zeichenzähler (
- Optionales Geburtsdatum speichern (
dd/mm/yyyy) - Sternzeichen-Icon im öffentlichen Profil anzeigen (wenn Geburtsdatum gesetzt ist)
- Klick auf das Sternzeichen-Icon öffnet den passenden Wikipedia-Artikel
- Optionalen Glauben speichern (Atheismus, Christentum, Islam, Judentum, Hinduismus, Buddhismus, Daoismus, Shintoismus)
- Im öffentlichen Profil erscheint ein passendes Glaubens-Icon
- Klick auf das Glaubens-Icon öffnet den passenden Wikipedia-Artikel
- Im öffentlichen Usermodal stehen Profilname und Pronomen zentriert nebeneinander, Pronomen in hellerer Darstellung
- Im öffentlichen Usermodal erscheint die Bio in einer Box unter „Follower | Folge ich“
- Akzentfarbe fürs Profil auswählen
- Konto löschen (mit Passwort-Bestätigung)
- Geschützte Projektkonten können nicht gelöscht werden
- Einloggen und Profil öffnen.
- Im Feld „Geburtsdatum“ einen Wert im Format
dd/mm/yyyyeintragen (z. B.21/03/2000) und speichern. - Das öffentliche Profil des Accounts öffnen.
- In der Username-Zeile prüfen: Direkt nach dem Link-Icon erscheint das Sternzeichen-Icon passend zum Datum.
- Optional im Feld „Glaube“ einen Eintrag auswählen und speichern.
- Im öffentlichen Profil prüfen: Das Glaubens-Icon erscheint nach dem Sternzeichen-Icon (oder nach dem Link-Icon, falls kein Geburtsdatum gesetzt ist) und öffnet beim Klick Wikipedia.
- Negativtest: Ungültiges Datum wie
31/02/2000oder falsches Format wie2000-03-21speichern → Validierungsfehler sollte angezeigt werden.
| Geburtsdatum | Erwartetes Sternzeichen |
|---|---|
21/03/2000 |
Widder |
15/08/1999 |
Löwe |
05/12/2001 |
Schütze |
10/01/1998 |
Steinbock |
- Wassermann:
20/01–18/02 - Fische:
19/02–20/03 - Widder:
21/03–19/04 - Stier:
20/04–20/05 - Zwillinge:
21/05–20/06 - Krebs:
21/06–22/07 - Löwe:
23/07–22/08 - Jungfrau:
23/08–22/09 - Waage:
23/09–22/10 - Skorpion:
23/10–21/11 - Schütze:
22/11–21/12 - Steinbock:
22/12–19/01
- Öffentliche Profilansicht für alle Accounts
- Profil-Link teilen/kopieren
- Follower/Folge ich-System
- Listenansicht für Follower und gefolgte Profile
- Live-Suche im Such-Modal
- Ergebnisse in getrennten Listen:
- Anzeigename
- Username
- Echter Name
- Klick auf Treffer öffnet direkt das jeweilige Profil
- Nur für eingeloggte Nutzer im Profil konfigurierbar
- Wird ausschließlich lokal im Browser gespeichert (nicht serverseitig synchronisiert)
- Upload-Limit: bis zu 25 MB
- Express-Server mit SQLite (Node.js built-in SQLite)
- Avatar-Uploads über Multer
- Inaktive Accounts werden serverseitig periodisch bereinigt
- Mailversand über SMTP oder Resend
- Frontend: HTML, CSS, JavaScript
- Backend: Node.js, Express
- Datenbank: SQLite
- Auth/Sessions: express-session
- Uploads: Multer
- Node.js 22+
npm install
npm startDanach im Browser öffnen:
http://localhost:3000
Für Entwicklung mit Auto-Reload:
npm run devLege eine .env im Projektverzeichnis an.
SESSION_SECRET=replace-this-in-productionSMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-account@gmail.com
SMTP_PASS=your16digitapppassword
SMTP_FROM=your-account@gmail.com
SESSION_SECRET=replace-this-in-productionRESEND_API_KEY=re_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
RESEND_FROM=noreply@deine-verifizierte-domain.de
SESSION_SECRET=dein-langer-geheimer-wertHinweis: Wenn RESEND_API_KEY gesetzt ist, werden SMTP_*-Variablen ignoriert.
- Auf Railway sollte für persistente Daten ein
DATA_DIRgesetzt werden. - Server-Logs zeigen beim Start, ob Mailversand korrekt konfiguriert ist.
Diese Checkliste prüft die zuletzt modularisierten Auth-Routen (auth.core, auth.profile, auth.admin) schnell manuell im Browser.
- Server starten:
npm run dev(odernpm start). - App öffnen:
http://localhost:3000. - Zwei Accounts bereithalten:
- normaler User
- Admin/Moderator für Ticket-Ansicht
- Login mit gültigen Daten.
- Erwartung: Erfolgreiche Anmeldung, kein Fehler-Toast.
- Session prüfen durch Seiten-Reload oder geschützte Ansicht.
- Erwartung: Nutzer bleibt eingeloggt (
/mefunktioniert intern).
- Erwartung: Nutzer bleibt eingeloggt (
- Bug melden (Profil/Modal → Bug-Formular) mit Text < 1000 Zeichen.
- Erwartung: Erfolgsmeldung „Bug erfolgreich gemeldet.“
- Negativtest Bug mit leerem Text.
- Erwartung: Validierungsfehler „Bitte beschreibe den Bug.“
- Öffentliches Profil öffnen (
/public/:usernamevia UI).- Erwartung: Profil lädt weiterhin normal.
- Folgen/Entfolgen testen.
- Erwartung: Zähler aktualisieren sich wie zuvor.
- Als Admin/Moderator anmelden.
- Person-Tickets öffnen und Tabs prüfen:
- Meldungen lädt Einträge oder leeren Zustand ohne Fehler.
- Bugs lädt Einträge oder leeren Zustand ohne Fehler.
- Freigaben lädt Einträge oder leeren Zustand ohne Fehler.
- Optional je einen Eintrag schließen/entscheiden.
- Erwartung: Eintrag verschwindet aus Liste, UI bleibt stabil.
POST /api/auth/login→200bei gültigen Daten.GET /api/auth/me→200mit Session, sonst401.POST /api/auth/report-bug→201bei gültiger Meldung.GET /api/auth/admin/bug-reports/:username→200für Admin/Moderator.
Wenn alle Punkte grün sind, ist der Router-Cleanup funktional konsistent.
- Weitere Suchkategorien/Objekttypen
- Ausbau der Ergebnisse und Relevanzlogik
- Zusätzliche Profil- und Community-Features