Contributions are welcome! Here's how to get started.
Prerequisites: Go 1.26+, Deno 2.x, Make
git clone https://github.com/nikicat/secrets-dispatcher.git
cd secrets-dispatcher
make build # Full build (frontend + Go binary)
make backend-dev # Quick Go build (uses dev frontend proxy)make test-go # Go unit/integration tests
make test-e2e # Playwright E2E tests (chromium)
make test-e2e-all # E2E tests in all browsers
make pre-commit # Lint + format + tests (run before submitting)make backend-dev— builds Go binary to.build/make dev— starts Vite dev server with API proxy to:8484- Run
.build/secrets-dispatcher servefor the backend
The frontend (Svelte) live-reloads. The Go binary needs rebuilding on backend changes.
- Go:
gofmt(enforced by CI). Runmake fmt-goto auto-format. - Frontend: Deno fmt + lint (enforced by CI). Run
make fmt-frontend. - Static analysis:
go vetandstaticcheck(enforced by CI).
- Fork the repository
- Create a feature branch from
master - Make your changes
- Run
make pre-commitand ensure it passes - Open a pull request with a clear description of what and why
.
├── main.go # CLI entrypoint (stdlib flag)
├── internal/
│ ├── api/ # HTTP API + embedded frontend
│ ├── approval/ # Approval engine + trust rules
│ ├── cli/ # CLI commands
│ ├── config/ # Configuration loading
│ ├── dbus/ # D-Bus Secret Service proxy
│ ├── gpgsign/ # GPG signing proxy
│ ├── notification/ # Desktop notifications
│ ├── procutil/ # Process chain detection
│ ├── proxy/ # Proxy core logic
│ └── service/ # systemd service management
├── web/ # Svelte frontend (Deno + Vite)
└── docs/ # Documentation