Contributing
This is a small, config-driven dashboard template. Contributions that add a new provider adapter, fix a bug, or improve docs are welcome. Contributions that add multi-tenant auth, a plugin marketplace, or other scope well beyond “single-owner ops dashboard” are probably better as a fork — open an issue first if you’re unsure.
Repo conventions
Section titled “Repo conventions”- Commits: Conventional Commits, one line, no body unless there’s a reason. Enforced by commitlint + Husky.
- Tests: live under
src/tests/, mirroring the source tree — do not colocate*.test.tsbeside implementation files. Vitest globals are enabled. - Formatting/linting:
npm run format(Prettier, single quotes,printWidth: 140),npm run lint(ESLint). Both should pass before opening a PR. - Build:
npm run buildshould pass. - CI:
.github/workflows/ci.ymlruns test, lint, and build on every PR. - Add mocked tests for provider adapters — never gate a PR on hitting a real external service.
Adding a provider adapter
Section titled “Adding a provider adapter”See the dedicated guide for the full step-by-step process.
Data boundaries
Section titled “Data boundaries”This tool collects aggregate operational signals only. A new adapter must not change that. See the architecture page for the full data-safety rules.
Security
Section titled “Security”Never commit credentials, API keys, service-role keys, .env, or projects.config.json.
See the security page for how to report a vulnerability.