A content-first thought-leadership site for codifying design decisions. Built with Eleventy.
This project uses proto only for Node version management (not nvm). Node 20 (LTS) is pinned in .prototools.
-
Install Node via proto (if not already installed):
proto install
-
Install dependencies:
npm install
Or use proto to run npm:
proto run npm install -
Start the dev server (with live reload):
npm start
Or:
proto run npm start -
Production build:
npm run build
-
Serve the production build locally:
npm run serve
- Posts (blog): Add markdown files in
src/posts/. Use frontmatter:title,description,date,tags, and optionallayout. - Frameworks: Add markdown in
src/frameworks/. Usetitle,description, and optionaltags. - References: Add markdown in
src/references/. Usetitle,description, and optionaltags.
Directory data files (posts.json, frameworks.json, references.json) set default layout and permalink patterns.
Styles are driven by CSS custom properties in src/assets/css/tokens.css:
- Colors:
--color-bg,--color-fg,--color-link,--color-accent,--color-muted,--color-border - Focus:
--focus-ring,--focus-ring-offset - Typography:
--font-base,--font-mono,--type-scale-*,--line-height-* - Spacing:
--space-*(xs, sm, md, lg, xl, 2xl) - Layout:
--content-width,--wide-width
Import tokens.css first in the main stylesheet; other CSS files use these variables.
The site is built and deployed to GitHub Pages via GitHub Actions when changes are pushed to main.
- In the repo: Settings → Pages
- Under Build and deployment, set Source to GitHub Actions
- The workflow in
.github/workflows/deploy.ymlbuilds Eleventy and deploys the_siteoutput - The custom domain
designsystems.engineeris set via theCNAMEfile
src/
├── _data/ # Site metadata, navigation
├── _includes/ # Layouts, components, shortcodes
├── assets/css/ # Tokens, base, layout, typography
├── posts/ # Blog posts
├── frameworks/ # Framework collection
├── references/ # Reference collection
├── index.md # Homepage
├── about.md
├── start-here.md
└── feed.njk # RSS feed