Static site, built with Eleventy. Plain HTML/CSS/JS
output, deployed to GitHub Pages via the workflow in .github/workflows/.
npm install
npm run dev # serves at http://localhost:8080 with live reload
npm run build # one-shot build to ./_site| What | Where |
|---|---|
| Bio / homepage | src/index.njk |
| Talks list | src/_data/talks.json |
| Writing list | src/_data/writings.json |
| Quotes | src/_data/quotes.json |
| Internal posts | src/writing/posts/<slug>.md |
| Styles | src/_includes/css/main.css (inlined) |
| Site meta + socials | src/_data/site.js |
| Page templates | src/_includes/*.njk, src/*.njk |
Append an entry to src/_data/talks.json:
{
"title": "What I said",
"venue": "Conference Name",
"date": "2026-05-17",
"links": [
{ "label": "slides", "url": "https://..." }
]
}Common link labels: slides, video, notes, tweet, event, writeup.
- External (hosted elsewhere): set
external. Shows↗ hostindicator. - Internal (hosted here): set
slug, then write the post markdown atsrc/writing/posts/<slug>.mdwithtitle+datefront-matter.
Each entry must have exactly one of external or slug — the build
will fail loudly if both or neither are set.
Append to src/_data/quotes.json. Required: text, source. Optional: year.
Push to develop. The GitHub Actions workflow builds and publishes to the
gh-pages branch; GitHub serves it at https://anirudha.co.