- 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.
4.4 KiB
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:
projectsCollection 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_translationsfü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:
hobbiesCollection (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:
- Tech Stack: https://cms.dk0.dev/admin/content/tech_stack_categories
- Projects: https://cms.dk0.dev/admin/content/projects
- Hobbies: https://cms.dk0.dev/admin/content/hobbies
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 StackAbout.tsx- TODO: Hobbies aus Directus ladenProjects.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
- ✅ Alle Scripts ausführen (siehe oben)
- ✅ Verifizieren in Directus Admin Panel
- ⏭️ Code updaten (lib/directus.ts + Components)
- ⏭️ Testen auf localhost
- ⏭️ 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