Textual content
Headings, body copy, lists, tables, captions, forms, comments, authors, dates, and useful generated HTML.
Dead site rescue for Laravel builders
Gjallr inventories old source trees, inspects SQL dumps, extracts content and visual evidence, checks Wayback when it matters, and writes a rescue report a builder can actually use. Not a vibe. A working salvage rig.
What it saves
Gjallr keeps the material a builder actually needs, without pretending every dead site was WordPress or every rebuild should copy the old mess.
Headings, body copy, lists, tables, captions, forms, comments, authors, dates, and useful generated HTML.
Images, downloads, upload records, local file checks, recovered archive copies, and clear misses when a file is gone.
SQL tables, custom records, settings, members, forms, products, events, and the mapping clues that explain them.
Legacy paths, redirects, canonical hints, titles, descriptions, Open Graph fields, and old-link preservation notes.
Colors, fonts, spacing clues, layout regions, repeated components, responsive hints, and screenshot evidence.
Static rescue reports that make the evidence readable before the builder or AI starts sketching the final site.
Already here
Gjallr now has the boring, valuable parts: commands, a Laravel runtime, a rescue skill pack, helper scripts, fixtures, tests, and a static project site. The useful sort of bragging.
Imported material is served through normal Laravel routes: homepage, content pages, taxonomy archives, navigation, comments, media, and AI-friendly JSON.
Posts, pages, comments, terms, menus, media records, SEO fields, redirects, and legacy query paths already map into clean Laravel tables.
Archive checks, missing-media recovery, and URL discovery are opt-in, bounded, dry-run friendly, and stored as evidence instead of gospel.
The bundled agent skill covers safety, content extraction, asset salvage, SQL inspection, visual tokens, static rendering, Wayback comparison, and builder handoff.
Source inventory, SQL inventory, HTML extraction, CSS token extraction, optional Playwright screenshots, and static report generation live in the repo.
Fixtures cover WordPress imports, static HTML, custom PHP treated as inert text, suspicious code detection, Wayback recovery, and report generation.
Wayback
Internet Archive requests stay opt-in, bounded, and dry-run friendly. Gjallr can check availability, recover missing uploads, and suggest archived URLs. It does not pretend the archive is truth carved into stone.
Limits are explicit, user agents are required for real requests, and dry runs come first.
Missing uploads can be recovered into Gjallr-owned storage without overwriting local evidence by accident.
Archived HTML paths become suggestions. A builder still decides what belongs in the revived site.
Refuses
Gjallr is not here to keep the old machine coughing. It extracts the salvage, names the uncertainty, then gets out of the way.
The rescued runtime is read-only. Editing belongs in the rebuild, not in the salvage rig.
WordPress, custom PHP, static exports, and backup folders get inspected before any importer is chosen.
The build command writes dossiers. A builder directs the rebuild. A frontend-capable AI can help turn the evidence into the finished Laravel site.
Repo map
This map shows the sharp edge of the project: untrusted source goes through ingestion, crosses a guarded transformation boundary, then becomes a clean Laravel runtime and builder handoff. The warning badges mark the parts that deserve adult supervision.
Generated from the current repo structure. The map is evidence, not prophecy.
Pipeline
Find likely site roots and SQL dumps across old project folders, hosting backups, duplicated volumes, and dated snapshots.
Treat old PHP, plugins, themes, uploads, shell files, and scripts as inert evidence. Flag suspicious code before rendering anything.
Pull out content, media, tables, routes, SEO clues, colors, fonts, layout regions, and missing-file evidence.
Use bounded archive requests to compare copy, layout, media, and URLs when the archive can answer a real question.
Record what survived, what is missing, what is uncertain, what should be reproduced, and what should be simplified.
Generate a static rescue report with no old-site JavaScript and no external runtime dependency.
Use Laravel, Blade, Tailwind v4, and Alpine.js as modern defaults. The builder still decides what the final site becomes.
Bundled skill
The rescue skill tells an agent how to inspect old web projects as hostile evidence before touching Laravel code. It treats WordPress as one case, not the default answer.
Find likely site roots, nearby SQL dumps, dated backups, duplicated volume copies, and path/name clues that belong together.
Recover content, media, SQL tables, routes, colors, layout clues, screenshots, safety findings, and uncertainty before choosing a rescue path.
The demo case is not a WordPress proof. It is the reason Gjallr must handle custom PHP and archive mess without making lazy assumptions.
AI handoff
Gjallr is meant to hand a website builder clean evidence: safety findings, source classification, rescued routes, content, media status, SQL clues, colors, layout evidence, archive snapshots, and rebuild notes. The builder can then direct a frontend-skilled AI agent instead of guessing from rubble.
Use the dossier, rescue report, schema notes, JSON page views, visual tokens, media paths, old URLs, and Wayback references as the source material.
The AI can draft layouts, components, copy structure, and responsive details. The builder decides what survives.
Rebuild this as a clean Laravel frontend with Blade, Tailwind v4, and Alpine.js. Preserve intent, routes, SEO context, and media evidence. Do not recreate WordPress.
Rescue proof
The product surface is ready for a real rescue example: dead source, archive evidence, rescue report, and rebuilt Laravel result. Until then, the fixtures prove the machinery without pretending a toy screenshot is a case study.
A screenshot of the site as found: missing media, old PHP shell, broken WordPress theme, static export, or whatever state it died in.
Wayback
A Wayback snapshot showing what the site used to look like, useful details, and recovered evidence.
Report
The static rescue report turns safety findings, content, media, routes, visual tokens, and rebuild notes into something a builder can inspect.
Quick start
$ composer install
$ php artisan gjallr:analyze-source --sql-dump=/path/to/site.sql.gz --site-path=/path/to/site-root --source-label="old site"
$ php artisan gjallr:import --sql-dump=/path/to/site.sql.gz --site-path=/path/to/site-root --source-label="old site"
$ php artisan gjallr:build --source-label="old site" --format=both
Boundary
WordPress knowledge belongs in ingestion. Archive mechanics belong in Wayback. Runtime models, controllers, routes, and views stay clean. If `wp_*` leaks into the Laravel runtime, something has gone off the rails.
Why Gjallr?
Gjallr nods at Gjallarhorn, the horn sounded to wake gods and announce the end of an age. That fits because a dead WordPress site is already the end of an age. Gjallr sounds the alarm, gathers what survived, and turns wreckage into evidence for a proper rebuild.
Gjallr has the commands, tests, runtime boundaries, Wayback support, rescue skill, helper scripts, and static report generator. Feed it dead source material. Get readable evidence. Then rebuild with your hands on the wheel.