website
git clone https://git.pyrossh.dev/website
木 Personal website of pyrossh. Built with astrojs, shiki, vite.
README.md
# Website
Personal website, built as a static site with [Eleventy](https://www.11ty.dev) and
[Elena](https://elenajs.com) web components.
## Project Structure
```text
├── 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](https://hurl.dev) checks against the live git dumb-http endpoint (`git.pyrossh.dev`); requires the `hurl` CLI |