# 10th October 2024 — Enhance static site migration to be fully data-driven with migration settings UI [#64](https://github.com/nbarrett/ngx-ramblers/issues/64)
## [build 333](https://github.com/nbarrett/ngx-ramblers/actions/runs/18823789797)

## Enhance static site migration to be fully data-driven (refs [#64](https://github.com/nbarlett/ngx-ramblers/issues/64)) ([1e51af9](https://github.com/nbarrett/ngx-ramblers/commit/1e51af9))

**What's New**

The static site migration system has been completely overhauled with a new admin UI at `/admin/migration-settings`. The system now supports data-driven configuration, WebSocket live updates, parent page modes with action buttons, specific album targeting, and idempotent re-runs. Content is now stored inline within PageContent rather than via separate ContentText references.

**Where to Find It**

- **Admin → Migration Settings**: New migration configuration interface with tabbed settings and live activity monitoring
- **Migration Engine**: Enhanced parent-page link scraping with directory fallback and per-page feedback
- **Content Management**: BREAKING CHANGE - PageContent now embeds inline text (contentText) instead of contentTextId for new migrations

**Benefits**

- **Visual Configuration**: Configure migrations through UI instead of code
- **Live Monitoring**: WebSocket keepalive and auto-reconnect provide resilient real-time updates during migration
- **Flexible Parent Pages**: Choose between migrating parent content as-is or creating action button rows for child pages
- **Targeted Migrations**: Migrate specific albums and control maximum children per parent page
- **Idempotent Operations**: Safe to re-run migrations - content upserts by path/name prevent duplicates
- **Better Image Handling**: Inline images are converted to absolute URLs and merged intelligently into text rows
- **Cleaner Content**: Shared text exclusions remove navigation elements and excluded images consistently
- **Migration History**: All migration activity persisted to database with progress/error tracking
- **Simplified Schema**: Inline content storage (columns.contentText) simplifies data model
- **Action Buttons**: Parent pages can automatically generate button rows linking to child pages
