mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-15 06:01:09 +02:00
Applied formatting to 1487+ files using pnpm format:write - TypeScript/JavaScript files - Svelte components - Astro pages - JSON configs - Markdown docs 13 files still need manual review (Astro JSX comments)
5.7 KiB
5.7 KiB
PocketBase Development Setup - Implementierungsplan
🎯 Ziel
Vollständige Trennung von Development und Production Datenbanken, ähnlich wie bei Redis.
📋 Aktuelle Situation
Probleme:
- ❌ Beide Umgebungen nutzen Production DB (
https://pb.ulo.ad) - ❌ Gefahr von Testdaten in Production
- ❌ Keine lokale Entwicklungsumgebung
- ❌ Hardcoded Production URLs im Code
- ❌ Inkonsistente Environment-Variable-Nutzung
Vorhandene Ressourcen:
- ✅ PocketBase Binary bereits in
backend/vorhanden - ✅
npm run backendScript existiert - ✅ Lokale DB-Dateien in
backend/pb_data/ - ✅ Schema-Migrations in
backend/pb_migrations/
🛠 Implementierungsplan
Phase 1: Lokale PocketBase einrichten (15 Min)
-
PocketBase starten
cd backend ./pocketbase serve- Läuft auf http://localhost:8090
- Admin UI: http://localhost:8090/_/
-
Admin Account erstellen
- Beim ersten Start wird Admin-Account angelegt
- Credentials sicher speichern
-
Schema von Production kopieren
# Export von Production (manuell über Admin UI) # Import in lokale Instanz
Phase 2: Environment Variables korrigieren (10 Min)
-
.env.development anpassen
# PocketBase Configuration (Local Development) PUBLIC_POCKETBASE_URL=http://localhost:8090 POCKETBASE_URL=http://localhost:8090 # PocketBase Admin (for local development) POCKETBASE_ADMIN_EMAIL=admin@localhost POCKETBASE_ADMIN_PASSWORD=localdevpassword123 -
.env.production erstellen
# PocketBase Configuration (Production) PUBLIC_POCKETBASE_URL=https://pb.ulo.ad POCKETBASE_URL=https://pb.ulo.ad
Phase 3: Code-Anpassungen (20 Min)
-
src/lib/pocketbase.ts
import { dev } from '$app/environment'; // Automatic environment detection const POCKETBASE_URL = import.meta.env.PUBLIC_POCKETBASE_URL || (dev ? 'http://localhost:8090' : 'https://pb.ulo.ad'); -
Hardcoded URLs entfernen
src/routes/p/[username]/+page.server.ts:16src/lib/scripts/update-links-collection.js:6src/routes/api/verify/+server.ts:15
-
CSP Headers anpassen
src/hooks.server.ts- Dynamische CSP basierend auf Environment
Phase 4: Daten-Migration (30 Min)
-
Test-Daten erstellen
# Script für Sample-Daten npm run seed:dev -
Production Snapshot (optional)
- Export wichtiger Test-Links
- Anonymisierte User-Daten
- Keine echten Produktionsdaten!
-
Migrations synchronisieren
# Alle Migrations lokal ausführen cd backend ./pocketbase migrate up
Phase 5: Development Workflow (10 Min)
-
Start-Scripts optimieren
{ "scripts": { "dev": "npm run dev:frontend", "dev:frontend": "vite dev", "dev:backend": "cd backend && ./pocketbase serve", "dev:all": "concurrently \"npm:dev:backend\" \"npm:dev:frontend\"", "dev:setup": "npm run dev:backend:setup && npm run dev:seed" } } -
Docker Alternative (optional)
# docker-compose.dev.yml services: pocketbase: image: ghcr.io/pocketbase/pocketbase:latest ports: - '8090:8090' volumes: - ./backend/pb_data:/pb_data
Phase 6: Testing & Validation (15 Min)
-
Connection Tests
- Verify localhost:8090 responds
- Check Admin UI access
- Test API endpoints
-
Feature Tests
- Create link
- Register user
- Authentication flow
- Stripe webhooks (mit lokaler URL)
-
Data Isolation
- Verify no production data access
- Check environment variables
- Test fallback mechanisms
🚀 Quick Start (Nach Implementierung)
# 1. Backend starten
npm run dev:backend
# 2. In neuem Terminal: Frontend starten
npm run dev:frontend
# Oder alles zusammen:
npm run dev:all
⚠️ Wichtige Überlegungen
Daten-Synchronisation
- NICHT Production-Daten lokal spiegeln
- Nur Schema/Structure synchronisieren
- Test-Daten separat verwalten
Secrets Management
- Lokale Admin-Credentials nur für Dev
- Keine Production-Secrets in .env.development
- Stripe Test-Keys für lokale Entwicklung
Backup Strategy
- Lokale DB regelmäßig committen? (ohne sensible Daten)
- Schema-Änderungen als Migrations tracken
- Production Backups separat
📊 Vergleich: Vorher vs Nachher
| Aspekt | Vorher | Nachher |
|---|---|---|
| Dev Database | Production (pb.ulo.ad) | Lokal (localhost:8090) |
| Test-Daten | In Production! | Isoliert lokal |
| Performance | Netzwerk-Latenz | Instant (lokal) |
| Sicherheit | Risiko für Prod-Daten | Vollständig getrennt |
| Offline-Arbeit | Nicht möglich | Voll funktionsfähig |
🔄 Migration Checkliste
- Lokale PocketBase starten
- Admin Account erstellen
- Schema importieren
- Environment Variables anpassen
- Code von hardcoded URLs befreien
- Test-Daten erstellen
- Alle Features lokal testen
- Team-Dokumentation aktualisieren
- CI/CD Pipeline anpassen
🎉 Vorteile nach Implementierung
- Sicherer - Keine Produktionsdaten-Gefährdung
- Schneller - Lokale DB ohne Netzwerk-Latenz
- Flexibler - Experimente ohne Konsequenzen
- Offline-fähig - Arbeiten ohne Internet
- Team-freundlich - Jeder hat eigene DB
📚 Nächste Schritte
- Entscheidung treffen: Sofort umsetzen oder planen?
- Team informieren über Änderungen
- Migration durchführen
- Dokumentation für Team erstellen
- CI/CD anpassen für neue Struktur