website

#astro#js#html#css

git clone https://git.pyrossh.dev/website

木 Personal website of pyrossh. Built with astrojs, shiki, vite.


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