All checks were successful
Build and publish static site / build (push) Successful in 1m26s
127 lines
4 KiB
Markdown
127 lines
4 KiB
Markdown
# 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:
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
Check that the generated site builds successfully:
|
|
|
|
```bash
|
|
npm run check
|
|
```
|
|
|
|
Run the static link and media audit against the generated `dist/` output:
|
|
|
|
```bash
|
|
npm run audit:links
|
|
```
|
|
|
|
Regenerate Markdown content from the legacy exported post HTML:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
npm run render:layout
|
|
```
|
|
|
|
## Local Preview
|
|
|
|
Run Astro locally while editing:
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
Then open Astro's local URL, usually:
|
|
|
|
```text
|
|
http://localhost:4321/
|
|
```
|
|
|
|
For a production-style Astro preview, build the static output first:
|
|
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
Then serve `dist/` with Astro preview:
|
|
|
|
```bash
|
|
npm run preview
|
|
```
|
|
|
|
Then open:
|
|
|
|
```text
|
|
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:
|
|
|
|
```bash
|
|
npm ci
|
|
npm run check
|
|
```
|