Single-Tenant Firebase Setup¶
Dieses Projekt verwendet jetzt ein Single-Tenant-Setup, bei dem jede Deployment-Umgebung ihre eigene Firebase-Datenbank verwendet.
Konfigurationsdateien¶
Erstellen Sie folgende Firebase-Konfigurationsdateien im assets/firebase_config/ Verzeichnis:
- firebase_config_production.json - Für das Produktivsystem
- firebase_config_staging.json - Für das Testsystem
- firebase_config_development.json - Für die lokale Entwicklung
Format der Konfigurationsdateien¶
{
"apiKey": "YOUR_API_KEY",
"appId": "YOUR_APP_ID",
"messagingSenderId": "YOUR_MESSAGING_SENDER_ID",
"projectId": "YOUR_PROJECT_ID",
"authDomain": "YOUR_AUTH_DOMAIN",
"storageBucket": "YOUR_STORAGE_BUCKET"
}
Umgebungsauswahl¶
Die Umgebung wird automatisch basierend auf der Deployment-Methode ausgewählt:
1. Build-Zeit-Flag (Empfohlen)¶
# Produktionsbuild
flutter build web --dart-define=ENVIRONMENT=production
# Staging/Test-Build
flutter build web --dart-define=ENVIRONMENT=staging
# Development-Build
flutter build web --dart-define=ENVIRONMENT=development
2. Hostname-Erkennung (für Web)¶
Wenn kein Build-Flag gesetzt ist, wird die Umgebung automatisch anhand der Hostname erkannt:
localhostoder127.0.0.1→ development- Domain enthält
testoderstaging→ staging - Alle anderen → production
Deployment¶
Produktivsystem¶
# 1. Build für Produktion
flutter build web --dart-define=ENVIRONMENT=production --release
# 2. Deploy zu Firebase Hosting (Produktiv-Projekt)
firebase deploy --only hosting --project YOUR_PRODUCTION_PROJECT_ID
Testsystem¶
# 1. Build für Staging
flutter build web --dart-define=ENVIRONMENT=staging --release
# 2. Deploy zu Firebase Hosting (Test-Projekt)
firebase deploy --only hosting --project YOUR_STAGING_PROJECT_ID
Lokale Entwicklung¶
Firebase-Projekte einrichten¶
- Erstellen Sie separate Firebase-Projekte:
- Ein Projekt für Produktion
- Ein Projekt für Staging/Test
-
Optional: Ein Projekt für Development
-
Für jedes Projekt:
- Aktivieren Sie Authentication (Email/Password)
- Erstellen Sie eine Firestore-Datenbank
- Konfigurieren Sie Firebase Hosting
-
Kopieren Sie die Web-App-Konfiguration in die entsprechende JSON-Datei
-
Firebase Hosting Konfiguration
Erstellen Sie verschiedene Sites in Firebase Hosting oder verwenden Sie verschiedene Projekte:
# Fügen Sie Sites für verschiedene Umgebungen hinzu
firebase hosting:sites:create production-site --project YOUR_PRODUCTION_PROJECT
firebase hosting:sites:create staging-site --project YOUR_STAGING_PROJECT
Vorteile des neuen Setups¶
✅ Einfachere Verwaltung - nur eine Firebase-App pro Umgebung ✅ Keine Multi-Tenant-Komplexität mehr ✅ Klare Trennung von Produktiv- und Testsystem ✅ Standard Firebase-Setup - einfacher zu debuggen ✅ Automatische Umgebungserkennung
Migration von Multi-Tenant¶
Die folgenden Änderungen wurden vorgenommen:
customerIdwurde entfernt - Login benötigt jetzt keine customerId mehrFirebase.initializeApp()verwendet keine benannte App mehrFirebaseInstanceProviderverwendet die Default-App- Auth-Status wird jetzt mit
isLoggedIngespeichert stattcustomerId
Troubleshooting¶
"Firebase not initialized" Fehler¶
Stellen Sie sicher, dass die entsprechende Config-Datei existiert und gültig ist.
Falsche Umgebung wird verwendet¶
Prüfen Sie, ob das ENVIRONMENT Build-Flag korrekt gesetzt ist.
Login funktioniert nicht¶
Überprüfen Sie, ob Firebase Authentication im richtigen Projekt aktiviert ist.