v1.3: Serverseitige Datenbank (PostgreSQL + Node-API) ersetzt localStorage
- server/: Express-API (Auth, Bootstrap, Tickets, Threads, Benutzerverwaltung, Codes) mit pg-Schema (11 Tabellen), idempotem Seed (50 Wohnungen, 552 Buchungen) - mp-db (PostgreSQL 16, Volume mp_pgdata) + mp-api im Compose-Stack, nginx proxiet /api/ an mp-api; deploy.sh baut API-Image auf dem Server - Frontend: Store laedt /api/bootstrap, Schreibzugriff async, kein localStorage mehr (ausser Theme), Ladebildschirm beim Session-Check, vite-Proxy fuer Dev - Rollenrechte serverseitig: Mieter nur eigene Wohnung (getestet, 403-Verweis) - Mail-Benachrichtigungen komplett serverseitig (server/src/mail.js) - beispieldaten.py schreibt server/seed/generated.json; Verwaltungs-Mail = axel@hocks.eu - E2E live verifiziert: Login, Scoping, Ticket + Zustellung (status=sent), Registrierung, Codes; Testdaten bereinigt; Doku nachgefuehrt
This commit is contained in:
+48
-2
@@ -1,6 +1,15 @@
|
||||
# Hocks Mieterportal – Portal-Container (statisches Frontend hinter NPM)
|
||||
# Hinterstein Mieterportal – Portal-Stack auf hocks.eu
|
||||
# TLS + Subdomain liefert der Nginx Proxy Manager (npm_default-Netz).
|
||||
# Deploy: ./deploy.sh baut dist/ lokal und lädt es auf den Server.
|
||||
# Deploy: ./deploy.sh baut dist/ + API-Image und lädt alles auf den Server.
|
||||
#
|
||||
# Dienste:
|
||||
# mp-portal nginx, statisches dist/ (SPA), proxiet /api/ → mp-api
|
||||
# und POST /api/mail/send → mp-mail-api (Token aus portal.env)
|
||||
# mp-api Node-API (Express + PostgreSQL-Client), baut sich aus ./server
|
||||
# mp-db PostgreSQL 16 (persistiertes Volume mp_pgdata)
|
||||
#
|
||||
# portal.env (nur auf dem Server, gitignored) liefert:
|
||||
# MAIL_API_TOKEN, POSTGRES_PASSWORD
|
||||
|
||||
services:
|
||||
mp-portal:
|
||||
@@ -13,9 +22,46 @@ services:
|
||||
- ./docker/templates/default.conf.template:/etc/nginx/templates/default.conf.template:ro
|
||||
env_file:
|
||||
- portal.env
|
||||
depends_on:
|
||||
- mp-api
|
||||
networks:
|
||||
- npm_default
|
||||
|
||||
mp-api:
|
||||
build: ./server
|
||||
container_name: mp-api
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
DATABASE_URL: postgres://mp:${POSTGRES_PASSWORD}@mp-db:5432/mieterportal
|
||||
MAIL_API_URL: http://mp-mail-api:8080
|
||||
MAIL_API_TOKEN: ${MAIL_API_TOKEN}
|
||||
PORT: 3000
|
||||
depends_on:
|
||||
- mp-db
|
||||
networks:
|
||||
- npm_default
|
||||
|
||||
mp-db:
|
||||
image: postgres:16-alpine
|
||||
container_name: mp-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_USER: mp
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
POSTGRES_DB: mieterportal
|
||||
volumes:
|
||||
- mp_pgdata:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ['CMD-SHELL', 'pg_isready -U mp -d mieterportal']
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
- npm_default
|
||||
|
||||
networks:
|
||||
npm_default:
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
mp_pgdata:
|
||||
|
||||
Reference in New Issue
Block a user