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/.
- Astro generates every page at build time from data in
content/(the map submodule) andsrc/posts/(writeups). - GitHub Pages auto-deploys from
mainvia.github/workflows/deploy.yml. Changes go live within a few minutes. - CNAME (
public/CNAME) points the deployment atethsystems.org.
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
Requires Node 22.
npm install
npm run dev # http://localhost:4321
npm run build # β ./dist
npm testDrop 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.
git submodule update --remote content
git add content
git commit -m "chore(content): bump map submodule"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.
- Branch from
main. - Run
npm install && npm run dev, verify your change. - Open a PR. Once merged, GH Pages redeploys within a few minutes.
- Email: hello@ethsystems.org
- Book a call
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.