Files
beauty-bookings/README.md
elpatron 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

184 lines
4.8 KiB
Markdown

# Stargirlnails Kiel - Nail Salon Booking System
Ein vollständiges Buchungssystem für Nagelstudios mit Admin-Panel, Kalender und E-Mail-Benachrichtigungen.
## Dependencies
- [TypeScript](https://www.typescriptlang.org/)
- [React](https://react.dev/)
- [Vite](https://vite.dev/)
- [Tailwind CSS V4](https://tailwindcss.com/)
- [oRPC](https://orpc.unnoq.com/)
- [Hono](https://hono.dev/)
- [Zod](https://zod.dev/)
## Setup
### 1. Umgebungsvariablen konfigurieren
Kopiere die `.env.example` Datei zu `.env` und konfiguriere deine Umgebungsvariablen:
```bash
cp .env.example .env
```
### 2. Admin-Passwort Hash generieren
Das Admin-Passwort wird als Base64-Hash in der `.env` Datei gespeichert. Hier sind verschiedene Methoden, um einen Hash zu generieren:
#### PowerShell (Windows)
```powershell
# Einfache Methode mit Base64-Encoding
$password = "dein_sicheres_passwort"
$bytes = [System.Text.Encoding]::UTF8.GetBytes($password)
$hash = [System.Convert]::ToBase64String($bytes)
Write-Host "Password Hash: $hash"
# Alternative mit PowerShell 7+ (kürzer)
$password = "dein_sicheres_passwort"
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($password))
```
#### Node.js (falls verfügbar)
```javascript
// In der Node.js Konsole oder als separates Script
const password = "dein_sicheres_passwort";
const hash = Buffer.from(password).toString('base64');
console.log("Password Hash:", hash);
```
#### Online-Tools (nur für Entwicklung)
- Verwende einen Base64-Encoder wie [base64encode.org](https://www.base64encode.org/)
### 3. .env Datei konfigurieren
Bearbeite deine `.env` Datei und setze die generierten Werte:
```env
# Admin Account Configuration
ADMIN_USERNAME=owner
ADMIN_PASSWORD_HASH=ZGVpbl9zaWNoZXJlc19wYXNzd29ydA== # Dein generierter Hash
# Domain Configuration
DOMAIN=localhost:5173 # Für Produktion: deine-domain.de
# Email Configuration
RESEND_API_KEY=your_resend_api_key_here
EMAIL_FROM=noreply@yourdomain.com
ADMIN_EMAIL=admin@yourdomain.com
# Frontend URL (für E-Mail Links)
FRONTEND_URL=http://localhost:5173
# Stornierungsfrist (in Stunden)
MIN_STORNO_TIMESPAN=24
```
### 4. Anwendung starten
```bash
# Dependencies installieren
pnpm install
# Entwicklungsserver starten
pnpm dev
```
## Docker Deployment
### Docker Build
```bash
# Docker Image erstellen
docker build -t stargirlnails-booking .
# Container starten
docker run -d \
--name stargirlnails-app \
-p 3000:3000 \
--env-file .env \
stargirlnails-booking
```
### Docker Compose (empfohlen)
Erstelle eine `docker-compose.yml` Datei:
```yaml
services:
stargirlnails:
build: .
ports:
- "3000:3000"
env_file:
- .env
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
```
Starten mit Docker Compose:
```bash
# Container starten
docker-compose up -d
# Logs anzeigen
docker-compose logs -f
# Container stoppen
docker-compose down
```
### Produktions-Deployment
Für den produktiven Einsatz:
```bash
# Mit Docker Compose
docker-compose -f docker-compose.yml up -d
# Oder direkt mit Docker
docker run -d \
--name stargirlnails-prod \
-p 80:3000 \
--restart unless-stopped \
--env-file .env.production \
stargirlnails-booking
```
**Wichtige Produktions-Hinweise:**
- Verwende eine `.env.production` Datei mit Produktions-Konfiguration
- Setze `NODE_ENV=production` in der Umgebungsdatei
- Verwende einen Reverse Proxy (nginx, Traefik) für HTTPS
- Überwache Container mit Health Checks
## Features
- 📅 **Terminbuchung**: Kunden können online Termine buchen
- 💅 **Behandlungsverwaltung**: Admin kann Behandlungen hinzufügen/bearbeiten
- 📆 **Kalender-Ansicht**: Übersichtliche Darstellung aller Termine
-**Verfügbarkeits-Slots**: Flexible Slot-Verwaltung mit behandlungsspezifischen Dauern
- 📧 **E-Mail-Benachrichtigungen**: Automatische Benachrichtigungen bei Buchungen
-**Termin-Stornierung**: Kunden können Termine über sichere Links stornieren
-**Stornierungsfrist**: Konfigurierbare Mindestfrist vor dem Termin (MIN_STORNO_TIMESPAN)
- 🔐 **Admin-Panel**: Geschützter Bereich für Inhaber
## Admin-Zugang
Nach dem Setup kannst du dich mit den in der `.env` konfigurierten Admin-Credentials anmelden:
- **Benutzername**: Wert aus `ADMIN_USERNAME`
- **Passwort**: Das ursprüngliche Passwort (nicht der Hash)
## Sicherheit
⚠️ **Wichtige Hinweise:**
- Ändere das Standard-Passwort vor dem Produktionseinsatz
- Das Passwort wird als Base64-Hash in der `.env` Datei gespeichert
- Verwende ein sicheres Passwort und generiere den entsprechenden Hash
- Die `.env` Datei sollte niemals in das Repository committet werden