familyfedie-website/docs/SITE-STRUCTURE.md
Loyyd 1d55bdb691
All checks were successful
Publish static bundles / publish (push) Successful in 3m19s
Modernize frontend assets and security baseline
2026-07-15 10:28:06 +02:00

4.7 KiB

Site Structure

This is a local static site built with Astro. content/ is the future source of truth for editable blog and speech content. Legacy exported HTML is kept in archive-source/ while Astro emits the served site into dist/.

Root

  • content/speeches/<year>/*.md - editable speech content by speech year
  • content/speeches/mrs-hak-ja-han-moon/*.md - editable Mrs. Hak Ja Han Moon speeches
  • content/blog/<year>/*.md - editable non-speech blog content by publish year
  • content/README.md - content notes
  • archive-source/index.html - legacy home page export
  • archive-source/about.html - legacy about page export
  • archive-source/contact.html - legacy contact page export
  • archive-source/*.html - other legacy top-level page exports
  • archive-source/blog/YYYY/MM/DD/*.html - legacy dated blog posts
  • archive-source/blog/categories/*.html - legacy blog category archive pages
  • archive-source/blog/tags/*.html - legacy blog tag archive pages
  • archive-source/speeches/index.html - legacy main speeches archive
  • archive-source/speeches/rev-dr-sun-myung-moon/*.html - legacy yearly speech archive pages
  • archive-source/speeches/categories/*.html - legacy speech category archive pages
  • archive-source/PAGES.md - map of old folder paths to current HTML paths
  • src/content/pages/*.html - preserved body fragments for migrated public pages
  • src/pages/index.astro - Astro home page route
  • src/pages/about.astro, src/pages/contact.astro, src/pages/events.astro, src/pages/services.astro, src/pages/videos.astro, src/pages/the-founders.astro - migrated public page routes
  • src/pages/[...route].ts - Astro endpoint for the remaining exported HTML archive pages
  • src/lib/static-pages.ts - maps archive-source/ files to Astro static routes and excludes migrated pages from the catch-all
  • src/components/ - Astro shared layout components
  • dist/ - generated site output, ignored by git
  • css/ - site-level stylesheets
  • css/theme.css - extracted Parabola inline theme settings
  • css/site.css - extracted shared site fixes and homepage/frontpage rules
  • js/ - site-level scripts
  • assets/ - images, PDFs, fonts, theme files, uploads, and vendor files
  • docs/ - maintainer documentation
  • scripts/components.mjs - shared nav/sidebar/footer components
  • scripts/render-shared-layout.mjs - renders shared layout components into pages
  • scripts/organize-content.mjs - organizes exported blog and speech pages
  • scripts/copy-static-assets.mjs - copies assets/, css/, and js/ into dist/
  • scripts/extract-content.mjs - extracts dated post pages into content/
  • scripts/extract-theme-css.mjs - extracts repeated inline CSS into css/theme.css and css/site.css
  • .forgejo/ - deployment automation

Shared Layout

The important public pages now render through Astro components: src/components/SiteLayout.astro owns the document shell, header, navigation, and footer, while src/components/TwoColumnPage.astro wraps standard content/sidebar pages. Their preserved page bodies live in src/content/pages/.

The large blog and speech archive remains static exported HTML served through src/pages/[...route].ts. Common navigation, sidebar, and footer markup for those exported files is still generated from scripts/components.mjs; run npm run render:layout after editing those legacy components.

Content

Run npm run extract:content to regenerate Markdown content from archive-source/blog/. The generated Markdown keeps the original post body HTML inside the file so formatting is preserved while metadata becomes frontmatter.

Asset Layout

  • css/block-library.css - WordPress block styles used by the pages
  • css/theme.css - CSS extracted from the repeated Parabola inline export
  • css/site.css - shared site fixes, shortcode rule, and homepage slider/frontpage CSS
  • js/site.js - dependency-free navigation, back-to-top, and responsive-video behavior
  • assets/theme/ - exported theme styles, scripts, fonts, and images
  • assets/vendor/ - exported third-party plugin/vendor assets
  • assets/uploads/ - uploaded images and PDFs used by content pages

Local Preview

Run:

npm run dev

Then open Astro's local URL, usually:

http://localhost:4321

Run the build health check:

npm run check

For a production-style Astro preview, build first:

npm run build
npm run preview

Then open:

http://localhost:4321

Deployment

Astro emits a static site into dist/. Deployment should run npm ci and npm run build, then publish or serve the generated dist/ directory. Use npm run start only for Astro-based preview jobs that need to serve the built output directly.