Thanks for considering a contribution. This is a one-page on-ramp; deeper
conventions live in AGENTS.md (repo-wide) and the AGENTS.md
files under server/ and web/dash0/.
Search open issues first.
For anything beyond a small fix, open an issue to discuss the approach before
writing code. Larger work at SolidPing is tracked as a spec file in
specs/todos/ (see the naming convention in AGENTS.md);
you don't need to write one yourself, but it explains why a PR may reference
specs/todos/YYYY-MM-DD-NN-*.md.
Prerequisites: Go (version pinned in server/go.mod; CI runs
the version pinned in .github/workflows/ci.yml),
Bun for web/dash0 and web/status0 (no npm/Node), and
Docker for PostgreSQL.
docker-compose up -d # infrastructure (Postgres)
make dev # backend + dash0 + status0, hot reload
make dev-test # same, with SP_RUNMODE=testDefault credentials are in AGENTS.md — note
that the normal seeded admin (admin@solidping.io / solidpass) is forced
through a password change on first login; the test-mode user
(test@test.com / test) is not.
Database changes: add a migration, then make migrate (see
wiki/conventions/database.md for the
one-migration-per-release convention before adding a new file).
make fmt && make lint && make testIf you touched web/dash0, also run its own gates from
web/dash0/AGENTS.md:
make build-dash0
cd web/dash0 && bun run lint && bun run test:unitPlaywright E2E for the dashboard lives under web/dash0/e2e/
(bun run test:e2e).
Add a description worth a changelog entry only if the change is user-visible
— release-please writes the changelog from the PR title and body per
wiki/conventions/changelog.md.
This repo squash-merges exclusively with the PR title as the commit subject, and release-please parses that subject to build the changelog and pick the next version. A title it can't parse is silently dropped from both.
Format: <type>[(scope)][!]: <description>, allowed types
feat|fix|perf|revert|docs|style|chore|refactor|test|build|ci (enforced by
.github/workflows/pr-title.yml). One PR
per topic.
No real company name (employer, customer, vendor) belongs anywhere in this
repository — not in fixtures, tests, sample data, comments, or commit/PR text.
Use acme (acme.com, acmetech, alice@acme.com) instead, keeping the
shape of what you're replacing. See AGENTS.md
for the full rule and why.
web/docs/ is the published documentation site
(docs.solidping.io); wiki/ is internal engineering notes. Competitor
comparisons never go in web/docs/ — they belong in wiki/competitors/. The
only competitor-facing pages web/docs/ carries are the migrate-from-*
import guides.
By contributing, you agree your contribution is licensed under the project's AGPL-3.0 license.