- nginx-Proxy POST /api/mail/send -> mp-mail-api:8080 (nur POST, 64k Limit) - Token serverseitig via envsubst-Template + portal.env (gitignored, nur Server) - src/lib/mail.ts: fire-and-forget Versand, Empfaenger-Aufloesung (Verwaltung/Mieter) - Benachrichtigung: neue Schadensmeldung -> Verwaltung, Nachrichten/Antworten -> Gegenstelle - E2E live verifiziert (versandt: true an axel@hocks.eu), GET 403 - Doku (kimi.md, README) nachgefuehrt
Hinterstein Immobilien · Mieterportal
Mieterportal der Hinterstein Immobilien für 50 Wohnungen in 3 Häusern (Hauptstraße 12 ·
Ringweg 3 · Am Park 5) – analog zum Schulportal.
Live-Ziel: https://mieterportal.hocks.eu.
Module
- Dashboard – persönliche Übersicht (Mieter) bzw. Kennzahlen, Belegung und Einnahmen (Verwaltung)
- Benutzerverwaltung (nur Verwaltung) – Konten anlegen/pflegen, Registrierungscodes erzeugen
- Mietkonto & Zahlungen – Buchungsverlauf, offene Forderungen, Nebenkosten; Verwaltung sieht Zahlungsstatus aller 50 Wohnungen
- Schadensmeldungen – Tickets erfassen, priorisieren und Status pflegen
- Dokumente – Verträge, Abrechnungen, Hausordnung; zentraler Such- und Filterzugriff
- Nachrichten – Direktkommunikation Mieter ↔ Verwaltung
Anmeldung erforderlich – Gruppen: Verwaltung und Mieter (Registrierung der Mieter per Code auf der Startseite).
Demo-Zugänge (Passwort jeweils 0815): j.hinterstein (Verwaltung) · a.berger (Mieterin) · Demo-Registrierungscode: MP-2026-0815.
Alle Demo-Daten werden lokal im Browser (localStorage) gespeichert. Dark-Mode-Umschalter
in der Seitenleiste bzw. Mobilen Kopfzeile.
Entwicklung
npm install
npm run dev # http://localhost:3000
npm run build # Produktionsbuild nach dist/
python beispieldaten.py # generiert src/data/generated.json (Seed wählbar)
Projekt-Kontext für Kimi Work: kimi.md.
Deployment (bewährter Workflow, s. kimi.md Kap. 4)
./deploy.sh
baut das Frontend, lädt das dist/-Paket per pscp auf den Server (Port 38592,
Pageant-Key Z:\Devel\ssh\priv_ionos_hocks_vps.ppk) und startet den nginx-Container
mp-portal neu. TLS/Subdomain liefert der Nginx Proxy Manager (npm_default-Netz).
Alternativ lokal ohne Server: docker build -t mieterportal . && docker run -p 8080:80 mieterportal.
Mail-Stack & Benachrichtigungen
mail-server/ enthält den aus dem Schulportal übernommenen Aufbau: Postfix-Relay
(nur intern, kein offenes Relay) + schlanke Python-API. Konfiguration über
mail-server/mail.env (Vorlage: mail.env.example), nicht im Repo.
Auf dem Server läuft der Stack unter /opt/mp-mail. Das Portal ist verkabelt:
Der nginx des mp-portal-Containers proxiet ausschließlich POST /api/mail/send
an die Mail-API und authentifiziert sich dabei serverseitig mit dem Token aus
portal.env (nur auf dem Server, gitignored). Das Frontend benachrichtigt die
Verwaltung bei neuen Schadensmeldungen und die jeweilige Gegenstelle bei
Nachrichten – Versand fire-and-forget, ein Ausfall der Mail-API beeinträchtigt
das Portal nicht.