Files
portfolio/scripts/README.md
denshooter e431ff50fc feat: Add Directus setup scripts for collections, fields, and relations
- Created setup-directus-collections.js to automate the creation of tech stack collections, fields, and relations in Directus.
- Created setup-directus-hobbies.js for setting up hobbies collection with translations.
- Created setup-directus-projects.js for establishing projects collection with comprehensive fields and translations.
- Added setup-tech-stack-directus.js to populate tech_stack_items with predefined data.
2026-01-23 02:53:31 +01:00

4.4 KiB

Directus Setup & Migration Scripts

Automatische Scripts zum Erstellen und Befüllen aller Collections in Directus.

📦 Verfügbare Scripts

1. Tech Stack ( Bereits ausgeführt)

# Collections erstellen
node scripts/setup-directus-collections.js

# Daten migrieren
node scripts/migrate-tech-stack-to-directus.js

Was erstellt wird:

  • tech_stack_categories (4 Kategorien: Frontend, Backend, Tools, Security)
  • tech_stack_items (~16 Items)
  • Translations (DE + EN)

2. Projects (🔥 Neu)

# Collections erstellen
node scripts/setup-directus-projects.js

# Daten aus PostgreSQL migrieren
node scripts/migrate-projects-to-directus.js

Was erstellt wird:

  • projects Collection mit 30+ Feldern:
    • Basics: slug, title, description, content
    • Meta: category, difficulty, tags, technologies
    • Links: github, live, image_url, demo_video
    • Details: challenges, lessons_learned, future_improvements
    • Performance: lighthouse scores, bundle sizes
  • projects_translations für mehrsprachige Inhalte
  • Migriert ALLE Projekte aus PostgreSQL

Hinweis: Läuft nur wenn Projects Collection noch nicht existiert!


3. Hobbies (🎮 Neu)

# Collections erstellen
node scripts/setup-directus-hobbies.js

# Daten migrieren
node scripts/migrate-hobbies-to-directus.js

Was erstellt wird:

  • hobbies Collection (4 Hobbies: Self-Hosting, Gaming, Game Servers, Jogging)
  • Translations (DE + EN)

🚀 Komplette Migration (alles auf einmal)

# 1. Tech Stack
node scripts/setup-directus-collections.js
node scripts/migrate-tech-stack-to-directus.js

# 2. Projects
node scripts/setup-directus-projects.js
node scripts/migrate-projects-to-directus.js

# 3. Hobbies
node scripts/setup-directus-hobbies.js
node scripts/migrate-hobbies-to-directus.js

Oder als One-Liner:

node scripts/setup-directus-collections.js && \
node scripts/migrate-tech-stack-to-directus.js && \
node scripts/setup-directus-projects.js && \
node scripts/migrate-projects-to-directus.js && \
node scripts/setup-directus-hobbies.js && \
node scripts/migrate-hobbies-to-directus.js

⚙️ Voraussetzungen

# Dependencies installieren
npm install node-fetch@2 dotenv @prisma/client

In .env:

DIRECTUS_URL=https://cms.dk0.dev
DIRECTUS_STATIC_TOKEN=your_token_here
DATABASE_URL=postgresql://...

📊 Nach der Migration

Directus Admin Panel:

API Endpoints (automatisch verfügbar):

# Tech Stack
GET https://cms.dk0.dev/items/tech_stack_categories?fields=*,translations.*,items.*

# Projects
GET https://cms.dk0.dev/items/projects?fields=*,translations.*

# Hobbies
GET https://cms.dk0.dev/items/hobbies?fields=*,translations.*

🔄 Code-Updates nach Migration

1. lib/directus.ts erweitern

// Bereits implementiert:
export async function getTechStack(locale: string)

// TODO:
export async function getProjects(locale: string)
export async function getHobbies(locale: string)

2. Components anpassen

  • About.tsx - Bereits updated für Tech Stack
  • About.tsx - TODO: Hobbies aus Directus laden
  • Projects.tsx - TODO: Projects aus Directus laden

🐛 Troubleshooting

Error: "Collection already exists"

→ Normal! Script überspringt bereits existierende Collections automatisch.

Error: "DIRECTUS_STATIC_TOKEN not found"

→ Stelle sicher dass .env vorhanden ist und require('dotenv').config() funktioniert.

Error: "Unauthorized" oder HTTP 403

→ Überprüfe Token-Rechte in Directus Admin → Settings → Access Tokens

Migration findet keine Projekte

→ Stelle sicher dass PostgreSQL läuft und DATABASE_URL korrekt ist.


📝 Nächste Schritte

  1. Alle Scripts ausführen (siehe oben)
  2. Verifizieren in Directus Admin Panel
  3. ⏭️ Code updaten (lib/directus.ts + Components)
  4. ⏭️ Testen auf localhost
  5. ⏭️ Deployen auf Production

💡 Pro-Tipps

  • Backups: Exportiere Schema regelmäßig via Directus UI
  • Version Control: Committe Schema-Files ins Git
  • Incremental: Scripts können mehrfach ausgeführt werden (idempotent)
  • Rollback: Lösche Collections in Directus UI falls nötig