Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf3d39a643
|
||
|
|
664d749439
|
@@ -13,42 +13,20 @@ content only after verifying it against the live public site.
|
|||||||
|
|
||||||
## Project
|
## 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:
|
New Astro site target:
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
./www
|
./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:
|
The live public website is the single source of truth:
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
https://www.azinstitute4autism.com
|
https://www.azinstitute4autism.com
|
||||||
```
|
```
|
||||||
|
|
||||||
Use the mirror as a convenient local extraction and inspection aid only. The
|
Verify content, design, URLs, metadata, assets, and responsive behavior against
|
||||||
mirror may contain stale, missing, rewritten, or incorrectly downloaded
|
the live public site before treating them as authoritative.
|
||||||
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.
|
|
||||||
|
|
||||||
## Primary goal
|
## Primary goal
|
||||||
|
|
||||||
@@ -221,10 +199,9 @@ Favor:
|
|||||||
Before implementing a page family or shared component:
|
Before implementing a page family or shared component:
|
||||||
|
|
||||||
1. Inspect the live page and its HTML, CSS, assets, and responsive behavior.
|
1. Inspect the live page and its HTML, CSS, assets, and responsive behavior.
|
||||||
2. Use the mirror to accelerate local extraction and inspection.
|
2. Resolve any discrepancy in favor of the live public site.
|
||||||
3. Resolve any discrepancy in favor of the live public site.
|
3. Record the source structure and important visual details.
|
||||||
4. Record the source structure and important visual details.
|
4. Identify which patterns are truly shared and which are page-specific.
|
||||||
5. Identify which patterns are truly shared and which are page-specific.
|
|
||||||
|
|
||||||
After implementation, compare the Astro output with the live public site at
|
After implementation, compare the Astro output with the live public site at
|
||||||
representative desktop and mobile viewport widths. Check the full page, not
|
representative desktop and mobile viewport widths. Check the full page, not
|
||||||
@@ -365,10 +342,9 @@ reports/migration-summary.md
|
|||||||
Before large filesystem changes:
|
Before large filesystem changes:
|
||||||
|
|
||||||
1. Inspect the live public site.
|
1. Inspect the live public site.
|
||||||
2. Inspect the mirror and identify relevant discrepancies.
|
2. Inspect the relevant source HTML, CSS, and assets in detail.
|
||||||
3. Inspect the relevant source HTML, CSS, and assets in detail.
|
3. Summarize the implementation and visual-validation plan.
|
||||||
4. Summarize the implementation and visual-validation plan.
|
4. Proceed methodically.
|
||||||
5. Proceed methodically.
|
|
||||||
|
|
||||||
At the end of a task, summarize:
|
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
|
to conflict with `AGENTS.md`, follow `AGENTS.md` and correct this brief before
|
||||||
continuing.
|
continuing.
|
||||||
|
|
||||||
This is a fidelity-first migration, not a redesign. The raw mirror is a
|
This is a fidelity-first migration, not a redesign. The live public site is the
|
||||||
convenient local extraction and inspection aid, but the live public site is the
|
|
||||||
single content and visual source of truth. The `migration-foundation` branch
|
single content and visual source of truth. The `migration-foundation` branch
|
||||||
may be consulted for nonvisual tooling and recovered content, but it must not
|
may be consulted for nonvisual tooling and recovered content, but it must not
|
||||||
be used as the visual baseline.
|
be used as the visual baseline.
|
||||||
|
|
||||||
## Task
|
## Task
|
||||||
|
|
||||||
Migrate the public Arizona Institute for Autism website from a mirrored HubSpot-generated static copy into a clean, maintainable Astro + TypeScript site.
|
Migrate the public Arizona Institute for Autism website into a clean,
|
||||||
|
maintainable Astro + TypeScript site.
|
||||||
Raw mirrored source:
|
|
||||||
|
|
||||||
```txt
|
|
||||||
./www.azinstitute4autism.com
|
|
||||||
```
|
|
||||||
|
|
||||||
New Astro project target:
|
New Astro project target:
|
||||||
|
|
||||||
@@ -29,12 +23,6 @@ New Astro project target:
|
|||||||
./www
|
./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.
|
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:
|
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
|
https://www.azinstitute4autism.com
|
||||||
```
|
```
|
||||||
|
|
||||||
Use the local mirror as a convenient extraction and inspection aid. It may
|
Verify content, design, URLs, metadata, assets, and responsive behavior against
|
||||||
contain stale, missing, rewritten, or incorrectly downloaded content and
|
the live site. If the live site is temporarily unavailable, work that depends
|
||||||
assets. Verify content, design, URLs, metadata, assets, and responsive behavior
|
on its authority must remain explicitly unverified.
|
||||||
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.
|
|
||||||
|
|
||||||
## High-level goal
|
## High-level goal
|
||||||
|
|
||||||
@@ -76,10 +58,6 @@ Create a new Astro site in `./www` that is:
|
|||||||
|
|
||||||
Do not modify or delete:
|
Do not modify or delete:
|
||||||
|
|
||||||
```txt
|
|
||||||
./www.azinstitute4autism.com
|
|
||||||
```
|
|
||||||
|
|
||||||
Do not depend on:
|
Do not depend on:
|
||||||
|
|
||||||
- HubSpot CLI
|
- HubSpot CLI
|
||||||
@@ -283,13 +261,12 @@ Do not use Tailwind.
|
|||||||
For each page family or shared component:
|
For each page family or shared component:
|
||||||
|
|
||||||
1. Inspect the live page, HTML, CSS, assets, and responsive behavior.
|
1. Inspect the live page, HTML, CSS, assets, and responsive behavior.
|
||||||
2. Use the mirror to accelerate local extraction and inspection.
|
2. Resolve discrepancies in favor of the live public site.
|
||||||
3. Resolve discrepancies in favor of the live public site.
|
3. Record important visual details and identify genuine shared patterns.
|
||||||
4. Record important visual details and identify genuine shared patterns.
|
4. Implement the page or component in maintainable Astro code.
|
||||||
5. Implement the page or component in maintainable Astro code.
|
5. Compare the complete rendered page with the live public site at representative
|
||||||
6. Compare the complete rendered page with the live public site at representative
|
|
||||||
desktop and mobile viewport widths.
|
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
|
Document intentional visual deviations and their reasons in
|
||||||
`reports/migration-summary.md`.
|
`reports/migration-summary.md`.
|
||||||
@@ -412,9 +389,6 @@ www/
|
|||||||
generate-redirects.mjs
|
generate-redirects.mjs
|
||||||
generate-sitemap.mjs
|
generate-sitemap.mjs
|
||||||
|
|
||||||
original/
|
|
||||||
README.md
|
|
||||||
|
|
||||||
reports/
|
reports/
|
||||||
url-inventory.csv
|
url-inventory.csv
|
||||||
asset-inventory.csv
|
asset-inventory.csv
|
||||||
@@ -427,17 +401,10 @@ www/
|
|||||||
migration-summary.md
|
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
|
## 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:
|
Look for:
|
||||||
|
|
||||||
@@ -687,9 +654,8 @@ src/styles/rtl.css
|
|||||||
src/styles/global.css
|
src/styles/global.css
|
||||||
```
|
```
|
||||||
|
|
||||||
Extract the current site's visual language from the live public site, using the
|
Extract the current site's visual language from the live public site. Tokens
|
||||||
mirrored CSS and HTML as a convenient local aid after checking for discrepancies.
|
must encode source values; they must not introduce a replacement visual
|
||||||
Tokens must encode source values; they must not introduce a replacement visual
|
|
||||||
system.
|
system.
|
||||||
|
|
||||||
Use design tokens such as:
|
Use design tokens such as:
|
||||||
@@ -837,7 +803,7 @@ It should support:
|
|||||||
- hreflang links where translation relationships are known
|
- hreflang links where translation relationships are known
|
||||||
- JSON-LD/schema when extracted
|
- JSON-LD/schema when extracted
|
||||||
|
|
||||||
Preserve metadata from the mirror wherever possible.
|
Preserve metadata from the live site wherever possible.
|
||||||
|
|
||||||
Generate:
|
Generate:
|
||||||
|
|
||||||
@@ -906,7 +872,7 @@ tools/generate-sitemap.mjs
|
|||||||
|
|
||||||
This script should:
|
This script should:
|
||||||
|
|
||||||
- scan the mirror
|
- scan the available source and generated output
|
||||||
- identify HTML files
|
- identify HTML files
|
||||||
- infer URL paths
|
- infer URL paths
|
||||||
- identify page type
|
- identify page type
|
||||||
@@ -929,7 +895,7 @@ This script should:
|
|||||||
|
|
||||||
- attempt to crawl the live site if internet is available
|
- attempt to crawl the live site if internet is available
|
||||||
- discover URLs from sitemap and internal links
|
- 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
|
- document missing URLs/assets
|
||||||
- avoid aggressive crawling
|
- avoid aggressive crawling
|
||||||
- respect the scope of `www.azinstitute4autism.com`
|
- respect the scope of `www.azinstitute4autism.com`
|
||||||
@@ -1165,7 +1131,6 @@ www/README.md
|
|||||||
It should explain:
|
It should explain:
|
||||||
|
|
||||||
- what the project is
|
- what the project is
|
||||||
- where the raw mirror lives
|
|
||||||
- how the migration was performed
|
- how the migration was performed
|
||||||
- how to install dependencies
|
- how to install dependencies
|
||||||
- how to run local dev
|
- how to run local dev
|
||||||
@@ -1241,7 +1206,7 @@ Proceed methodically:
|
|||||||
2. Read `CLAUDE.md`, if using Claude Code.
|
2. Read `CLAUDE.md`, if using Claude Code.
|
||||||
3. Read this `MIGRATION_BRIEF.md`.
|
3. Read this `MIGRATION_BRIEF.md`.
|
||||||
4. Inspect the live public site.
|
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.
|
6. Summarize a concise implementation plan.
|
||||||
7. Scaffold Astro in `./www`.
|
7. Scaffold Astro in `./www`.
|
||||||
8. Build extraction/reporting scripts.
|
8. Build extraction/reporting scripts.
|
||||||
|
|||||||
+1
-50
@@ -1,8 +1,7 @@
|
|||||||
# Arizona Institute for Autism Astro Site
|
# Arizona Institute for Autism Astro Site
|
||||||
|
|
||||||
Static Astro + TypeScript migration of the public Arizona Institute for Autism
|
Static Astro + TypeScript migration of the public Arizona Institute for Autism
|
||||||
website. The read-only source mirror is located at
|
website.
|
||||||
`../www.azinstitute4autism.com`.
|
|
||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
|
|
||||||
@@ -23,9 +22,6 @@ http://localhost:4321
|
|||||||
The development server watches source files and refreshes the browser after
|
The development server watches source files and refreshes the browser after
|
||||||
edits. Stop it with `Ctrl+C`.
|
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
|
## Environment Setup
|
||||||
|
|
||||||
Requirements:
|
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
|
answer. Shared FAQ markup, styling, interaction, and schema generation live in
|
||||||
`src/components/FAQAccordion.astro`.
|
`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
|
## Reports And Utilities
|
||||||
|
|
||||||
Migration reports are stored in `reports/`.
|
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,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 Button from '../Button.astro';
|
||||||
|
import EmailObfuscation from '../EmailObfuscation.astro';
|
||||||
const groups = [
|
const groups = [
|
||||||
{
|
{
|
||||||
title: 'Board Certified Behavioral Analysts & Psychologists',
|
title: 'Board Certified Behavioral Analysts & Psychologists',
|
||||||
@@ -68,7 +69,7 @@ const groups = [
|
|||||||
<p class="eyebrow">Join the AIA Team!</p>
|
<p class="eyebrow">Join the AIA Team!</p>
|
||||||
<h2>Employment Opportunities</h2>
|
<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>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>
|
<Button href="/careers">View Open Positions</Button>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -89,6 +90,7 @@ const groups = [
|
|||||||
.team-member p { font-size: .85rem; margin: 0; }
|
.team-member p { font-size: .85rem; margin: 0; }
|
||||||
.team-careers { padding-block: 5rem; }
|
.team-careers { padding-block: 5rem; }
|
||||||
.team-careers :global(.content-button) { margin-left: 50%; margin-top: 4rem; translate: -50%; }
|
.team-careers :global(.content-button) { margin-left: 50%; margin-top: 4rem; translate: -50%; }
|
||||||
|
.team-email { font-weight: 700; }
|
||||||
@media (max-width: 950px) {
|
@media (max-width: 950px) {
|
||||||
.team-member { flex-basis: min(100%, 227px); }
|
.team-member { flex-basis: min(100%, 227px); }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ draft: false
|
|||||||
---
|
---
|
||||||
|
|
||||||
import Button from '../../../components/Button.astro';
|
import Button from '../../../components/Button.astro';
|
||||||
|
import EmailObfuscation from '../../../components/EmailObfuscation.astro';
|
||||||
|
|
||||||
## Learner Social Club
|
## Learner Social Club
|
||||||
|
|
||||||
@@ -50,6 +51,6 @@ The Learner Social Club currently serves youth learners aged 8–17 years . Our
|
|||||||
|
|
||||||
Interested in Trying Out Our Program?
|
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>
|
<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 Button from '../../../components/Button.astro';
|
||||||
|
import EmailObfuscation from '../../../components/EmailObfuscation.astro';
|
||||||
|
|
||||||
## Learner Social Club
|
## Learner Social Club
|
||||||
|
|
||||||
@@ -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?
|
¿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>
|
<Button href="https://form.jotform.com/231638510219149" target="_blank">Enroll Now</Button>
|
||||||
|
|||||||
Reference in New Issue
Block a user