This commit is contained in:
Dennis Konkol
2025-09-02 23:46:36 +00:00
parent ded873e6b4
commit 203a332306
22 changed files with 3886 additions and 194 deletions

228
README-DATABASE.md Normal file
View File

@@ -0,0 +1,228 @@
# 🗄️ 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)
```bash
# 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:**
```bash
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
```
**macOS:**
```bash
brew install postgresql
brew services start postgresql
```
**Windows:**
- [PostgreSQL Download](https://www.postgresql.org/download/windows/)
### 2. Datenbank einrichten
```bash
# 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`:
```env
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
```bash
npm install
npx prisma generate
npx prisma db push
npx prisma db seed
```
## 🎯 Verfügbare Befehle
```bash
# 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
```bash
# 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:**
```bash
pg_dump portfolio_db > backup.sql
```
2. **Cloud-Datenbank einrichten** (z.B. Supabase, PlanetScale, AWS RDS)
3. **Umgebungsvariablen aktualisieren:**
```env
DATABASE_URL="postgresql://user:pass@host:5432/db?schema=public"
```
4. **Schema pushen:**
```bash
npx prisma db push
```
## 🚨 Troubleshooting
### PostgreSQL startet nicht
```bash
# Linux
sudo systemctl status postgresql
sudo systemctl start postgresql
# macOS
brew services list
brew services restart postgresql
```
### Verbindungsfehler
```bash
# PostgreSQL Status prüfen
sudo -u postgres psql -c "SELECT version();"
# Verbindung testen
psql -h localhost -U portfolio_user -d portfolio_db
```
### Prisma Fehler
```bash
# Client neu generieren
npx prisma generate
# Datenbank zurücksetzen
npx prisma db push --force-reset
```
## 📈 Monitoring & Wartung
### Datenbank-Status
```bash
# 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
```bash
# 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
- [Prisma Dokumentation](https://www.prisma.io/docs)
- [PostgreSQL Dokumentation](https://www.postgresql.org/docs/)
- [Next.js API Routes](https://nextjs.org/docs/api-routes/introduction)
---
**Fragen oder Probleme?** Erstelle ein Issue oder kontaktiere mich! 🚀