Files
Dash/CONTRIBUTING.md
T
Tomas DvorakandDevin 88a8210bf8 feat: i18n seam — typed t() + en dictionary
Nav and header wired as proof. Full string extraction deferred until a
second locale exists; CONTRIBUTING records the convention.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 19:45:46 +02:00

1.8 KiB

Contributing

Thanks for considering a contribution. Dash is a small, deliberate codebase — read AGENTS.md and ROADMAP.md first; the roadmap is canonical for what gets built and when.

Setup

Requires Go 1.24+ and Node 20+.

npm install
npm run generate       # regenerate the TS client from openapi.yaml
npm run dev            # vite dev server on :5173, proxies /api to :8080
cd apps/backend
DASH_DEV=1 go run ./cmd/dash   # API on :8080

Rules of the house

  • openapi.yaml is the API contract. Change it first, then npm run generate. Never hand-write API types in the frontend.
  • All schema changes go through goose migrations in apps/backend/internal/db/migrations — NNNN_name.sql with -- +goose Up and -- +goose Down.
  • Board renderers share state, drag-drop, and popover primitives. Never reimplement them per renderer.
  • No auth, no YAML-as-source-of-truth, no external database. These are non-goals for v1.
  • Standard library before dependencies; existing helpers before new ones.
  • User-visible strings go through t("key") from src/i18n — add the key to en.ts rather than inlining literals in new UI.

Before pushing

npm run typecheck
npm run lint
npm run build

cd apps/backend
go build ./... && go vet ./... && go test ./...

Plus a real smoke test of whatever you changed. All gates green or no push.

Commits and PRs

  • Conventional-ish subjects: feat:, fix:, docs:, refactor: — keep them short and describe the why.
  • Small, reviewable PRs. Fill in the template; a screenshot of UI changes is worth more than a paragraph.

Reporting bugs / requesting features

Use the issue templates. For security issues, see SECURITY.md — do not open a public issue.