cleanup
This commit is contained in:
@@ -1,228 +0,0 @@
|
||||
# 🗄️ 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! 🚀
|
||||
Reference in New Issue
Block a user