The illuminated initial-capital GIFs were hotlinked from www.unification.net, which is now a suspended domain, so they rendered as broken images at the start of paragraphs across 11 archived speeches. Each <img> carried the correct letter in its alt attribute (and was the first letter of the word), so replacing the tag with that letter restores the text with no broken image. 83 tags across 11 files; no remaining references to unification.net/images. |
||
|---|---|---|
| .forgejo/workflows | ||
| archive-source | ||
| assets | ||
| content | ||
| css | ||
| docs | ||
| js | ||
| scripts | ||
| src | ||
| .env.example | ||
| .gitignore | ||
| AGENTS.md | ||
| astro.config.mjs | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
familyfedie-website
Local static website files built with Astro.
content/ is the future source of truth for editable blog and speech content.
archive-source/ keeps the legacy exported HTML used by the current static
archive routes while the migration continues.
Project Structure
content/- future source of truth for editable speeches and blog postsarchive-source/- legacy exported HTML pages and archive pagessrc/content/pages/- preserved HTML body fragments for migrated public pagessrc/pages/- Astro routes for migrated public pages plus the static archive catch-allsrc/components/- Astro components for shared page layoutdist/- generated static output fromnpm run buildsrc/pages/index.astro- homepage route generated from migrated contentsrc/pages/about.astro- about page route generated from migrated contentsrc/pages/contact.astro- contact page route generated from migrated contentarchive-source/index.html,archive-source/about.html,archive-source/contact.html- original exported source for migrated public pagesarchive-source/blog/YYYY/MM/DD/- legacy dated blog post pagesarchive-source/blog/categories/- legacy blog category archive pagesarchive-source/blog/tags/- legacy blog tag archive pagesarchive-source/speeches/- legacy speech archive indexes and speech category pagesarchive-source/PAGES.md- map from the old folder URLs to the current HTML pathscss/- site-level stylesheetscss/theme.css- extracted Parabola inline theme settingscss/site.css- extracted site fixes and homepage/frontpage rulesjs/- site-level scriptsassets/- images, PDFs, fonts, theme files, uploads, and vendor filesdocs/- maintainer notesscripts/components.mjs- shared nav/sidebar/footer componentsscripts/render-shared-layout.mjs- updates repeated layout across HTML filesscripts/organize-content.mjs- organizes exported blog and speech pagesscripts/extract-content.mjs- extracts posts intocontent/scripts/extract-theme-css.mjs- extracts repeated inline theme CSS into files
Maintenance
Run Astro locally while editing:
npm run dev
Check that the generated site builds successfully:
npm run check
Run the static link and media audit against the generated dist/ output:
npm run audit:links
Regenerate Markdown content from the legacy exported post HTML:
npm run extract:content
The important public pages are now Astro routes that reuse shared layout
components. The large blog and speech archive is still served from legacy
exported HTML in archive-source/ through src/pages/[...route].ts.
The repeated exported inline styles have been moved into css/theme.css and
css/site.css. Tiny one-page WordPress block-support styles may still remain
inline when they only apply to a single page.
After changing shared navigation, sidebar, or footer markup in
scripts/components.mjs, run:
npm run render:layout
Local Preview
Run Astro locally while editing:
npm run dev
Then open Astro's local URL, usually:
http://localhost:4321/
For a production-style Astro preview, build the static output first:
npm run build
Then serve dist/ with Astro preview:
npm run preview
Then open:
http://localhost:4321/
Deployment
This project deploys as a static Astro build. A deployment job should install
dependencies, run the build, and publish the generated dist/ directory:
npm ci
npm run build
Use npm run start only when you intentionally want Astro to serve the built
output in an environment such as a local or Nomad preview job.