Technische Übersicht
Diese Dokumentation richtet sich an Entwickler und Administratoren.
Architektur
┌─────────────────────────────────────────────────────────────────────┐
│ NGINX Proxy │
│ (handwerker-haus-hamburg.net) │
└──────────────┬───────────────┬────────────────┬─────────────────────┘
│ │ │
▼ ▼ ▼
┌──────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ hwh-portal │ │ hwh-reverb │ │ hwh-vaultwarden │
│ (Laravel) │ │ (WebSocket) │ │ (Passwords) │
│ Port 8082 │ │ Port 8083 │ │ Port 8081 │
└────────┬─────────┘ └────────┬────────┘ └─────────────────┘
│ │
▼ │
┌──────────────────┐ │
│ hwh-mariadb │◄─────────┘
│ (Database) │
│ Port 3306 │
└──────────────────┘
▲
│
┌──────────────────┐
│ hwh-scheduler │
│ (Cron Jobs) │
└──────────────────┘Tech Stack
| Komponente | Technologie | Version |
|---|---|---|
| Backend | Laravel | 12.x |
| PHP | PHP-FPM | 8.3 |
| Frontend | Blade + TailwindCSS + Alpine.js | - |
| Database | MariaDB | Latest |
| WebSocket | Laravel Reverb | - |
| Mobile | Expo / React Native | SDK 54 |
| Container | Docker + Docker Compose | - |
| CI/CD | GitHub Actions | - |
| Auto-Deploy | Watchtower | - |
Repository-Struktur
HWH dashboard/
├── app/ # Laravel Backend
│ ├── app/
│ │ ├── Console/ # Artisan Commands
│ │ ├── Http/
│ │ │ ├── Controllers/ # 37 Controller
│ │ │ └── Middleware/ # 4 Custom Middleware
│ │ ├── Models/ # 27 Eloquent Models
│ │ ├── Services/ # Business Logic
│ │ └── Traits/ # Auditable
│ ├── config/ # Laravel Config
│ ├── database/
│ │ ├── migrations/ # 48 Migrations
│ │ └── seeders/
│ ├── resources/
│ │ └── views/ # Blade Templates
│ ├── routes/
│ │ ├── web.php # Web Routes
│ │ └── api.php # API Routes
│ ├── storage/
│ ├── Dockerfile
│ ├── docker-entrypoint.sh
│ ├── scheduler-entrypoint.sh
│ └── reverb-entrypoint.sh
├── mobile/ # Expo App
│ ├── app/ # Screens (Expo Router)
│ ├── context/ # React Context
│ ├── services/ # API Client
│ ├── app.json # Expo Config
│ └── eas.json # EAS Build Config
├── docs/ # VitePress Documentation
├── .github/
│ └── workflows/
│ ├── docker.yml # Build & Push Images
│ ├── mobile-ios.yml # iOS Build
│ └── docs.yml # Docs Deployment
├── docker-compose.prod.yml
├── docker-compose.dev.yml
└── CLAUDE.mdDatenfluss
Web-Anfrage
Browser → NGINX → hwh-portal (Apache) → Laravel → MariaDB
↓
Blade View
↓
Browser ← ─ ─ ─ ─ ─ ─ ─ ─ ─ HTML ─ ─ ─ ─ ─ ─ ┘Mobile API
App → HTTPS → NGINX → hwh-portal → MobileController → MariaDB
↓
JSON Response
↓
App ← ─ ─ ─ ─ ─ ─ ─ ─ ─ JSON ─ ─ ─ ─ ─ ─ ─ ─┘Push-Benachrichtigung
Event (z.B. Ticket erstellt)
↓
PushNotificationService
↓
Expo Push API (exp.host)
↓
APNs / FCM
↓
Mobile AppDeployment-Flow
git push main
↓
GitHub Actions
├── Build hwh-portal image
├── Build hwh-scheduler image
└── Build hwh-reverb image
↓
Push to ghcr.io/jancbredow/*
↓
Watchtower (pollt alle 5 Min)
↓
Pull & Restart Container
↓
Automatisches `php artisan migrate`