Static replica of the familyfed.ie website, served at familyfed.bcgen.ie
Find a file
2026-07-31 16:24:18 +00:00
.forgejo/workflows Publish through Garage Replicated 2026-07-31 15:42:00 +00:00
archive-source Version modernized assets for edge caches 2026-07-15 10:34:24 +02:00
assets Version modernized assets for edge caches 2026-07-15 10:34:24 +02:00
content Modernize frontend assets and security baseline 2026-07-15 10:28:06 +02:00
css Simplify footer privacy policy 2026-07-27 19:02:17 +02:00
docs Publish through Garage Replicated 2026-07-31 15:42:00 +00:00
js Version modernized assets for edge caches 2026-07-15 10:34:24 +02:00
outputs/familyfed-link-audit-20260707 new links 2026-07-08 11:13:30 +02:00
scripts Version modernized assets for edge caches 2026-07-15 10:34:24 +02:00
src Simplify footer privacy policy 2026-07-27 19:02:17 +02:00
.env.example Connect admin dashboard to Cloudflare analytics 2026-07-10 12:18:29 +02:00
.gitignore using astro 2026-06-11 08:29:29 +02:00
AGENTS.md Standardize Astro branch validation and publishing 2026-07-29 16:44:16 +00:00
astro.config.mjs new IP 2026-06-11 17:44:58 +02:00
package-lock.json Modernize frontend assets and security baseline 2026-07-15 10:28:06 +02:00
package.json Modernize frontend assets and security baseline 2026-07-15 10:28:06 +02:00
README.md Standardize Astro branch validation and publishing 2026-07-29 16:44:16 +00:00

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