5.2 KiB
5.2 KiB
🗄️ Portfolio Database Setup
Dieses Portfolio verwendet PostgreSQL mit Prisma ORM für maximale Performance und Skalierbarkeit.
🚀 Warum PostgreSQL + Prisma?
- 🏃♂️ Hohe Performance: Kann tausende User gleichzeitig bedienen
- 📈 Einfache Skalierung: Von lokal zu Cloud ohne Code-Änderungen
- 🔧 TypeScript-First: Vollständige Type-Sicherheit und Auto-completion
- 💾 Robuste Datenbank: ACID, Transaktionen, Indizes für optimale Performance
- 🔄 Einfache Migration: Einfache Updates und Schema-Änderungen
📋 Voraussetzungen
- Node.js 18+
- npm oder yarn
- PostgreSQL (wird automatisch installiert)
🛠️ Schnellstart (Automatisch)
# 1. Repository klonen
git clone <your-repo>
cd my_portfolio
# 2. Automatische Datenbank-Einrichtung
npm run db:setup
Das Skript installiert automatisch:
- ✅ PostgreSQL
- ✅ Datenbank und Benutzer
- ✅ Prisma Client
- ✅ Beispieldaten
- ✅ Umgebungsvariablen
🔧 Manuelle Einrichtung
1. PostgreSQL installieren
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
macOS:
brew install postgresql
brew services start postgresql
Windows:
2. Datenbank einrichten
# PostgreSQL starten
sudo systemctl start postgresql # Linux
brew services start postgresql # macOS
# Datenbank und Benutzer erstellen
sudo -u postgres psql
CREATE DATABASE portfolio_db;
CREATE USER portfolio_user WITH PASSWORD 'portfolio_pass';
GRANT ALL PRIVILEGES ON DATABASE portfolio_db TO portfolio_user;
ALTER USER portfolio_user WITH SUPERUSER;
\q
3. Umgebungsvariablen
Erstelle .env.local:
DATABASE_URL="postgresql://portfolio_user:portfolio_pass@localhost:5432/portfolio_db?schema=public"
NEXTAUTH_SECRET="your-secret-key-here"
NEXTAUTH_URL="http://localhost:3000"
4. Dependencies installieren
npm install
npx prisma generate
npx prisma db push
npx prisma db seed
🎯 Verfügbare Befehle
# Datenbank verwalten
npm run db:setup # Vollständige Einrichtung
npm run db:generate # Prisma Client generieren
npm run db:push # Schema zur Datenbank pushen
npm run db:seed # Beispieldaten einfügen
npm run db:studio # Datenbank-Interface öffnen
npm run db:reset # Datenbank zurücksetzen
# Entwicklung
npm run dev # Entwicklungsserver starten
npm run build # Produktions-Build
npm run start # Produktions-Server starten
🗄️ Datenbank-Schema
Projects
- Basis: Titel, Beschreibung, Inhalt, Tags
- Metadaten: Kategorie, Schwierigkeit, Datum
- Performance: Lighthouse Score, Bundle Size, Load Time
- Analytics: Views, Likes, Shares
- Erweiterte Features: Technologien, Herausforderungen, Lektionen
Analytics
- PageViews: Seitenaufrufe mit IP und User-Agent
- UserInteractions: Likes, Shares, Bookmarks, Kommentare
📊 Performance-Features
- Indizes auf allen wichtigen Feldern
- Pagination für große Datenmengen
- Caching für häufige Abfragen
- Optimierte Queries mit Prisma
- Real-time Updates möglich
🔄 Migration & Updates
# Schema ändern
npx prisma db push
# Bei Breaking Changes
npx prisma migrate dev --name update_schema
# Produktion
npx prisma migrate deploy
🌐 Deployment
Lokal zu Cloud Migration
- Datenbank exportieren:
pg_dump portfolio_db > backup.sql
-
Cloud-Datenbank einrichten (z.B. Supabase, PlanetScale, AWS RDS)
-
Umgebungsvariablen aktualisieren:
DATABASE_URL="postgresql://user:pass@host:5432/db?schema=public"
- Schema pushen:
npx prisma db push
🚨 Troubleshooting
PostgreSQL startet nicht
# Linux
sudo systemctl status postgresql
sudo systemctl start postgresql
# macOS
brew services list
brew services restart postgresql
Verbindungsfehler
# PostgreSQL Status prüfen
sudo -u postgres psql -c "SELECT version();"
# Verbindung testen
psql -h localhost -U portfolio_user -d portfolio_db
Prisma Fehler
# Client neu generieren
npx prisma generate
# Datenbank zurücksetzen
npx prisma db push --force-reset
📈 Monitoring & Wartung
Datenbank-Status
# Größe prüfen
psql -U portfolio_user -d portfolio_db -c "SELECT pg_size_pretty(pg_database_size('portfolio_db'));"
# Performance-Statistiken
psql -U portfolio_user -d portfolio_db -c "SELECT * FROM pg_stat_database;"
Backup & Restore
# Backup erstellen
pg_dump -U portfolio_user portfolio_db > backup_$(date +%Y%m%d).sql
# Backup wiederherstellen
psql -U portfolio_user -d portfolio_db < backup_20241201.sql
🎉 Nächste Schritte
- Datenbank starten:
npm run db:setup - Entwicklungsserver starten:
npm run dev - Admin-Bereich öffnen: http://localhost:3000/admin
- Projekte verwalten und dein Portfolio erweitern!
📚 Weitere Ressourcen
Fragen oder Probleme? Erstelle ein Issue oder kontaktiere mich! 🚀