Thanks for considering a contribution. This is a small, static-site project — the bar for pitching in is low.
- Frontend (
web/):npm install && npm run dev. Runs against thebooks.jsonalready committed to the repo, no pipeline or API keys needed. - Pipeline (
pipeline/):uv sync, thenuv run python -m gutenberg_galaxy <stage>. Only needed if you're changing how book data is fetched, embedded, or tagged. Theenrichstage requiresOPENROUTER_API_KEY; every other stage runs free and local.
See the README for the full rundown.
- Frontend:
npm run build(type-checks withtscand builds with Vite) andnpm test(Vitest) must pass. - Pipeline:
uv run pytestmust pass. - Keep changes scoped — small, focused PRs are much easier to review than ones that mix a fix with a refactor.
- Match the existing code style (no linter/formatter is enforced yet; read the surrounding file and follow it).
- If you change frontend behavior, describe how you tested it manually (this repo has no end-to-end test suite).
Open a GitHub issue with:
- What you expected vs. what happened (bugs), or the problem you're trying to solve (features)
- Steps to reproduce, if applicable
- Whether it's about the live site, the pipeline, or the data itself
This project deliberately improves on the Winnie Lim prototype it started from — see the README's "The design" section. Fidelity to the original is an influence, not a constraint: if a change makes the site more usable, it's in scope even if it departs from the prototype.