Loslegen
Diese Anleitung richtet eine lokale Entwicklungsumgebung ein. Für ein Produktions-Deployment siehe Betrieb.
Voraussetzungen
Section titled “Voraussetzungen”- Docker & Docker Compose
- PHP 8.4+ und Composer (Backend)
- Node.js 22+ und pnpm (Mobile App, Locker Client, Website)
- just (Task-Runner, optional aber empfohlen)
Repository klonen
Section titled “Repository klonen”git clone https://github.com/Open-Locker/Open-Locker.gitcd Open-LockerBackend
Section titled “Backend”cp locker-backend/.env.example locker-backend/.envIn locker-backend/.env mindestens konfigurieren:
APP_URL— URL des BackendsDB_PASSWORD— Datenbank-PasswortMOSQ_HTTP_PASS— gemeinsames Geheimnis für die Authentifizierung zwischen MQTT-Broker und Backend
MQTT-Broker-Konfiguration erzeugen und Stack starten:
just setup-mqtt # erzeugt mosquitto.conf aus dem Template
cd locker-backenddocker compose up -d # Postgres, Mosquitto, Redis, Appdocker compose exec app php artisan migrate --seedVor dem ersten Start ADMIN_EMAIL setzen oder den ersten Admin explizit
anlegen:
docker compose exec app php artisan first-admin:create admin@example.comDer Admin setzt sein Passwort über „Passwort vergessen“, daher muss der
Mailversand funktionieren. Das Admin-Panel ist dann unter <APP_URL>/admin
erreichbar. Der primäre Dev-Loop läuft über Composer:
composer dev # Server + Queue + Logs + Vite parallelcomposer test # Testscomposer quality # Format-Check + statische Analyse + TestsMobile App
Section titled “Mobile App”cd mobile-appcp .env.example .envpnpm installIn .env EXPO_PUBLIC_API_BASE_URL auf das laufende Backend einschließlich
/api setzen. Realtime verwendet EXPO_PUBLIC_REVERB_KEY,
EXPO_PUBLIC_REVERB_PORT und EXPO_PUBLIC_REVERB_SCHEME;
EXPO_PUBLIC_REVERB_HOST ist optional, wenn API und Reverb denselben Host
verwenden.
pnpm start erwartet einen installierten Expo Development Client; mit
pnpm android oder pnpm ios wird er gebaut. Für den eingeschränkteren
Workflow mit Expo Go dient pnpm start:go.
Der API-Client wird aus der live generierten OpenAPI-Spezifikation des laufenden
Backends unter /docs/api.json erzeugt. Nach Änderungen am API-Vertrag:
pnpm generate:api # Backend muss laufenVor dem Pushen: pnpm check (Typecheck + Lint + Format + expo-doctor).
Locker Client
Section titled “Locker Client”cd locker-clientpnpm installpnpm dev # startet den Client lokalDer Client braucht eine config/locker-config.yml und eine .env mit
PROVISIONING_TOKEN. Details zur Hardware stehen in der
Stückliste.
Website
Section titled “Website”cd websitepnpm installpnpm dev # http://localhost:4321