# Directus Bootstrap Legt das Skrift-Datenmodell (Collections, Beziehungen, Rollen/Rechte, Seed) idempotent in einer laufenden Directus-Instanz an. Mehrfach ausführbar – Vorhandenes wird übersprungen. ## Voraussetzungen - Directus läuft (siehe `../docker-compose.yml`) und ist erreichbar. - Node ≥ 18 (kein `npm install` nötig – nutzt nur Bordmittel). - Ein Admin-Zugang: entweder ein **statischer Admin-Token** oder Admin-E-Mail/Passwort. ## Ausführen Mit Token (empfohlen – Token im Directus-Admin unter dem Admin-Nutzer erzeugen): ```bash DIRECTUS_URL=https://admin.skrift.de \ DIRECTUS_TOKEN= \ node bootstrap.mjs ``` Alternativ mit Login: ```bash DIRECTUS_URL=https://admin.skrift.de \ ADMIN_EMAIL=admin@skrift.de \ ADMIN_PASSWORD=... \ node bootstrap.mjs ``` Nur Schema + Seed, ohne Rollen/Rechte (zum stufenweisen Testen): ```bash SKIP_PERMISSIONS=1 DIRECTUS_URL=... DIRECTUS_TOKEN=... node bootstrap.mjs ``` ## Was es anlegt - **Collections:** customers, products, formats, motifs, price_items, pricing_settings, vouchers, voucher_redemptions, orders, order_entries, order_addons, jobs, status_history. - **Rollen/Policies:** Staff (volle Verwaltung), Customer (nur Eigenes + Katalog lesen), Public (aktive Kataloge lesen), Service (Backend/Produktion: lesen + Status schreiben). - **Seed:** Produkte (inkl. Kontakt-Produkte), Formate, `price_items` mit den Konfigurator-Preisen, `pricing_settings` inkl. Zeichen-Whitelist (1:1 aus job-manager). ## Nach dem Lauf – manuell - **Service-Token:** Nutzer in Rolle *Service* anlegen, statischen Token erzeugen und in die `.env` von skrift-backend und skrift-produktion eintragen. - **Preise prüfen:** `price_items` mit Preis `0` (Schreib-/Gestaltungsservice, Motiv-Upload) und die Produkt-Basispreise im Admin auf die echten Werte setzen. - **Preisformel:** `pricing_settings.formula` ist ein Platzhalter – hier die reale Formel hinterlegen. > Hinweis: Das Skript zielt auf Directus 11 (Policy-Rechtemodell) und wurde nicht gegen > eine Live-Instanz getestet. Falls beim Lauf ein Schritt fehlschlägt, die Konsolenausgabe > schicken – dann wird die betroffene Stelle gezielt korrigiert.