Files
portfolio/README-DATABASE.md
Dennis Konkol 203a332306 update
2025-09-02 23:46:36 +00:00

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

  1. Datenbank exportieren:
pg_dump portfolio_db > backup.sql
  1. Cloud-Datenbank einrichten (z.B. Supabase, PlanetScale, AWS RDS)

  2. Umgebungsvariablen aktualisieren:

DATABASE_URL="postgresql://user:pass@host:5432/db?schema=public"
  1. 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

  1. Datenbank starten: npm run db:setup
  2. Entwicklungsserver starten: npm run dev
  3. Admin-Bereich öffnen: http://localhost:3000/admin
  4. Projekte verwalten und dein Portfolio erweitern!

📚 Weitere Ressourcen


Fragen oder Probleme? Erstelle ein Issue oder kontaktiere mich! 🚀