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 yearcontent/speeches/mrs-hak-ja-han-moon/*.md- editable Mrs. Hak Ja Han Moon speechescontent/blog/<year>/*.md- editable non-speech blog content by publish yearcontent/README.md- content notesarchive-source/index.html- legacy home page exportarchive-source/about.html- legacy about page exportarchive-source/contact.html- legacy contact page exportarchive-source/*.html- other legacy top-level page exportsarchive-source/blog/YYYY/MM/DD/*.html- legacy dated blog postsarchive-source/blog/categories/*.html- legacy blog category archive pagesarchive-source/blog/tags/*.html- legacy blog tag archive pagesarchive-source/speeches/index.html- legacy main speeches archivearchive-source/speeches/rev-dr-sun-myung-moon/*.html- legacy yearly speech archive pagesarchive-source/speeches/categories/*.html- legacy speech category archive pagesarchive-source/PAGES.md- map of old folder paths to current HTML pathssrc/content/pages/*.html- preserved body fragments for migrated public pagessrc/pages/index.astro- Astro home page routesrc/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 routessrc/pages/[...route].ts- Astro endpoint for the remaining exported HTML archive pagessrc/lib/static-pages.ts- mapsarchive-source/files to Astro static routes and excludes migrated pages from the catch-allsrc/components/- Astro shared layout componentsdist/- generated site output, ignored by gitcss/- site-level stylesheetscss/theme.css- extracted Parabola inline theme settingscss/site.css- extracted shared site fixes and homepage/frontpage rulesjs/- site-level scriptsassets/- images, PDFs, fonts, theme files, uploads, and vendor filesdocs/- maintainer documentationscripts/components.mjs- shared nav/sidebar/footer componentsscripts/render-shared-layout.mjs- renders shared layout components into pagesscripts/organize-content.mjs- organizes exported blog and speech pagesscripts/copy-static-assets.mjs- copiesassets/,css/, andjs/intodist/scripts/extract-content.mjs- extracts dated post pages intocontent/scripts/extract-theme-css.mjs- extracts repeated inline CSS intocss/theme.cssandcss/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 pagescss/theme.css- CSS extracted from the repeated Parabola inline exportcss/site.css- shared site fixes, shortcode rule, and homepage slider/frontpage CSSjs/site-20260715.js- dependency-free navigation, back-to-top, and responsive-video behaviorassets/theme/- exported theme styles, scripts, fonts, and imagesassets/vendor/- exported third-party plugin/vendor assetsassets/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.