Lokales Setup & Installation
Die Entwicklungsumgebung von TreeQuest ist flexibel und bietet einen hybriden Ansatz. Das Backend kann vollständig in Docker ausgeführt werden oder lokal in einer Python-Umgebung (wobei nur die PostGIS-Datenbank in Docker läuft). Die Frontend-App wird lokal über Expo Go auf dem Smartphone, im Browser oder in einem Android Emulator getestet.
1. Voraussetzungen
Bitte stelle sicher, dass folgende Tools auf deinem System installiert sind:
- Docker & Docker Compose (V2)
- Node.js 24 LTS (mit npm 11)
- Python 3.14 (für lokales Backend-Setup)
- Expo Go App (auf dem mobilen Gerät) oder ein Android Emulator (z.B. über Android Studio)
- Ein Expo Account (für EAS Cloud-Builds, siehe Abschnitt 4)
2. Backend starten
Option A: Vollständiger Docker Stack (Empfohlen für App-Entwickler)
Dies ist der einfachste Weg, um das komplette Backend (inkl. Datenbank und ML-Modell) zu starten.
# Im Projekt-Root-Verzeichnis ausführen
docker compose up -d
Beim Start wartet das Backend auf PostgreSQL, führt Alembic-Migrationen aus, füllt die Datenbank mit Testdaten und lädt beim ersten Mal das ML-Modell herunter (~350 MB).
Logs prüfen:
docker compose logs -f backend
(Warte, bis "Application startup complete" erscheint.)
Um die Datenbank nach einem Wipe manuell neu aufzubauen:
docker compose exec backend alembic upgrade head
docker compose exec backend python seed.py
Option B: Lokale Python API + Docker PostGIS (Für Backend-Entwickler)
Dies ermöglicht schnellere Code-Reloads und einfacheres Python-Debugging.
-
Nur die Datenbank in Docker starten:
docker compose up -d db -
Virtuelle Python-Umgebung einrichten:
cd backend python3.14 -m venv .venv source .venv/bin/activate pip install --upgrade pip # PyTorch (CPU-Version für Mac/Linux/Windows kompatibel) pip install torch==2.10.* torchvision==0.25.* --index-url https://download.pytorch.org/whl/cpu pip install -r requirements.txt -
Umgebungsvariablen setzen:
export DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/treequest export SECRET_KEY=dev-secret-key-change-in-production export UPLOAD_DIR=./uploads export SKIP_ML_LOAD=true # Überspringt den ML-Download für schnelleres Starten beim reinen API-Dev -
Migrationen anwenden und Server starten:
alembic upgrade head python -c "from seed import seed_if_empty; seed_if_empty()" uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
3. Frontend starten
Die Mobile-App verbindet sich automatisch mit dem lokalen Backend.
cd frontend
npm ci
npx expo start
Testen auf einem echten Smartphone (Expo Go)
- Lade dir die Expo Go App aus dem App Store / Play Store herunter.
- Stelle sicher, dass dein Handy und Laptop im selben WLAN sind.
- Scanne den im Terminal angezeigten QR-Code mit der Kamera (iOS) oder direkt in der Expo Go App (Android).
Testen im Android Emulator
Wenn du lieber am Computer testest, kannst du einen Android Emulator nutzen:
1. Installiere Android Studio und richte ein Virtual Device (AVD) ein.
2. Starte den Emulator über Android Studio.
3. Drücke im laufenden npx expo start Terminalfenster die Taste a.
4. Expo installiert die Expo Go App automatisch auf dem Emulator und startet TreeQuest.
Testen im Web-Browser
Für schnelle UI-Tests ohne native Kamera/GPS-Features kannst du die App als Web-Anwendung starten:
npm run web
Falls das Frontend das Backend nicht findet, kann die IP-Adresse in frontend/.env manuell erzwungen werden:
EXPO_PUBLIC_API_BASE_URL=http://<DEINE-LOKALE-WLAN-IP>:8000
4. Expo Account für EAS Builds
Um die App für den produktiven Einsatz oder als eigenständige .apk / .aab (Android App Bundle) zu kompilieren, wird der Expo Application Services (EAS) Build-Service genutzt. Dafür wird kein lokales Android Studio benötigt, da der Build in der Cloud stattfindet.
Voraussetzungen für einen Build: 1. Erstelle einen kostenlosen Account auf expo.dev. 2. Logge dich im Terminal in deinen Account ein:
npx eas login
npx eas build --platform android --profile preview
5. Echtdaten importieren (Optional)
TreeQuest kann mit einem echten Baumkataster-Datensatz (z.B. München) gefüttert werden:
- Lade die GeoPackage-Datei nach
backend/data/124028_baeume.gpkg. - Führe das Import-Skript aus:
DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/treequest \ python3 backend/scripts/import_geodata.py