v1.1: Rebrand Hinterstein Immobilien + echtes Auth-System

- 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
This commit is contained in:
2026-10-02 12:11:43 +02:00
parent ccfe08ad24
commit fbe033ebd6
22 changed files with 1067 additions and 179 deletions
+3 -3
View File
@@ -58,7 +58,7 @@ function StatCard({
}
function TenantDashboard() {
const { demoUnit, transactions, tickets, threads, announcements } = useStore()
const { meineEinheit: demoUnit, me, transactions, tickets, threads, announcements } = useStore()
const myTx = transactions.filter((t) => t.unitId === demoUnit.id)
const openTx = myTx.filter((t) => t.status !== 'bezahlt')
const myTickets = tickets.filter((t) => t.unitId === demoUnit.id)
@@ -73,9 +73,9 @@ function TenantDashboard() {
<div className="space-y-6">
<div className="flex flex-wrap items-end justify-between gap-3">
<div>
<h1 className="text-2xl font-bold tracking-tight">Hallo, Frau Berger</h1>
<h1 className="text-2xl font-bold tracking-tight">Hallo, {me?.name}</h1>
<p className="text-sm text-slate-500">
Hauptstraße 12 · Wohnung {demoUnit.number} · {demoUnit.size} m²
{demoUnit.building} · Wohnung {demoUnit.number} · {demoUnit.size} m²
</p>
</div>
<div className="rounded-xl bg-amber-50 px-4 py-2 text-sm text-amber-800">