Files
aia-website/www/reports/migration-summary.md
T

138 lines
5.9 KiB
Markdown

# Migration Summary
## Status
A maintainable Astro migration and substantial fidelity-first pass are
implemented. The live public site, not the wget mirror, was used as the
authority for the shared shell, English and Spanish homepages, service-page
family, team page, library indexes, and blog-post family.
## Migrated Content and Assets
- 46 English, 12 Spanish, and 7 Arabic library posts.
- 21 English, 9 Spanish, and 2 Arabic page records.
- One author record per language.
- 149 self-hosted images, 20 font files, and two PDF downloads.
- Current June and May 2026 English library articles are included.
The raw mirror remains untouched. HubSpot-generated wrappers, analytics,
scripts, CSS, query-language duplicates, AMP variants, pagination, and author
archive variants are not carried into the Astro implementation.
## Live-Source Fidelity Pass
Live pages inspected during the pass include:
- English and Spanish homepages
- ABA Therapy, Autism Evaluations, and Learner Social Club
- About, Team, and Client Consultation
- English and Arabic Library indexes
- Representative current library articles
Implemented fidelity work includes:
- Rebuilt the live two-tier header, navigation hierarchy, language controls,
utility links, footer columns, and contact information.
- Rebuilt the complete English and Spanish homepages in their live section
order using one reusable Astro component and self-hosted source assets.
- Rebuilt service pages around the live compact title banner and editorial
presentation, with current visible headings and working calls to action.
- Added a dedicated live-derived team card grid rather than presenting the
extracted team content as a generic article.
- Rebuilt library indexes and blog-post presentation around the live sidebar,
article list, byline, featured-image, and counter patterns.
- Replaced generic oversized cards, rounded controls, and marketing heroes
with live-derived typography, palette, widths, spacing, and compact controls.
- Corrected material live/mirror discrepancies found during the pass,
including current homepage ESA copy, testimonial content, and ABA copy.
## URLs and Redirects
Clean public URLs are preserved, including:
- `/aba-therapy`
- `/autism-evaluations`
- `/learner-social-club`
- `/client-consultation`
- `/library`
- `/library/post-slug`
- available `/es/...` and `/ar/library/...` routes
The generated sitemap contains 97 canonical URLs. Nginx rewrites exist only
for the brief aliases `/aba`, `/autismevaluations`, and `/learnersocialclub`.
## Forms
Visible consultation/contact-style pages render styled static HTML forms with
backend and spam-protection TODO comments. Submission is intentionally
disabled. Appointment and enrollment calls to action route to the static
consultation page rather than retaining the production Jotform backend.
## Multilingual
- Spanish has the full live-derived homepage, translated service pages,
library index, and available translated posts.
- Arabic has RTL support, a clearly marked placeholder landing page, the live
library family, and available Arabic posts.
- Language-switcher choices are emitted only when the corresponding Astro
route exists, preventing dead translated-route links.
- Arabic pages use `lang="ar"` and `dir="rtl"`; English and Spanish use LTR.
- No large Arabic translations were invented.
## Likes and Views
The post counter uses `PUBLIC_AIA_API_BASE`, defaulting to
`https://api.azinstitute4autism.com`. Its contract was verified against the
current live-site script:
- `POST /stats/batch` for likes and views
- `POST /likes` to like
- `DELETE /likes/{slug}` to unlike
It preserves cookie-backed liked state and degrades gracefully if the API is
unavailable.
## SEO and Accessibility
- Canonicals, Open Graph tags, Twitter card tags, semantic titles, and global
organization JSON-LD are emitted by shared layouts.
- Library-index canonicals and current visible page H1s are explicitly set.
- Extracted image alt text is retained where available.
- Semantic landmarks, skip link, labeled forms, keyboard-operable navigation,
language/direction attributes, and responsive layouts are present.
## Validation Results
- `npm install --ignore-scripts`: completed; 323 packages audited with one
moderate advisory. The current shell uses Node `20.17.0`, below the declared
`>=20.19.0`; `flake.nix` now selects Node 22.
- `npm run audit:links`: passed with zero broken internal source links. The
audit now checks generated routes, root-relative references, relative
Markdown links, and public assets when rendered output is unavailable.
- `npm run generate:sitemap`: passed; generated 97 URLs.
- `npm run generate:redirects`: passed.
- All migration `.mjs` tools and the sandbox DNS helper pass `node --check`.
- The Astro compiler parsed all 33 `.astro` files successfully.
- `npm run build`: blocked before compilation because this autonomous sandbox
denies `/etc/hosts`, causing `getaddrinfo EAI_AGAIN localhost`.
- `npm run build:sandbox`: bypasses that DNS lookup and reaches Vite, then the
sandbox rejects esbuild's required child process with `spawn EPERM`.
- Nix shell verification and `npm audit` retrieval were blocked by sandbox
proxy/cache network resets.
Run `npm run build` outside the Codex sandbox with Node 20.19+ or Node 22 for
final production-build proof.
## Manual Review
- Perform full-page desktop and mobile visual comparisons for page-specific
layouts beyond the completed homepage, team, service, library, and article
families.
- Editorially review extracted long-form content for remaining mirror artifacts,
stale phone/email references, and heading hierarchy.
- Review all source alt text, keyboard behavior, screen-reader output, and
contrast with accessibility tooling.
- Have fluent reviewers approve Spanish content and Arabic RTL presentation.
- Select and connect a form backend with spam protection before launch.
- Validate like/view CORS, credentials, and production behavior after deployment.