Skip to content

Latest commit

Β 

History

History
111 lines (85 loc) Β· 4.02 KB

File metadata and controls

111 lines (85 loc) Β· 4.02 KB

EthSystems Website

Static website for EthSystems, live at https://ethsystems.org/.

Astro static site. Content for patterns, approaches, use-cases, vendors, domains, and jurisdictions is sourced from the map repo via a git submodule at content/. Writeups live in src/posts/.

How it works

  • Astro generates every page at build time from data in content/ (the map submodule) and src/posts/ (writeups).
  • GitHub Pages auto-deploys from main via .github/workflows/deploy.yml. Changes go live within a few minutes.
  • CNAME (public/CNAME) points the deployment at ethsystems.org.

Repository layout

web/
β”œβ”€β”€ astro.config.mjs       Astro configuration (site URL, integrations)
β”œβ”€β”€ content/               map submodule (patterns, approaches, etc.)
β”œβ”€β”€ public/                Static assets served verbatim
β”‚   β”œβ”€β”€ assets/images/     Post hero images, diagrams
β”‚   β”œβ”€β”€ assets/css/
β”‚   β”œβ”€β”€ assets/js/
β”‚   β”œβ”€β”€ tee-protocol-page.html  Standalone interactive whiteboard
β”‚   β”œβ”€β”€ CNAME
β”‚   └── robots.txt
β”œβ”€β”€ scripts/
β”‚   └── build-graph.mjs    Reads the map submodule β†’ src/data/graph.json
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ data/              Generated at build (graph.json, glossary.json)
β”‚   β”œβ”€β”€ posts/             Writeup markdown
β”‚   β”œβ”€β”€ lib/               Data access, markdown rendering, post loader
β”‚   β”œβ”€β”€ layouts/           Guide.astro (default), Post.astro (writeups)
β”‚   β”œβ”€β”€ components/        React islands for /explore/* (D3, Galaxy)
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ index.astro    Landing
β”‚   β”‚   β”œβ”€β”€ about.astro
β”‚   β”‚   β”œβ”€β”€ writeups/index.astro   /writeups
β”‚   β”‚   β”œβ”€β”€ [slug].astro           /<post-slug>/ (writeups)
β”‚   β”‚   β”œβ”€β”€ approaches/            Case studies
β”‚   β”‚   β”œβ”€β”€ use-cases/
β”‚   β”‚   β”œβ”€β”€ patterns/
β”‚   β”‚   β”œβ”€β”€ vendors/
β”‚   β”‚   β”œβ”€β”€ domains/
β”‚   β”‚   β”œβ”€β”€ jurisdictions/
β”‚   β”‚   β”œβ”€β”€ explore/{galaxy,tree,browse}.astro   D3 explorer
β”‚   β”‚   β”œβ”€β”€ faq.astro
β”‚   β”‚   β”œβ”€β”€ glossary.astro
β”‚   β”‚   └── feed.xml.js    RSS feed
β”‚   └── styles/
└── tests/                 vitest suite

Running locally

Requires Node 22.

npm install
npm run dev    # http://localhost:4321
npm run build  # β†’ ./dist
npm test

Writing a writeup

Drop a file into src/posts/ named YYYY-MM-DD-slug.md with frontmatter:

---
title: "Post Title"
description: "Brief description (shown in social cards and the writeups index)."
date: 2026-01-09
author: "Author Name"
image: /assets/images/2026-01-09-slug/hero.png   # optional, hero image
---

The published URL is derived from the title (/<title-slugified>/). Hero images live under public/assets/images/.

Set published: false in frontmatter to keep a post out of the deployed site.

Updating the map content

git submodule update --remote content
git add content
git commit -m "chore(content): bump map submodule"

Source-of-truth rule

The map repo (ethsystems/map) main is the only source of truth for patterns, approaches, vendors, etc. Anything sourced from the submodule renders verbatim. Pages that emit map content mark each render site with SOURCE: map field β€” do not alter.

UI chrome (landing copy, FAQ, writeups index, post layout) is the site's own and stays curated here.

Contributing

  1. Branch from main.
  2. Run npm install && npm run dev, verify your change.
  3. Open a PR. Once merged, GH Pages redeploys within a few minutes.

Contact

License

All website content, writeups, pages, RFPs, writeups, and documentation are made available under CC0 1.0 Universal unless otherwise stated.

Third-party dependencies retain their own licenses.