Schulportal-Konventionen übernommen: Dark Mode (ThemeToggle), beispieldaten.py + generated.json, kimi.md, mail-server (Postfix-Relay + API), Deploy-Workflow (pscp/plink, npm_default), Screenshots in preview/

This commit is contained in:
2026-10-02 10:46:10 +02:00
parent ca97ea028f
commit b3dfb8ab7c
27 changed files with 7284 additions and 163 deletions
+23 -12
View File
@@ -1,6 +1,8 @@
# Hocks Mieterportal
Mieterportal für die Verwaltung von 50 Wohnungen in 3 Häusern — analog zum Schulportal der Hocks-Gruppe.
Mieterportal der Hocks Verwaltung für **50 Wohnungen in 3 Häusern** (Hauptstraße 12 ·
Ringweg 3 · Am Park 5) – analog zum [Schulportal](https://git.hocks.eu/ah-admin/Schulportal).
Live-Ziel: `https://mieterportal.hocks.eu`.
## Module
@@ -10,26 +12,35 @@ Mieterportal für die Verwaltung von 50 Wohnungen in 3 Häusern — analog zum S
4. **Dokumente** – Verträge, Abrechnungen, Hausordnung; zentraler Such- und Filterzugriff
5. **Nachrichten** – Direktkommunikation Mieter ↔ Verwaltung
Der Rollenwechsel Mieter ↔ Verwaltung erfolgt über die Schaltfläche in der Seitenleiste. Alle Demo-Daten werden lokal im Browser (localStorage) gespeichert.
Der Rollenwechsel Mieter ↔ Verwaltung erfolgt über die Seitenleiste (Demo-Modus).
Alle Demo-Daten werden lokal im Browser (localStorage) gespeichert. Dark-Mode-Umschalter
in der Seitenleiste bzw. Mobilen Kopfzeile.
## Lokale Entwicklung
## Entwicklung
```bash
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)
```
## Docker
Projekt-Kontext für Kimi Work: [kimi.md](kimi.md).
## Deployment (bewährter Workflow, s. kimi.md Kap. 4)
```bash
docker build -t mieterportal .
docker run -d -p 8080:80 --name mieterportal mieterportal
# oder:
docker compose up -d --build
./deploy.sh
```
Der Container liefert das gebaute Frontend über Nginx (SPA-Routing inklusive).
Für den Betrieb unter `https://mieterportal.hocks.eu` einfach einen Reverse Proxy
(Traefik, nginx, Caddy) davor setzen — Beispiel-Labels für Traefik inkl. Let's Encrypt
liegen in der `docker-compose.yml`.
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`.
## Optional: Mail-Stack
`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.