Commit Graph

74 Commits

Author SHA1 Message Date
857b60e1f5 Fix: Use startup script to create .storage directories at runtime
- Changed from bind mount to named volume for .storage
- Added start.sh script that creates required directories before starting the app
- This prevents ENOENT errors when initializing admin user
2025-10-01 23:05:21 +02:00
713da5a802 Fix: Create .storage directories in Dockerfile to prevent ENOENT errors 2025-10-01 23:01:35 +02:00
12b31d28d5 fix(client-entry): füge CSS-Fallback für Production-Build hinzu 2025-10-01 22:54:23 +02:00
84d6f5c07a fix(client-entry): korrigiere TypeScript-Typen für cssFiles Array 2025-10-01 22:51:01 +02:00
f4d9f60fc9 fix(client-entry): verwende korrekte Asset-Pfade aus Vite-Manifest für Production-Build 2025-10-01 22:49:57 +02:00
2c2a173b96 fix(server): füge statische Datei-Serving für Production-Build hinzu 2025-10-01 22:47:06 +02:00
3d5c6ffeaf fix(server): korrigiere Import-Position für @hono/node-server 2025-10-01 22:42:18 +02:00
72834a6977 fix(server): füge @hono/node-server hinzu und korrigiere Server-Start für Node.js 2025-10-01 22:41:11 +02:00
18b75fdde3 fix(server): füge Server-Start-Konfiguration hinzu für Hono-App 2025-10-01 22:38:44 +02:00
143051a90a fix(server-build): ersetze @/server-Pfad-Aliase durch relative Imports mit .js-Erweiterungen 2025-10-01 22:33:49 +02:00
1e1070dbb5 fix(server-build): füge .js-Erweiterungen zu allen lib-Imports in bookings.ts hinzu 2025-10-01 22:31:40 +02:00
19e52f7af6 fix(server-build): füge .js-Erweiterungen zu lib-Imports in RPC-Dateien hinzu 2025-10-01 22:29:23 +02:00
a80cb86cd5 fix(server-runtime): entferne Import von @vitejs/plugin-react im Server-HTML-Renderer; nutze Vite HMR Script direkt 2025-10-01 22:20:34 +02:00
74f55486bc fix(server-build): füge .js-Erweiterungen zu allen relativen Imports hinzu für ESNext-Module-Kompatibilität 2025-10-01 22:17:23 +02:00
c6c1455612 fix(server-build): ersetze import.meta.env.PROD durch process.env.NODE_ENV für Server-Build Kompatibilität 2025-10-01 22:15:18 +02:00
9d71842714 fix(server-build): Server-Build auf ESNext/bundler umgestellt für oRPC und import.meta Kompatibilität 2025-10-01 22:14:12 +02:00
b3df04a92d fix(server-build): korrigiere Import von router in bookings.ts - nutze './index' statt '..' 2025-10-01 22:12:51 +02:00
3d1bbe7265 fix(server-build): entferne Pfadalias '@/server/*' im Server-Code, nutze relative Imports; passe RPC-Route-Import und OpenAI-Import an; Server-Build nutzt CommonJS/Node Resolution 2025-10-01 22:11:30 +02:00
f44164c957 fix(build): entferne allowImportingTsExtensions für Server-Build (TS5096) 2025-10-01 22:06:51 +02:00
9da96d7af9 build(server): separater TS-Build für Server (server-dist) und Runtime auf Node JS statt ts-node; Dockerfile startet server-dist/index.js 2025-10-01 22:05:01 +02:00
4f901400a3 fix(runtime): füge tsconfig.server.json hinzu und setze TS_NODE_PROJECT für NodeNext-Loader 2025-10-01 22:01:39 +02:00
1cf727433d chore(lockfile): pnpm-lock.yaml aktualisiert nach Hinzufügen von ts-node 2025-10-01 21:58:02 +02:00
647016ff85 fix(runtime): füge ts-node als Dependency hinzu für ESM-Loader im Production-Container 2025-10-01 21:56:35 +02:00
fe3acccb93 fix(runtime): installiere ts-node im Production-Image, damit Node --loader ts-node/esm funktioniert 2025-10-01 21:47:35 +02:00
a7733c95f6 fix(build): füge index.html hinzu und konfiguriere Vite Build für Hono-Setup 2025-10-01 21:42:21 +02:00
4696948c6c fix(build): korrigiere mutate-Aufruf - oRPC Mutation erwartet direktes Objekt, kein input-Wrapper 2025-10-01 21:41:10 +02:00
73612caa1e fix(build): oRPC Query/Mutation options korrekt verwendet (input wrapper), interne RPC-Client-Typisierung gelockert und createToken-Aufrufe angepasst 2025-10-01 21:39:40 +02:00
fb30bb6395 fix(build): entferne Context-Header-Nutzung aus bookings.create (RateLimit nur per E-Mail) 2025-10-01 21:33:27 +02:00
4acb639e66 fix(build): Types in admin-calendar, oRPC React Query Helpers in booking-status, Router-Namenskonflikt, entferne unsupported allowedHosts aus Vite 2025-10-01 21:28:21 +02:00
52280b1b3b feat(setup-ssl): automatische sudo-Unterstützung für Docker/Compose, alle Aufrufe vereinheitlicht 2025-10-01 21:24:26 +02:00
f9d42b4c1e chore(compose): entferne version und behebe depends_on-Zyklus (nginx ↔ app) 2025-10-01 21:23:00 +02:00
18f97e4e5f fix(setup-ssl): Docker Compose Kompatibilität - unterstützt sowohl docker-compose als auch docker compose 2025-10-01 21:21:39 +02:00
17f1ff698e docker compose 2025-10-01 21:20:15 +02:00
71a107de52 fix(setup-ssl): .env nicht sourcen, DOMAIN/ADMIN_EMAIL robust parsen (Leerzeichen-kompatibel) 2025-10-01 21:18:42 +02:00
58fb163bbc feat: Produktions-Deployment mit Nginx und SSL
- docker-compose-prod.yml: Produktionsumgebung mit Nginx Reverse Proxy
- nginx/nginx.conf: Optimierte Nginx-Konfiguration mit SSL und Sicherheits-Headers
- Rate Limiting für API-Endpunkte (10/s) und Login (5/min)
- Automatische SSL-Zertifikate via Let's Encrypt/Certbot
- Gzip-Kompression und Performance-Optimierungen

Setup-Scripts:
- scripts/setup-ssl.sh: Bash-Script für Linux/macOS
- scripts/setup-ssl.ps1: PowerShell-Script für Windows
- Automatische Domain-Konfiguration aus .env (DOMAIN, ADMIN_EMAIL)
- Ein-Klick-Setup für SSL-Zertifikate

Dokumentation:
- docs/production-deployment.md: Vollständige Deployment-Anleitung
- Troubleshooting, Monitoring, Backup-Strategien
- Sicherheitsempfehlungen und Best Practices

Features:
- Automatische SSL-Zertifikat-Erneuerung (alle 12h)
- HSTS, CSP, XSS-Schutz
- Health Checks und Monitoring
- Persistente Daten über Docker Volumes
2025-10-01 21:13:49 +02:00
1d97e05000 feat: Google Apps Script für automatische Test-Formular-Erstellung
- Automatische Generierung eines Google Forms aus der Test-Checkliste
- ~180 Checkbox-Items über 14 Sections
- Testergebnis-Bereich mit Fehlerberichten und Gesamtbewertung
- Kein API-Key erforderlich - läuft direkt im Google Account
- Schritt-für-Schritt-Anleitung im Code-Kommentar
- Exportierbar nach Google Sheets
- Mehrfach verwendbar für verschiedene Test-Runden
2025-10-01 13:39:12 +02:00
86a73f2c16 docs: Umfassende Blackbox-Test-Checkliste für Statusseite
- 16 Hauptkategorien mit >150 Testfällen
- Alle Status-Typen abgedeckt (pending/confirmed/cancelled/completed)
- E-Mail-Integration und ICS-Dateien
- Stornierungslogik und Zeitvalidierung
- UI/UX, Performance und Accessibility
- Sicherheit und Edge Cases
- Browser-Kompatibilität
- Testergebnis-Bereich für Dokumentation
2025-10-01 13:17:55 +02:00
85fcde0805 feat: Token-basierte Kunden-Statusseite
- Neue /booking/{token} Route für einheitliche Buchungsübersicht
- Vollständige Termin-Details mit Status-Badges (pending/confirmed/cancelled/completed)
- Integrierte Stornierungsfunktion mit Bestätigungsdialog
- Anzeige von Behandlungsdetails, Kundendaten und verbleibender Zeit
- Automatische Berechnung ob Stornierung noch möglich
- Responsive UI mit modernem Design

Server-Erweiterungen:
- BookingAccessToken statt CancellationToken (semantisch präziser)
- Erweiterte Rückgabe von getBookingByToken (Preis, Dauer, canCancel, hoursUntilAppointment)
- Token-Generierung bei Buchungserstellung (pending) und Bestätigung

E-Mail-Integration:
- Status-Links in pending-Mails
- 'Termin verwalten' statt 'Termin stornieren' in confirmed-Mails
- Einheitliches Branding (Pink/Orange statt Rot)

Aufgeräumt:
- Legacy cancellation-page.tsx entfernt
- /cancel/ Route entfernt (keine Rückwärtskompatibilität nötig)
- Backlog aktualisiert
2025-10-01 13:14:27 +02:00
8ee2a2b3b6 feat: ICS-Kalendereinträge, Rate-Limiting und erweiterte E-Mail-Validierung
- ICS-Dateianhänge in Bestätigungsmails mit Europe/Berlin Zeitzone
- Rate-Limiting: IP-basiert (5/10min) und E-Mail-basiert (3/1h)
- Mehrschichtige E-Mail-Validierung mit Rapid Email Validator API
  - Disposable Email Detection (blockiert Wegwerf-Adressen)
  - MX Record Verification
  - Domain Verification
  - Typo-Erkennung mit Vorschlägen
- Zod-Schema-Validierung für Name, E-Mail und Telefonnummer
- Dokumentation für Rate-Limiting und E-Mail-Validierung
- README mit neuen Features aktualisiert
- Backlog aktualisiert
2025-10-01 11:43:51 +02:00
2dcfb8e2ee Add RFC 9116 compliant security.txt endpoint
- Implement /.well-known/security.txt endpoint for security vulnerability reporting
- Add SECURITY_CONTACT environment variable support
- Include proper HTTP headers (Content-Type, Cache-Control)
- Set automatic expiration date and preferred languages
- Add comprehensive security policy information
- Update .env.example with SECURITY_CONTACT variable
- Document security.txt endpoint in README.md with usage examples
- Follow RFC 9116 standard for responsible disclosure
2025-09-30 19:28:29 +02:00
2402afff13 Add persistent storage volume to Docker configuration
- Mount .storage directory from host to container for data persistence
- Update docker-compose.yml with volumes configuration
- Update README.md with volume documentation
- Ensure bookings and settings persist across container restarts
2025-09-30 19:24:20 +02:00
558ee9cc56 Update booking form and environment configuration
- Update .env.example with map coordinates (ADDRESS_LATITUDE/LONGITUDE)
- Update ADDRESS_STREET to Liebigstr. 15 and postal code to 24145
- Document GPS coordinates for interactive map feature in legal page
2025-09-30 19:11:29 +02:00
9dd9fd0ac2 Update .env.example with map coordinates
- Add ADDRESS_LATITUDE and ADDRESS_LONGITUDE environment variables
- Update ADDRESS_STREET to Liebigstr. 15
- Update ADDRESS_POSTAL_CODE to 24145
- Document GPS coordinates for interactive map feature
2025-09-30 18:54:45 +02:00
2ddd0704d7 Add interactive map to Impressum with configurable coordinates
- Add OpenStreetMap iframe to legal page showing business location
- Support ADDRESS_LATITUDE and ADDRESS_LONGITUDE environment variables
- Generate dynamic map URLs based on configured coordinates
- Include link to full map view
- Update legal-config.ts interface to include latitude/longitude
- Document new environment variables in README.md
- Use Kiel coordinates as default (54.3233, 10.1228)
2025-09-30 18:52:11 +02:00
01754bf142 Füge 'Zurück zur Startseite' Link zur Login-Seite hinzu
- Navigation-Link unter dem Anmelde-Formular
- Pinkes Design passend zum Stargirlnails-Branding
- Pfeil-Icon für bessere Benutzerfreundlichkeit
- Hover-Effekt mit sanfter Farbänderung
- Zentrierte Platzierung für sauberes Design
- Verbesserte Navigation und UX
2025-09-30 18:39:15 +02:00
732f2fb0e6 Füge Impressum/Datenschutz-Links zu allen Benutzer-E-Mails hinzu
- Alle Benutzer-E-Mails enthalten jetzt Links zu Impressum/Datenschutz
- Schöner blauer Info-Block mit 📋 Icon in HTML-E-Mails
- Text-Links in allen Text-Versionen der E-Mails
- Betroffen: Pending-Buchungen, Bestätigungen, Stornierungen
- Admin-E-Mails bleiben unverändert
- Konsistentes Design und Benutzerfreundlichkeit
- Direkte Navigation zu /legal für rechtliche Informationen
2025-09-30 18:30:27 +02:00
671f9693c5 Füge Logo-Klick-Navigation zum Impressum-Header hinzu
- Logo und Titel im Impressum-Header sind jetzt klickbar
- Klick führt zur Startseite zurück
- Visuelle Hover-Effekte (cursor-pointer, opacity-Änderung)
- Konsistentes Verhalten mit der Haupt-App
- Verbesserte Benutzerfreundlichkeit und Navigation
2025-09-30 18:27:51 +02:00
90e48c82ac Behebe Impressum/Datenschutz-Tab und bereinige UI
- Impressum-Tab zeigt jetzt korrekt rechtliche Informationen an
- Direkter HTTP-Endpoint /api/legal-config als Workaround für RPC-Problem
- Client-Komponente verwendet fetch() anstatt RPC-Calls
- Debug-Logs hinzugefügt für bessere Fehlerdiagnose
- Hinweis-Text über Umgebungsvariablen entfernt für saubereres Design
- Legal-Konfiguration funktioniert jetzt vollständig mit echten Daten
- Tab-Navigation zwischen Impressum und Datenschutz funktioniert
2025-09-30 18:25:50 +02:00
40d76680fd Implementiere Impressum/Datenschutz-System und bereinige URL-Konfiguration
- Neues Impressum/Datenschutz-Tab mit konfigurierbaren rechtlichen Daten
- Konfigurationsdatei legal-config.ts für alle rechtlichen Informationen
- RPC-Endpoint legal.getConfig() für rechtliche Daten
- Schöne Tab-Navigation zwischen Impressum und Datenschutz
- Responsive Design mit Loading-States und Fehlerbehandlung
- Alle rechtlichen Daten über Umgebungsvariablen konfigurierbar
- FRONTEND_URL entfernt - nur noch DOMAIN wird verwendet
- Hilfsfunktion generateUrl() für konsistente URL-Generierung
- Code-Duplikation in bookings.ts eliminiert
- .env.example aktualisiert mit allen neuen Variablen
- README.md dokumentiert neue rechtliche Konfiguration
- DSGVO- und TMG-konforme Inhalte implementiert
2025-09-30 18:14:01 +02:00
55923e0426 Implementiere Stornierungssystem und E-Mail-Links zur Hauptseite
- Neues Stornierungssystem mit sicheren Token-basierten Links
- Stornierungsfrist konfigurierbar über MIN_STORNO_TIMESPAN (24h Standard)
- Stornierungs-Seite mit Buchungsdetails und Ein-Klick-Stornierung
- Automatische Slot-Freigabe bei Stornierung
- Stornierungs-Link in Bestätigungs-E-Mails integriert
- Alle E-Mails enthalten jetzt Links zur Hauptseite (DOMAIN Variable)
- Schöne HTML-Buttons und Text-Links in allen E-Mail-Templates
- Vollständige Validierung: Vergangenheits-Check, Token-Ablauf, Stornierungsfrist
- Responsive Stornierungs-Seite mit Loading-States und Fehlerbehandlung
- Dokumentation in README.md aktualisiert
2025-09-30 17:48:03 +02:00