- Store setzt 'me' erst nach dem Laden der Bootstrap-Daten (Start, Login,
Registrierung) - vorher rendereten Seiten gegen leere Daten und brachen ab;
Seite lief erst nach manuellem Reload (Race zwischen setMe und ladeAlles)
- FehlerGrenze (ErrorBoundary) in App.tsx: Render-Fehler zeigen Hinweis +
Reload-Button statt schwarzem Bildschirm
- server/src/mail.js: baueHtmlMail/buttonHtml (600-px-Karte, Kopfzeile in
Hinterstein-Farben #22333b + Amber, Zeilen-Tabelle, Status-Box, Zitat-Box,
Aktions-Button 'Zum Mieterportal', Footer), immer mit Plain-Text-Fallback
- index.js: Ticket, neue Unterhaltung und Antwort versenden HTML + Text
(multipart/alternative ueber die Mail-API)
- Vorschauen: preview/08-mail-ticket.png, preview/08-mail-nachricht.png
- E2E live verifiziert (Zustellung an axel@hocks.eu, status=sent), Doku
- Rebrand: Kunden-Logo, Joseph-Hinterstein-Portrait, Kontakt-Banner, Texte
- Login-Pflicht auf /login (Route-Guard), Gruppen Verwaltung/Mieter
- Mieter-Registrierung per einmaligem Registrierungscode
- Benutzerverwaltung als 6. Modul (/benutzer, nur Verwaltung)
- Demo-Zugänge mit Passwort 0815 (j.hinterstein, a.berger, m.wolf)
- Mail-Server-API: Token-Auth (/send, X-Api-Token), Mail-Stack live auf Server
- Store-Key hinterstein-mieterportal-v2, Doku (kimi.md, README) nachgeführt