| .forgejo/workflows | ||
| archive-source | ||
| assets | ||
| content | ||
| css | ||
| docs | ||
| js | ||
| scripts | ||
| src | ||
| .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.