Zum Inhalt springen

Loslegen

Diese Anleitung richtet eine lokale Entwicklungsumgebung ein. Für ein Produktions-Deployment siehe Betrieb.

  • 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)
Terminal-Fenster
git clone https://github.com/Open-Locker/Open-Locker.git
cd Open-Locker
Terminal-Fenster
cp locker-backend/.env.example locker-backend/.env

In locker-backend/.env mindestens konfigurieren:

  • APP_URL — URL des Backends
  • DB_PASSWORD — Datenbank-Passwort
  • MOSQ_HTTP_PASS — gemeinsames Geheimnis für die Authentifizierung zwischen MQTT-Broker und Backend

MQTT-Broker-Konfiguration erzeugen und Stack starten:

Terminal-Fenster
just setup-mqtt # erzeugt mosquitto.conf aus dem Template
cd locker-backend
docker compose up -d # Postgres, Mosquitto, Redis, App
docker compose exec app php artisan migrate --seed

Vor dem ersten Start ADMIN_EMAIL setzen oder den ersten Admin explizit anlegen:

Terminal-Fenster
docker compose exec app php artisan first-admin:create admin@example.com

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

Terminal-Fenster
composer dev # Server + Queue + Logs + Vite parallel
composer test # Tests
composer quality # Format-Check + statische Analyse + Tests
Terminal-Fenster
cd mobile-app
cp .env.example .env
pnpm install

In .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:

Terminal-Fenster
pnpm generate:api # Backend muss laufen

Vor dem Pushen: pnpm check (Typecheck + Lint + Format + expo-doctor).

Terminal-Fenster
cd locker-client
pnpm install
pnpm dev # startet den Client lokal

Der Client braucht eine config/locker-config.yml und eine .env mit PROVISIONING_TOKEN. Details zur Hardware stehen in der Stückliste.

Terminal-Fenster
cd website
pnpm install
pnpm dev # http://localhost:4321