Compare commits
3
Commits
8c9c581cc0
...
aebd53639a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aebd53639a
|
||
|
|
bf3d39a643
|
||
|
|
664d749439
|
@@ -13,42 +13,20 @@ content only after verifying it against the live public site.
|
||||
|
||||
## Project
|
||||
|
||||
This repository contains a mirrored copy of the Arizona Institute for Autism website.
|
||||
|
||||
Raw mirror source:
|
||||
|
||||
```txt
|
||||
./www.azinstitute4autism.com
|
||||
```
|
||||
|
||||
New Astro site target:
|
||||
|
||||
```txt
|
||||
./www
|
||||
```
|
||||
|
||||
The mirror was created with:
|
||||
|
||||
```sh
|
||||
wget --mirror --page-requisites --adjust-extension --convert-links --no-parent https://www.azinstitute4autism.com
|
||||
```
|
||||
|
||||
Do not modify, move, rename, or delete `./www.azinstitute4autism.com`.
|
||||
|
||||
Treat the mirror as read-only raw source material.
|
||||
|
||||
The live public website is the single source of truth:
|
||||
|
||||
```txt
|
||||
https://www.azinstitute4autism.com
|
||||
```
|
||||
|
||||
Use the mirror as a convenient local extraction and inspection aid only. The
|
||||
mirror may contain stale, missing, rewritten, or incorrectly downloaded
|
||||
content and assets. Verify content, design, URLs, metadata, assets, and
|
||||
responsive behavior against the live public site before treating them as
|
||||
authoritative. When the live site and mirror disagree, follow the live site and
|
||||
document material discrepancies.
|
||||
Verify content, design, URLs, metadata, assets, and responsive behavior against
|
||||
the live public site before treating them as authoritative.
|
||||
|
||||
## Primary goal
|
||||
|
||||
@@ -221,10 +199,9 @@ Favor:
|
||||
Before implementing a page family or shared component:
|
||||
|
||||
1. Inspect the live page and its HTML, CSS, assets, and responsive behavior.
|
||||
2. Use the mirror to accelerate local extraction and inspection.
|
||||
3. Resolve any discrepancy in favor of the live public site.
|
||||
4. Record the source structure and important visual details.
|
||||
5. Identify which patterns are truly shared and which are page-specific.
|
||||
2. Resolve any discrepancy in favor of the live public site.
|
||||
3. Record the source structure and important visual details.
|
||||
4. Identify which patterns are truly shared and which are page-specific.
|
||||
|
||||
After implementation, compare the Astro output with the live public site at
|
||||
representative desktop and mobile viewport widths. Check the full page, not
|
||||
@@ -365,10 +342,9 @@ reports/migration-summary.md
|
||||
Before large filesystem changes:
|
||||
|
||||
1. Inspect the live public site.
|
||||
2. Inspect the mirror and identify relevant discrepancies.
|
||||
3. Inspect the relevant source HTML, CSS, and assets in detail.
|
||||
4. Summarize the implementation and visual-validation plan.
|
||||
5. Proceed methodically.
|
||||
2. Inspect the relevant source HTML, CSS, and assets in detail.
|
||||
3. Summarize the implementation and visual-validation plan.
|
||||
4. Proceed methodically.
|
||||
|
||||
At the end of a task, summarize:
|
||||
|
||||
|
||||
+19
-54
@@ -7,21 +7,15 @@ brief provides detailed implementation guidance. If any wording here appears
|
||||
to conflict with `AGENTS.md`, follow `AGENTS.md` and correct this brief before
|
||||
continuing.
|
||||
|
||||
This is a fidelity-first migration, not a redesign. The raw mirror is a
|
||||
convenient local extraction and inspection aid, but the live public site is the
|
||||
This is a fidelity-first migration, not a redesign. The live public site is the
|
||||
single content and visual source of truth. The `migration-foundation` branch
|
||||
may be consulted for nonvisual tooling and recovered content, but it must not
|
||||
be used as the visual baseline.
|
||||
|
||||
## Task
|
||||
|
||||
Migrate the public Arizona Institute for Autism website from a mirrored HubSpot-generated static copy into a clean, maintainable Astro + TypeScript site.
|
||||
|
||||
Raw mirrored source:
|
||||
|
||||
```txt
|
||||
./www.azinstitute4autism.com
|
||||
```
|
||||
Migrate the public Arizona Institute for Autism website into a clean,
|
||||
maintainable Astro + TypeScript site.
|
||||
|
||||
New Astro project target:
|
||||
|
||||
@@ -29,12 +23,6 @@ New Astro project target:
|
||||
./www
|
||||
```
|
||||
|
||||
The raw mirror was created with:
|
||||
|
||||
```sh
|
||||
wget --mirror --page-requisites --adjust-extension --convert-links --no-parent https://www.azinstitute4autism.com
|
||||
```
|
||||
|
||||
There is no HubSpot export, no HubSpot CLI access, and no HubSpot API access.
|
||||
|
||||
Use the live public website as the single source of truth:
|
||||
@@ -43,15 +31,9 @@ Use the live public website as the single source of truth:
|
||||
https://www.azinstitute4autism.com
|
||||
```
|
||||
|
||||
Use the local mirror as a convenient extraction and inspection aid. It may
|
||||
contain stale, missing, rewritten, or incorrectly downloaded content and
|
||||
assets. Verify content, design, URLs, metadata, assets, and responsive behavior
|
||||
against the live site. When the live site and mirror disagree, follow the live
|
||||
site and document material discrepancies.
|
||||
|
||||
If the live site is temporarily unavailable, work that depends on its authority
|
||||
must remain explicitly unverified rather than silently treating the mirror as
|
||||
authoritative.
|
||||
Verify content, design, URLs, metadata, assets, and responsive behavior against
|
||||
the live site. If the live site is temporarily unavailable, work that depends
|
||||
on its authority must remain explicitly unverified.
|
||||
|
||||
## High-level goal
|
||||
|
||||
@@ -76,10 +58,6 @@ Create a new Astro site in `./www` that is:
|
||||
|
||||
Do not modify or delete:
|
||||
|
||||
```txt
|
||||
./www.azinstitute4autism.com
|
||||
```
|
||||
|
||||
Do not depend on:
|
||||
|
||||
- HubSpot CLI
|
||||
@@ -283,13 +261,12 @@ Do not use Tailwind.
|
||||
For each page family or shared component:
|
||||
|
||||
1. Inspect the live page, HTML, CSS, assets, and responsive behavior.
|
||||
2. Use the mirror to accelerate local extraction and inspection.
|
||||
3. Resolve discrepancies in favor of the live public site.
|
||||
4. Record important visual details and identify genuine shared patterns.
|
||||
5. Implement the page or component in maintainable Astro code.
|
||||
6. Compare the complete rendered page with the live public site at representative
|
||||
2. Resolve discrepancies in favor of the live public site.
|
||||
3. Record important visual details and identify genuine shared patterns.
|
||||
4. Implement the page or component in maintainable Astro code.
|
||||
5. Compare the complete rendered page with the live public site at representative
|
||||
desktop and mobile viewport widths.
|
||||
7. Fix material visual differences before marking it complete.
|
||||
6. Fix material visual differences before marking it complete.
|
||||
|
||||
Document intentional visual deviations and their reasons in
|
||||
`reports/migration-summary.md`.
|
||||
@@ -412,9 +389,6 @@ www/
|
||||
generate-redirects.mjs
|
||||
generate-sitemap.mjs
|
||||
|
||||
original/
|
||||
README.md
|
||||
|
||||
reports/
|
||||
url-inventory.csv
|
||||
asset-inventory.csv
|
||||
@@ -427,17 +401,10 @@ www/
|
||||
migration-summary.md
|
||||
```
|
||||
|
||||
The `original/README.md` file should explain that the raw source mirror lives outside the Astro project at:
|
||||
|
||||
```txt
|
||||
../www.azinstitute4autism.com
|
||||
```
|
||||
|
||||
Do not duplicate the entire raw mirror inside `./www` unless there is a specific reason.
|
||||
|
||||
## Initial inspection
|
||||
|
||||
Before creating or modifying files, inspect the mirror.
|
||||
Before creating or modifying files, inspect the live public site and current
|
||||
project sources.
|
||||
|
||||
Look for:
|
||||
|
||||
@@ -687,9 +654,8 @@ src/styles/rtl.css
|
||||
src/styles/global.css
|
||||
```
|
||||
|
||||
Extract the current site's visual language from the live public site, using the
|
||||
mirrored CSS and HTML as a convenient local aid after checking for discrepancies.
|
||||
Tokens must encode source values; they must not introduce a replacement visual
|
||||
Extract the current site's visual language from the live public site. Tokens
|
||||
must encode source values; they must not introduce a replacement visual
|
||||
system.
|
||||
|
||||
Use design tokens such as:
|
||||
@@ -837,7 +803,7 @@ It should support:
|
||||
- hreflang links where translation relationships are known
|
||||
- JSON-LD/schema when extracted
|
||||
|
||||
Preserve metadata from the mirror wherever possible.
|
||||
Preserve metadata from the live site wherever possible.
|
||||
|
||||
Generate:
|
||||
|
||||
@@ -906,7 +872,7 @@ tools/generate-sitemap.mjs
|
||||
|
||||
This script should:
|
||||
|
||||
- scan the mirror
|
||||
- scan the available source and generated output
|
||||
- identify HTML files
|
||||
- infer URL paths
|
||||
- identify page type
|
||||
@@ -929,7 +895,7 @@ This script should:
|
||||
|
||||
- attempt to crawl the live site if internet is available
|
||||
- discover URLs from sitemap and internal links
|
||||
- compare discovered URLs against the mirror
|
||||
- compare discovered URLs against the current site source and generated output
|
||||
- document missing URLs/assets
|
||||
- avoid aggressive crawling
|
||||
- respect the scope of `www.azinstitute4autism.com`
|
||||
@@ -1165,7 +1131,6 @@ www/README.md
|
||||
It should explain:
|
||||
|
||||
- what the project is
|
||||
- where the raw mirror lives
|
||||
- how the migration was performed
|
||||
- how to install dependencies
|
||||
- how to run local dev
|
||||
@@ -1241,7 +1206,7 @@ Proceed methodically:
|
||||
2. Read `CLAUDE.md`, if using Claude Code.
|
||||
3. Read this `MIGRATION_BRIEF.md`.
|
||||
4. Inspect the live public site.
|
||||
5. Inspect `./www.azinstitute4autism.com` and identify relevant discrepancies.
|
||||
5. Inspect the relevant live public site pages and identify discrepancies.
|
||||
6. Summarize a concise implementation plan.
|
||||
7. Scaffold Astro in `./www`.
|
||||
8. Build extraction/reporting scripts.
|
||||
|
||||
+1
-50
@@ -1,8 +1,7 @@
|
||||
# Arizona Institute for Autism Astro Site
|
||||
|
||||
Static Astro + TypeScript migration of the public Arizona Institute for Autism
|
||||
website. The read-only source mirror is located at
|
||||
`../www.azinstitute4autism.com`.
|
||||
website.
|
||||
|
||||
## Quick Start
|
||||
|
||||
@@ -23,9 +22,6 @@ http://localhost:4321
|
||||
The development server watches source files and refreshes the browser after
|
||||
edits. Stop it with `Ctrl+C`.
|
||||
|
||||
Do **not** run `npm run extract` during normal editing. Extraction regenerates
|
||||
migrated Markdown from the raw mirror and can overwrite editorial changes.
|
||||
|
||||
## Environment Setup
|
||||
|
||||
Requirements:
|
||||
@@ -322,51 +318,6 @@ Edit the component's `label`, `heading`, and `items` data in the post. Keep
|
||||
answer. Shared FAQ markup, styling, interaction, and schema generation live in
|
||||
`src/components/FAQAccordion.astro`.
|
||||
|
||||
## Mirror Extraction Workflow
|
||||
|
||||
The mirror is read-only source material. Never modify:
|
||||
|
||||
```txt
|
||||
../www.azinstitute4autism.com
|
||||
```
|
||||
|
||||
Only rerun extraction when intentionally refreshing migrated content from the
|
||||
mirror. Commit or back up editorial changes first.
|
||||
|
||||
Dependency-free extraction:
|
||||
|
||||
```sh
|
||||
npm run extract
|
||||
```
|
||||
|
||||
Full Cheerio/Turndown extraction:
|
||||
|
||||
```sh
|
||||
npm run extract:full
|
||||
```
|
||||
|
||||
After extraction:
|
||||
|
||||
```sh
|
||||
npm run extract:blog-footers
|
||||
npm run generate:sitemap
|
||||
npm run generate:redirects
|
||||
npm run build
|
||||
npm run audit:links
|
||||
npm run audit:images
|
||||
npm run audit:blog
|
||||
```
|
||||
|
||||
Extraction regenerates content files, copied assets, and inventories. Review
|
||||
the complete Git diff before accepting it. Extraction may recreate FAQ-bearing
|
||||
posts and CTA-bearing pages as Markdown; restore their `FAQAccordion` and
|
||||
`Button` MDX blocks before accepting the result. `npm run audit:blog` reports
|
||||
plain Markdown FAQ sections.
|
||||
|
||||
`npm run extract:blog-footers` preserves the extracted previous/next and
|
||||
similar-post relationships in `src/data/blog-footers.json`, then removes those
|
||||
footer fragments from article prose so `BlogPostFooter.astro` can render them.
|
||||
|
||||
## Reports And Utilities
|
||||
|
||||
Migration reports are stored in `reports/`.
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
# Raw Source Mirror
|
||||
|
||||
The read-only wget mirror used for this migration lives outside this Astro
|
||||
project at:
|
||||
|
||||
```txt
|
||||
../www.azinstitute4autism.com
|
||||
```
|
||||
|
||||
Run `npm run extract` to regenerate content and inventories from that source.
|
||||
@@ -0,0 +1,28 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 0 100 100"
|
||||
width="420" height="420">
|
||||
|
||||
<defs>
|
||||
<g id="tooth" transform="translate(50,50)" fill="#ff914d">
|
||||
<path d="m0 50 h1 q8 0 8 -6 q0 -8 8 -10 h-20"/>
|
||||
<path d="m0 50 h1 q8 0 8 -6 q0 -8 8 -10 h-20" transform="scale(-1,1)"/>
|
||||
</g>
|
||||
</defs>
|
||||
|
||||
<g id="gear">
|
||||
<circle cx="50" cy="50" r="32" stroke="#ff914d" stroke-width="10" fill="none"/>
|
||||
|
||||
<g id="teeth">
|
||||
<use xlink:href="#tooth" transform="rotate( -10 50 50 )"/>
|
||||
<use xlink:href="#tooth" transform="rotate( 35 50 50 )"/>
|
||||
<use xlink:href="#tooth" transform="rotate( 80 50 50 )"/>
|
||||
<use xlink:href="#tooth" transform="rotate( 125 50 50 )"/>
|
||||
<use xlink:href="#tooth" transform="rotate( 170 50 50 )"/>
|
||||
<use xlink:href="#tooth" transform="rotate( 215 50 50 )"/>
|
||||
<use xlink:href="#tooth" transform="rotate( 260 50 50 )"/>
|
||||
<use xlink:href="#tooth" transform="rotate( 305 50 50 )"/>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,32 @@
|
||||
---
|
||||
interface Props {
|
||||
email: string;
|
||||
obfuscatedText?: string;
|
||||
class?: string;
|
||||
id?: string;
|
||||
}
|
||||
|
||||
const {
|
||||
email,
|
||||
obfuscatedText = email,
|
||||
class: className,
|
||||
id
|
||||
} = Astro.props;
|
||||
|
||||
const spanId = id ?? `email-obfuscation-${Math.random().toString(36).slice(2, 10)}`;
|
||||
---
|
||||
|
||||
<span id={spanId} class={className}>{obfuscatedText}</span><script type="text/javascript" define:vars={{ email, spanId }}>
|
||||
(() => {
|
||||
const emailSpan = document.getElementById(spanId);
|
||||
|
||||
if (!emailSpan) return;
|
||||
|
||||
const link = document.createElement('a');
|
||||
link.href = `mailto:${email}`;
|
||||
link.textContent = email;
|
||||
|
||||
emailSpan.textContent = '';
|
||||
emailSpan.appendChild(link);
|
||||
})();
|
||||
</script>
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
import Button from '../Button.astro';
|
||||
import EmailObfuscation from '../EmailObfuscation.astro';
|
||||
const groups = [
|
||||
{
|
||||
title: 'Board Certified Behavioral Analysts & Psychologists',
|
||||
@@ -68,7 +69,7 @@ const groups = [
|
||||
<p class="eyebrow">Join the AIA Team!</p>
|
||||
<h2>Employment Opportunities</h2>
|
||||
<p>Apply online to join the AIA team! At the Arizona Institute for Autism (AIA) we are on a mission to improve special education and strengthen communities throughout Arizona.</p>
|
||||
<p>Our talented and passionate employees are a critical piece to the high-quality ABA therapy we provide along with our commitment to behavioral health, school solutions, and community outreach. For questions regarding open positions, please contact us at <a href="mailto:hr@azinstitute4autism.com">hr@azinstitute4autism.com</a>.</p>
|
||||
<p>Our talented and passionate employees are a critical piece to the high-quality ABA therapy we provide along with our commitment to behavioral health, school solutions, and community outreach. For questions regarding open positions, please contact us at <EmailObfuscation email="hr@azinstitute4autism.com" obfuscatedText="hr [at] abaclinicaz [dot] com" class="team-email" />.</p>
|
||||
<Button href="/careers">View Open Positions</Button>
|
||||
</div>
|
||||
</section>
|
||||
@@ -89,6 +90,7 @@ const groups = [
|
||||
.team-member p { font-size: .85rem; margin: 0; }
|
||||
.team-careers { padding-block: 5rem; }
|
||||
.team-careers :global(.content-button) { margin-left: 50%; margin-top: 4rem; translate: -50%; }
|
||||
.team-email { font-weight: 700; }
|
||||
@media (max-width: 950px) {
|
||||
.team-member { flex-basis: min(100%, 227px); }
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ draft: false
|
||||
---
|
||||
|
||||
import Button from '../../../components/Button.astro';
|
||||
import EmailObfuscation from '../../../components/EmailObfuscation.astro';
|
||||
|
||||
## Learner Social Club
|
||||
|
||||
@@ -39,7 +40,7 @@ To ensure the best experience for your learner, please keep the following in min
|
||||
|
||||

|
||||
|
||||
The Learner Social Club currently serves youth learners aged 8–17 years . Our flexible scheduling options currently include:
|
||||
The Learner Social Club currently serves youth learners aged 8–17 years. Our flexible scheduling options currently include:
|
||||
|
||||
- 2 days/week (Monday, Wednesday): 4:00 PM – 6:00 PM
|
||||
- 1 day/week (Wednesday only): 4:00 PM – 6:00 PM
|
||||
@@ -50,6 +51,6 @@ The Learner Social Club currently serves youth learners aged 8–17 years . Our
|
||||
|
||||
Interested in Trying Out Our Program?
|
||||
|
||||
Get a 1-Day Trial Pass by emailing us at info [at] azinstitute4autism [dot] com .
|
||||
Get a 1-Day Trial Pass by emailing us at <EmailObfuscation email="info@azinstitute4autism.com" obfuscatedText="info [at] azinstitute4autism [dot] com" />.
|
||||
|
||||
<Button href="https://form.jotform.com/231638510219149" target="_blank" center>Enroll Now</Button>
|
||||
|
||||
@@ -9,6 +9,7 @@ draft: false
|
||||
---
|
||||
|
||||
import Button from '../../../components/Button.astro';
|
||||
import EmailObfuscation from '../../../components/EmailObfuscation.astro';
|
||||
|
||||
## Learner Social Club
|
||||
|
||||
@@ -46,7 +47,7 @@ Para garantizar la mejor experiencia para su hijo/a, tenga en cuenta lo siguient
|
||||
|
||||

|
||||
|
||||
Learner Social Club actualmente atiende a jóvenes de 8 a 17 años . Nuestras opciones de horario flexible actualmente incluyen:
|
||||
Learner Social Club actualmente atiende a jóvenes de 8 a 17 años. Nuestras opciones de horario flexible actualmente incluyen:
|
||||
|
||||
- 2 días/semana (lunes y miércoles): 4:00 p. m. – 6:00 p. m.
|
||||
|
||||
@@ -58,6 +59,6 @@ Learner Social Club actualmente atiende a jóvenes de 8 a 17 años . Nuestras op
|
||||
|
||||
¿Le interesa probar nuestro programa?
|
||||
|
||||
Obtenga un pase de prueba de 1 día enviándonos un correo electrónico a info [at] azinstitute4autism [dot] com .
|
||||
Obtenga un pase de prueba de 1 día enviándonos un correo electrónico a <EmailObfuscation email="info@azinstitute4autism.com" obfuscatedText="info [at] azinstitute4autism [dot] com" />.
|
||||
|
||||
<Button href="https://form.jotform.com/231638510219149" target="_blank">Enroll Now</Button>
|
||||
|
||||
@@ -30,7 +30,7 @@ const organizationSchema = {
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<link rel="icon" href="/assets/images/aia-logo.svg" />
|
||||
<link rel="icon" href="/assets/images/favicon.svg" />
|
||||
<Seo title={title} description={description} canonical={canonical} image={image} lang={lang} type={type} />
|
||||
<script type="application/ld+json" set:html={JSON.stringify(organizationSchema)} />
|
||||
</head>
|
||||
|
||||
Reference in New Issue
Block a user