Contribute
Set up a local development environment and submit your first merge request. YotoShelf is built to welcome AI-assisted contributors.
YotoShelf is open source (MIT) and actively maintained. Contributions are welcome: bug fixes, new features, documentation improvements, and test coverage all count.
Before you start
Read AGENTS.md
in the repository root before making any changes. It documents the required workflow,
architecture constraints, and the validation checklist every merge request must pass.
The pages under /contribute render sections of the application repository's
CONTRIBUTING.md
and
AGENTS.md,
fetched from the repository's main branch when this site is built. Anything
those two files do not say, this section does not say either: it links you into the
repository instead.
AI-assisted contributors should fetch /llms-full.txt
for a complete machine-readable rendition of this documentation.
Sections in this guide
- How It Works: the AGENTS.md contract summarised, covering blast radius limits, the one-thing-at-a-time rule
- Architecture: Go + huma + SQLite/sqlc/goose; Astro + Svelte 5 frontend; go-yoto client; design system submodule
- Dev Loop: clone, mise, just recipes, fixture seeding, E2E
- CI: the pipeline the app repo defines, and the gates
just checkruns locally - Conventions: file-size limits, structural conformity, i18n, error handling
Quick start
git clone --recurse-submodules https://gitlab.com/yotoshelf/yotoshelf.git
cd yotoshelf
mise install # installs exact Go, Node, sqlc, golangci-lint versions
just dev # starts backend + frontend, creates admin user
Note:
--recurse-submodulesis required — the frontend consumesfrontend/designas a git submodule. If you already cloned without it, rungit submodule update --init.
Login at http://localhost:4300 with admin@localhost / admin.
Warning: The default credentials above are dev-only and are seeded automatically by
just dev. Never use them in production — usecreate-adminwith a strong password instead.
After every change
After every change, run:
just check
It runs the same commands as the CI jobs check:go, check:file-size,
check:frontend, check:frontend-types, check:i18n and check:generated.
While iterating, just check-fast runs the same gates without the network or
the race detector; run the full just check before pushing.
Four CI jobs have no local equivalent and can only fail in the pipeline:
check:secrets, check:hygiene, build:container and e2e:playwright. So a green
just check means those four are the only jobs still unproven — not that the
pipeline is guaranteed green.