Skip to content

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

KomponenteTechnologieVersion
BackendLaravel12.x
PHPPHP-FPM8.3
FrontendBlade + TailwindCSS + Alpine.js-
DatabaseMariaDBLatest
WebSocketLaravel Reverb-
MobileExpo / React NativeSDK 54
ContainerDocker + Docker Compose-
CI/CDGitHub Actions-
Auto-DeployWatchtower-

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.md

Datenfluss

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 App

Deployment-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`

Nächste Schritte

Roomz Property Management System