elpatron d1f312116e feat: Add Docker support and health endpoint
- Add production-ready Dockerfile with multi-stage build
- Add .dockerignore for optimized builds
- Add docker-compose.yml for easy deployment
- Add /health endpoint for container health checks
- Update README with comprehensive Docker documentation
- Include security best practices (non-root user, health checks)
- Support for both development and production deployments
2025-09-30 14:23:14 +02:00
2025-09-29 19:50:10 +02:00
2025-09-30 11:13:53 +02:00
2025-09-30 11:13:53 +02:00
2025-09-29 17:56:30 +02:00

Stargirlnails Kiel - Nail Salon Booking System

Ein vollständiges Buchungssystem für Nagelstudios mit Admin-Panel, Kalender und E-Mail-Benachrichtigungen.

Dependencies

Setup

1. Umgebungsvariablen konfigurieren

Kopiere die .env.example Datei zu .env und konfiguriere deine Umgebungsvariablen:

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)

# 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)

// 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)

3. .env Datei konfigurieren

Bearbeite deine .env Datei und setze die generierten Werte:

# Admin Account Configuration
ADMIN_USERNAME=owner
ADMIN_PASSWORD_HASH=ZGVpbl9zaWNoZXJlc19wYXNzd29ydA==  # Dein generierter Hash

# Email Configuration
RESEND_API_KEY=your_resend_api_key_here
EMAIL_FROM=noreply@yourdomain.com
ADMIN_EMAIL=admin@yourdomain.com

4. Anwendung starten

# Dependencies installieren
pnpm install

# Entwicklungsserver starten
pnpm dev

Docker Deployment

Docker Build

# 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:

version: '3.8'

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:

# Container starten
docker-compose up -d

# Logs anzeigen
docker-compose logs -f

# Container stoppen
docker-compose down

Produktions-Deployment

Für den produktiven Einsatz:

# 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
  • 🔐 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
Description
No description provided
Readme 2.6 MiB
Languages
TypeScript 72.7%
JavaScript 25.7%
Shell 1%
Dockerfile 0.3%
HTML 0.1%
Other 0.1%