Run make install once to install both Node and Python dependencies.
Run npm run build or make build to:
- Prepare a clean
dist/directory. - Optimize images (
src/images->dist/assets/images). - Generate HTML pages into
dist/(build.py). - Copy deployable static files such as
robots.txtandsitemap.xmlintodist/.
Run npm run preview or make serve to preview the built site locally from dist/.
Run npm run verify to check the generated site in dist/ for the expected SEO tags.
Run make clean to remove dist/.
build.py: Main Python script. Reads templates/data and generates the site intodist/.Makefile: Thin wrapper around the npm build commands..github/workflows/deploy.yml: GitHub Pages deployment workflow. Buildsdist/and publishes it.
data/people.json: Source of truth for the "People" page.data/initiatives.json: Source of truth for the "Initiatives" page and sidebar.data/site_metadata.yaml: Source of truth for site-wide HTML metadata, social metadata, and page SEO copy.templates/: HTML fragments (e.g.,person_block.html,initiative_page.html).content/: HTML content for static pages (e.g.,about.html).content/initiatives/: HTML content for individual initiative pages.
src/images/: Source for images. Add new images here.assets/: Source for static CSS/JS assets copied intodist/assets/during the build.scripts/copyOptimizeImages.js: Node.js script usingsharpto optimize and copy images fromsrcinto the build output.scripts/prepareDist.js: Cleansdist/and copies non-image static assets plus top-level deploy files.assets/js/site.js: Minimal client-side behavior for the site shell.
dist/: Deployable site artifact for GitHub Pages.dist/*.htm: Generated main pages (e.g.,index.htm,Initiatives.htm).dist/initiatives/: Generated individual initiative pages.
- Update Content:
- Edit
data/people.jsonfor people. - Edit
data/initiatives.jsonand files incontent/initiatives/for initiatives. - Edit
data/site_metadata.yamlfor site-wide metadata and page SEO text. - Edit files in
content/for other static pages.
- Edit
- Update Design: Edit
templates/*.htmlorassets/css/. - Add Images: Place in
src/images/. - Build: Run
npm run build. - Preview/Verify: Run
npm run previewandnpm run verify. - Deploy: Push to
main. GitHub Actions builds and deploysdist/to GitHub Pages.
In the repository settings, switch Pages to GitHub Actions as the build and deployment source. The workflow at .github/workflows/deploy.yml will publish the contents of dist/.