todo-helden/FIREBASE_MIGRATION.md
Michi 0ebe7fa13d
Some checks failed
🚀 Continuous Integration / 🔧 Backend Tests (18.x) (push) Has been cancelled
🚀 Continuous Integration / 🔧 Backend Tests (20.x) (push) Has been cancelled
🚀 Continuous Integration / 🎨 Frontend Tests (18.x) (push) Has been cancelled
🚀 Continuous Integration / 🎨 Frontend Tests (20.x) (push) Has been cancelled
🚀 Continuous Integration / 🔍 Code Quality (push) Has been cancelled
🚀 Continuous Integration / 🔒 Security Checks (push) Has been cancelled
🚀 Continuous Integration / 🎨 Theme Tests (push) Has been cancelled
🚀 Continuous Integration / ♿ Accessibility Tests (push) Has been cancelled
🚀 Continuous Integration / 📱 Cross-Browser Tests (push) Has been cancelled
🚀 Continuous Integration / 🏗️ Build Tests (push) Has been cancelled
🚀 Continuous Integration / 📊 Performance Tests (push) Has been cancelled
🚀 Continuous Integration / 🎯 Integration Tests (push) Has been cancelled
🚀 Continuous Integration / ✅ All Tests Passed (push) Has been cancelled
Initial commit: ToDo Kids v1.0.0
2025-08-04 15:46:08 +02:00

4.8 KiB

🔥 Firebase Migration Anleitung

Übersicht

Diese Anleitung hilft dir dabei, von dem lokalen Node.js/MongoDB Backend zu Firebase zu migrieren.

📋 Schritt-für-Schritt Anleitung

1. Firebase Projekt erstellen

  1. Gehe zu Firebase Console
  2. Klicke auf "Projekt hinzufügen"
  3. Gib einen Projektnamen ein (z.B. "todo-kids-app")
  4. Wähle deine Einstellungen (Google Analytics optional)
  5. Erstelle das Projekt

2. Firebase Services aktivieren

Authentication einrichten:

  1. Gehe zu "Authentication" > "Get started"
  2. Wähle "Sign-in method"
  3. Aktiviere "E-Mail/Passwort"
  4. Speichere die Einstellungen

Firestore Database einrichten:

  1. Gehe zu "Firestore Database" > "Datenbank erstellen"
  2. Wähle "Im Testmodus starten" (für Entwicklung)
  3. Wähle eine Region (z.B. europe-west3 für Deutschland)
  4. Erstelle die Datenbank

3. Web-App konfigurieren

  1. Gehe zu Projekteinstellungen (Zahnrad-Symbol)
  2. Scrolle zu "Deine Apps" und klicke "</>"
  3. Gib einen App-Namen ein (z.B. "ToDo Kids Web")
  4. Registriere die App
  5. Kopiere die Konfigurationsdaten

4. Umgebungsvariablen einrichten

Öffne die Datei client/.env und füge deine Firebase-Konfiguration ein:

REACT_APP_FIREBASE_API_KEY=dein_api_key
REACT_APP_FIREBASE_AUTH_DOMAIN=dein_projekt.firebaseapp.com
REACT_APP_FIREBASE_PROJECT_ID=dein_projekt_id
REACT_APP_FIREBASE_STORAGE_BUCKET=dein_projekt.appspot.com
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=deine_sender_id
REACT_APP_FIREBASE_APP_ID=deine_app_id

5. App.js aktualisieren

Ersetze den alten AuthContext mit dem neuen FirebaseAuthContext:

// Alte Imports entfernen:
// import { AuthProvider } from './contexts/AuthContext';

// Neue Imports hinzufügen:
import { FirebaseAuthProvider } from './contexts/FirebaseAuthContext';

// Provider in App.js ändern:
function App() {
  return (
    <FirebaseAuthProvider>
      {/* Rest deiner App */}
    </FirebaseAuthProvider>
  );
}

6. Komponenten aktualisieren

In allen Komponenten, die Authentication verwenden:

// Alte Imports ersetzen:
// import { useAuth } from '../contexts/AuthContext';

// Mit neuen Imports:
import { useFirebaseAuth } from '../contexts/FirebaseAuthContext';

// Hook-Verwendung aktualisieren:
const { currentUser, login, logout } = useFirebaseAuth();

7. API-Aufrufe ersetzen

Ersetze alle Axios-API-Aufrufe mit Firebase-Funktionen:

// Alte API-Aufrufe:
// const response = await axios.get('/api/children');

// Neue Firebase-Aufrufe:
import { getChildren } from '../firebase/database';
const result = await getChildren();

🔧 Wichtige Dateien

Neue Firebase-Dateien:

  • client/src/firebase/config.js - Firebase Konfiguration
  • client/src/firebase/auth.js - Authentication Services
  • client/src/firebase/database.js - Firestore Database Services
  • client/src/contexts/FirebaseAuthContext.js - React Context für Auth
  • client/.env - Umgebungsvariablen

Zu aktualisierende Dateien:

  • client/src/App.js - AuthProvider wechseln
  • client/src/components/LoginPage.js - Firebase Auth verwenden
  • client/src/components/ParentDashboard.js - Firebase Database verwenden
  • client/src/components/ChildrenManagement.js - Firebase Database verwenden
  • client/src/components/TaskManagement.js - Firebase Database verwenden
  • client/src/components/RewardManagement.js - Firebase Database verwenden

🚀 Vorteile von Firebase

Keine Server-Wartung - Firebase übernimmt das Backend Automatische Skalierung - Wächst mit deiner App Echtzeit-Updates - Daten werden automatisch synchronisiert Offline-Support - App funktioniert auch ohne Internet Sichere Authentication - Professionelle Benutzer-Verwaltung Kostenlos für kleine Apps - Großzügige kostenlose Limits

🔒 Sicherheitsregeln (später)

Nach der Migration solltest du Firestore-Sicherheitsregeln einrichten:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // Nur authentifizierte Benutzer
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
    
    // Benutzer können nur ihre eigenen Daten sehen
    match /children/{childId} {
      allow read, write: if request.auth.uid == resource.data.parentId;
    }
  }
}

🆘 Hilfe

Bei Problemen:

  1. Überprüfe die Browser-Konsole auf Fehler
  2. Stelle sicher, dass alle Umgebungsvariablen korrekt sind
  3. Überprüfe die Firebase-Konsole auf Fehler
  4. Teste zuerst die Authentication, dann die Database-Funktionen

📚 Nächste Schritte

  1. Firebase-Konfiguration einrichten
  2. App.js aktualisieren
  3. Login-Komponente migrieren
  4. Dashboard-Komponente migrieren
  5. Alle anderen Komponenten schrittweise migrieren
  6. Lokales Backend deaktivieren
  7. Testen und optimieren

Viel Erfolg bei der Migration! 🎉