7ef8b3a585
- document the homepage frontmatter workflow in README.md - note the new section-oriented homepage structure in migration-summary.md - update cleanup and link reports to match the current implementation - keep the repo docs aligned with the content-driven homepage model
151 lines
6.8 KiB
Markdown
151 lines
6.8 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.
|
|
- 167 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.
|
|
- Moved the English and Spanish homepage copy into section-oriented `home:`
|
|
frontmatter blocks so the page is easier to edit in Front Matter CMS.
|
|
- Rebuilt service pages around the live compact title banner and editorial
|
|
presentation, with current visible headings and working calls to action.
|
|
- Recovered and restored the live decorative hero imagery for all mapped
|
|
English and Spanish page routes plus every language's library index.
|
|
- Restored the consultation form section's injected background image.
|
|
- 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.
|
|
- Converted FAQ-bearing posts to MDX and recreated their live-style accordions
|
|
with a reusable component that emits matching `FAQPage` JSON-LD.
|
|
- Restored 32 live-source blog blockquotes with their original emphasis,
|
|
links, fawn backgrounds, spacing, rounded presentation, and quote-mark SVG.
|
|
- 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 audit:images`: passed with no missing mapped page banners, section
|
|
backgrounds, or blog featured images.
|
|
- `npm run audit:blog`: passed with no article-header content duplicated in
|
|
blog content and valid MDX FAQ components for 125 questions across 19 posts.
|
|
- `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.
|