Thanks for your interest in DockSight.
- Keep changes focused and well-scoped.
- Prefer the existing modular monolith boundaries in
apps/server. - Do not introduce Kubernetes abstractions or microservice splits without an ADR.
- Discuss larger architectural changes in an issue or ADR under
docs/decisions/.
- Fork and clone the repository.
- Copy
.env.examplefiles and install dependencies (npm install). - Start local infra:
npm run docker:infra. - Run
npm run dev:serverandnpm run dev:web. - Create a branch for your change.
- Open a pull request with a clear summary and test notes.
Open PRs against develop, not main. main tracks releases;
day-to-day work lands on develop first.
The repo has two separate Go modules. You must cd into the module
before running go commands — there is no root Go workspace.
| Module | Path | go version |
|---|---|---|
| CLI | apps/cli |
see apps/cli/go.mod (currently 1.26.5) |
| Agent | apps/agent |
see apps/agent/go.mod (currently 1.25.0) |
Install a Go toolchain that satisfies the module you are changing (the
go directive in that module's go.mod). https://go.dev/dl/
# CLI
cd apps/cli
go build -o docksight .
go test ./...
# Agent
cd apps/agent
go build -o docksight-agent .
go test ./...More CLI layout notes (including the internal/ ↔ ui rule) live in
apps/cli/README.md. User-facing command docs:
docs/cli.md.
CLI features that drive systemd or the Docker socket only work on
Linux (and typically need root). Use a Linux VM or cloud VPS when exercising
docksight install, docksight agent install, or agent service commands.
- Frontend: feature folders under
apps/web/src/features, shared UI undercomponents. - Backend: one NestJS module per domain under
apps/server/src/<domain>. - Agent: keep Docker and communication logic inside
agent/internal. - Docs: update architecture docs when boundaries change.
Use concise commit messages that explain why the change exists.
Examples:
add NestJS health module foundationconfigure Vite path aliases for shadcn
Be respectful and constructive. Harassment or discrimination is not tolerated.