Website
Personal website, built as a static site with Eleventy and Elena web components.
Project Structure
├── assets/ static css/images/icons/pdfs, copied through as-is
├── src/
│ ├── _data/ global data (site config, local repo discovery)
│ ├── _helpers/ plain JS helpers used by _data files (git plumbing)
│ ├── _includes/ layouts and partials
│ ├── components/ Elena web components
│ ├── posts/ blog post markdown
│ ├── repos/ paginated templates for repo readme/files/commits/blame
│ └── *.njk top-level pages
├── eleventy.config.js
└── package.json
Repo browsing
Pages under /repos/:id are generated entirely from local git checkouts that live as
sibling directories of this project — e.g. ../config, ../rust-embed next to
website/ — not inside this repo. No API calls, no bucket access: README, file
tree/content, commit list, per-commit diffs, per-file history, and per-file blame are all
read straight from git (git ls-tree, git log, git show, git blame) at build time.
A repo listed in src/_data/site.js only gets pages if a matching directory exists next to
this project and is a git repo in its own right (has its own .git, not nested inside
another repo's working tree); otherwise it just shows as a plain, unlinked card on the home
page. File discovery excludes node_modules, dist, .git, and similar build-output
directories regardless of whether they're git-tracked, and reads the tree at HEAD rather
than the working directory so uncommitted local changes don't leak into the generated pages.
Commands
| Command | Action |
|---|---|
npm install |
Install dependencies |
npm run dev |
Start the Eleventy dev server with reload |
npm run build |
Build the static site to ./dist/ |
npm test |
Build, then run the Playwright page tests |
npm run test:hurl |
Run hurl checks against the live git dumb-http endpoint (git.pyrossh.dev); requires the hurl CLI |