Rust / Adult-services directory migrationPublic static release observed

Moving the public side of a 51,000-page adult-services directory off Laravel

I rebuilt the public directory as immutable Rust releases, migrated legacy data through a controlled PostgreSQL shadow, validated every route before an atomic blue/green switch, and kept the previous release ready for rollback.

51,098 generated pages · 409,495 route outcomes · 321,904 redirects

The flow

How the pieces connect

  1. Legacy Laravel and MariaDB
  2. Controlled PostgreSQL shadow
  3. Frozen build input
  4. Immutable Rust release
  5. Full validation
  6. Blue/green switch
01

The job

The old application mixed public pages, legacy data, PHP, and a live database on the request path. Replacing it meant preserving a large, messy URL history without carrying the old runtime forward.

02

The hard part

Freeze one source state, classify every old URL, keep unreviewed source records out of the public release, and make rollback faster than debugging live.

03

How I built it

  1. Use the legacy database as migration input, not as a permanent dependency of the new public runtime.
  2. Generate one authoritative manifest covering live pages, redirects, removals, canonicals, and assets.
  3. Keep imported records private until review, reject records stating an under-18 age, and track approved-media rights before publication.
  4. Validate the complete candidate release before changing production traffic.
  5. Keep the previous release intact for a direct blue/green rollback.
04

What I verified

  • 51,098 generated public pages
  • 409,495 classified route outcomes
  • 321,904 redirects
  • 303,310 migration-ledger entries

Current state: These figures belong to the observed public release. They show the release size and route-migration machinery, not the correctness of every imported record or later control-plane work.