Legacy Page Builder — sichere Abschaltung
Was / Warum
Was: Der React-Page-Builder im Dashboard (Page + PageBlock, Plugin-System, /dashboard/content/pages/*) stammt aus der SPA-Phase, in der Center-Webseiten blockweise im Dashboard gebaut wurden.
Warum abschalten: Heute laufen Center-Websites über Center-Website-Templates, WordPress (Content Areas, Themes) und v0/MCP/API. Der Page Builder ist aus der Navigation verschwunden, Code und DB-Tabellen sind aber noch vorhanden — ohne klare Nutzungsmessung riskant zu löschen.
Wer ist betroffen: Entwicklung/Betrieb (Aufräumen), ggf. Center mit alten Page-Daten in der DB. Nicht betroffen: WordPress-Redaktion, Template-Reiter „Webseite“, pagesConfig in der Website-Konfiguration.
Betriebsstatus (2026-06)
| Stufe | Status | Pflicht? |
|---|---|---|
| Phasen 1–4 (Navigation, UI, APIs, Write-Guard) | Erledigt | War nötig für sauberen Betrieb |
| Phase 5 (DB-Archiv / DROP) | Optional — zurückgestellt | Nein |
Für Redaktion und Live-Center: nichts zu tun. Die Tabellen Page / PageBlock können unbegrenzt liegen bleiben; Schreibzugriffe sind deaktiviert, Websites nutzen sie nicht.
Phase 5 nur erwägen, wenn ihr bewusst Schema vereinfachen oder historische Zeilen archivieren wollt — mit Backup und Staging, siehe unten. Nicht für Render-Deploy, Render-Build oder Dashboard-Updates nötig.
Abgrenzung (nicht verwechseln)
| Begriff | Bedeutung | Status |
|---|---|---|
Page / PageBlock (Prisma) | Legacy SPA-Seiten + Blöcke im Dashboard | Write-disabled; DB-Aufräumen optional (Phase 5 zurückgestellt) |
pagesConfig (website-config JSON) | Welche Template-Seiten (Gutschein, Jobs, …) sichtbar sind | Behalten |
WordPress ContentArea / ContentSection | WP-Integration, dynamische Bereiche | Behalten |
Center-Website templates/*/pages/ | React-Template-Routen (MEC, ILG, …) | Behalten |
MCP cockpit_get_center_website_config | templateContent, pagesConfig, Design | Behalten |
Wo lag der Legacy-Code? (Phase 2 entfernt, 2026-06)
| Bereich | Pfad | Status |
|---|---|---|
| Seiten-CRUD UI | apps/dashboard/src/app/dashboard/content/pages/ | Entfernt |
| Legacy Page-Builder UI | compact-page-builder, block-library-modal, … | Entfernt |
| APIs | /api/pages, /api/centers/.../pages, Debug/Migration-Routen | Entfernt |
| Versteckte Einstiege | WebsitePages, CenterPageSync, menu-editor-Links | Entfernt |
| Block-Editor (WP) | components/page-builder/ (4 Dateien), content-section-builder/ | Behalten |
| Plugin-System | apps/dashboard/src/lib/plugin-system/ | Behalten (Content Areas + alte Theme-Helfer mit prisma.page) |
| Deprecation-Liste | deprecated-navigation.ts | Aktualisiert (nur Doku/Hinweise) |
Center-Website (apps/center-website) liest keine Page/PageBlock-API mehr für Templates — nur noch website-config, CMS-Content, Templates.
So prüfen (Audit)
node scripts/audit-legacy-page-builder.mjs
node scripts/audit-legacy-page-builder.mjs --json
node scripts/audit-legacy-page-builder-usage.mjs
Das Skript liefert:
- Code-Inventar — Dateianzahl pro Legacy-Ordner
- API-Liste — welche Routen noch existieren
- DB-Statistik (wenn
DATABASE_URLgesetzt) — Anzahl Pages/Blocks, Center, zuletzt bearbeitet
Production-Stand (Live-DB, 2026-06)
Lokale DATABASE_URL = Render Production (mallos_database_7jh1). Typische Zahlen:
| Kennzahl | Wert | Bedeutung |
|---|---|---|
ShoppingCenter gesamt | 97 | Alle aktuell angelegten Center in Production |
Center mit Page-Zeilen | 50 | Nur diese bekamen beim Anlegen Auto-Seeding |
Center ohne Page-Zeilen | 47 | Kein Legacy Page Builder — normale Center ohne Relikt |
Page gesamt | 299 | Nicht 97×N — eher ~50×6 Standard-Seed (+ Ausreißer) |
Verteilung Pages pro Center: 47×6 Seiten, 1×14 (Test-HBB), je 1× mit 1–2 Seiten.
Seeding-Indikatoren: 100 % createdBy: system, 93 % exakt 6er-Standard (Home, Shops, News, …), 99 % nie bearbeitet. Auslöser: createUniversalPluginPages in centers/create (nur bei bestimmten Organisationen / Theme-Zuweisung), nicht bei jedem der 97 Center.
Interpretation:
- Viele Pages + kürzliche
updatedAt→ vor Löschung mit Center-Betrieb klären - Pages nur bei alten Centern +
websiteStack= WordPress/Template → eher Archiv-Kandidaten - 0 Pages → Code entfernen risikoärmer (APIs trotzdem erst deprecaten)
Empfohlene Phasen (ohne Datenverlust)
Phase 1 — Messen (1–4 Wochen)
- Audit-Skript in CI oder monatlich manuell
- Optional: Middleware-Log auf
/api/pages,/api/centers/*/pages(Zähler in Log/Better Stack) - Keine Löschung
Phase 2 — Einstiege + Routen entfernt ✅ (2026-06)
Der Page Builder ist nicht mehr in der Haupt-Navigation und die Legacy-Routen sind gelöscht (kein Redirect — Bookmarks → 404).
Erledigt:
- Links zu Legacy-Routen entfernt (
CenterPageSync,WebsitePages,website-technology-badge,menu-editor) - Ordner gelöscht:
app/dashboard/content/pages/,components/pages/, Legacy-Teile vonpage-builder/,/api/pages*, Center-Pages-APIs, Migration/Maintenance-APIs - Behalten:
compact-canvas,content-section-builder,plugin-system(WordPress Content Areas)
Offen (Phase 4): Einige Theme-Setup-Routen (apply-theme, themes/smg/setup, setup-new-features) schreiben noch prisma.page — bei Bedarf no-op oder deprecaten.
Phase 3 — Kein neues Seeding ✅ (2026-06)
createUniversalPluginPagesauscenters/create,setup-repair,theme/regeneratedeaktiviert- Bestehende
Page-Zeilen bleiben (Archiv bis Phase 5)
WordPress — keine Legacy-Page-Abhängigkeit
WordPress-Center nutzen eigene APIs, nicht Page/PageBlock:
| WordPress-Plugin ruft | Dashboard-Modell | Legacy Page? |
|---|---|---|
/api/content-areas/by-key | ContentArea + ContentSection | Nein |
/api/wordpress/content-areas | ContentArea (Sync) | Nein |
| Batch-Sync (Shops, News, …) | CMS-Entitäten | Nein |
| Elementor Dynamic Tags / Widgets | content-areas/by-key | Nein |
Production-Stand (Live-DB): 22 WordPress-Website-Einträge (12 Center), 380 PageContent-Zeilen (Center-Website-Templates), 299 Legacy-Page-Zeilen (Relikt, davon 10 Center auch mit WP — WP liest sie nicht).
Render-Logs: GET /api/pages* und /api/centers/*/pages* in 7 Tagen 0 Treffer; page-content und CMS-APIs aktiv.
Phase 4 — prisma.page-Schreibzugriffe deaktiviert ✅ (2026-06)
Zentraler Guard: apps/dashboard/src/lib/legacy-page-builder-guard.ts (LEGACY_PAGE_WRITES_DISABLED = true).
Betroffen (no-op + Log, keine neuen Page/PageBlock-Zeilen):
ThemeManager/SpaThemeManager— Seiten-Generierung aus Theme-TemplatescreateDetailPageTemplates,createCMImmoThemePagesorganizations/.../apply-theme,themes/smg/setup,setup-new-features-Routen- API
add-hbb-blocks— entfernt
Behalten (Read-only): collect-center-data exportiert bestehende Legacy-Pages für Backups.
Offen (Phase 5 — optional, zurückgestellt): DB-Tabellen archivieren oder später droppen — kein Muss für den Betrieb. Plan und SQL liegen bereit, Ausführung erst bei expliziter Team-Entscheidung.
Plan (nicht ausführen ohne Freigabe): packages/database/docs/20260604_legacy_page_pageblock_archive_PHASE5_SAFE.md
SQL 5a (manuell): packages/database/migrations/20260604_legacy_page_archive_tables_SAFE.sql
Phase 5 — DB archivieren (optional, nach Team-OK)
Phase 5 ist technische Schuldentlastung, nicht Betriebsvoraussetzung. Phasen 1–4 reichen für Produktion. Risiko: 5a/5b gering (additiv); 5c (DROP) nur mit Backup und Monate nach 5a.
Dashboard-Routen + Legacy page-builder UI— erledigt (Phase 2)plugin-system-Helfer mitprisma.page— belassen (Writes noop via Guard)- DB: Expand-Contract — Archiv-Tabelle oder Dump, kein blindes
DROP db_structure.md+ Changelog — erst nach tatsächlicher Ausführung von 5a/5c
Vorbereitung (read-only):
node scripts/audit-legacy-page-builder.mjs
node scripts/backup-legacy-page-builder-tables.mjs # Dry-run (Zählung)
node scripts/backup-legacy-page-builder-tables.mjs --write # JSON nach backups/legacy-page-builder/
Das Backup-Skript exportiert Page und PageBlock als JSON — ohne Löschen oder Schema-Änderung. Ausgabe liegt unter backups/ (gitignored).
Was testen
node scripts/audit-legacy-page-builder.mjs— DB-Zahlen notieren- Center mit WordPress: Website-Reiter, Content Areas, Live-URL — unverändert
- Center-Website Template (MEC/ILG): Navigation/
pagesConfig— unverändert - MCP:
cockpit_get_center_website_config— liefert weitertemplateContent/pagesConfig - Nach Phase 2: alte Bookmarks
/dashboard/content/pages— 404 (Route entfernt), kein Redirect nötig
Betrieb
- Keine neuen Env-Variablen für Phase 1–4
- Phase 5: optional; Backup-Skript und SQL nur bei bewusster Archiv-Entscheidung
- Siehe auch Navigation & Module (deprecated) und
deprecated-navigation.ts
Siehe auch
- Mall-OS UI — Design-Tokens
- Public Center Website API
- Plattform-Changelog
Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /developer-guide/legacy-page-builder-deprecation