familyfedie-website/README.md
Workstation Bot 39b96cd34e
All checks were successful
Build and publish static site / build (push) Successful in 1m26s
Standardize Astro branch validation and publishing
2026-07-29 16:44:16 +00:00

4 KiB

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 posts
  • archive-source/ - legacy exported HTML pages and archive pages
  • src/content/pages/ - preserved HTML body fragments for migrated public pages
  • src/pages/ - Astro routes for migrated public pages plus the static archive catch-all
  • src/components/ - Astro components for shared page layout
  • dist/ - generated static output from npm run build
  • src/pages/index.astro - homepage route generated from migrated content
  • src/pages/about.astro - about page route generated from migrated content
  • src/pages/contact.astro - contact page route generated from migrated content
  • archive-source/index.html, archive-source/about.html, archive-source/contact.html - original exported source for migrated public pages
  • archive-source/blog/YYYY/MM/DD/ - legacy dated blog post pages
  • archive-source/blog/categories/ - legacy blog category archive pages
  • archive-source/blog/tags/ - legacy blog tag archive pages
  • archive-source/speeches/ - legacy speech archive indexes and speech category pages
  • archive-source/PAGES.md - map from the old folder URLs to the current HTML paths
  • css/ - site-level stylesheets
  • css/theme.css - extracted Parabola inline theme settings
  • css/site.css - extracted site fixes and homepage/frontpage rules
  • js/ - site-level scripts
  • assets/ - images, PDFs, fonts, theme files, uploads, and vendor files
  • docs/ - maintainer notes
  • scripts/components.mjs - shared nav/sidebar/footer components
  • scripts/render-shared-layout.mjs - updates repeated layout across HTML files
  • scripts/organize-content.mjs - organizes exported blog and speech pages
  • scripts/extract-content.mjs - extracts posts into content/
  • 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 through Forgejo Actions. Every branch push installs dependencies, builds the complete site, audits its links, and prepares the separate public and protected-admin bundles. Feature branches never receive Garage publishing credentials and never change production.

Only commits on main synchronize the validated bundles to familyfed.ie and admin.familyfed.ie in Garage. A manual workflow dispatch is subject to the same branch guard: dispatching a feature branch builds it but cannot publish it.

The equivalent local validation is:

npm ci
npm run check