Thanks for helping improve GoVisual. Keep changes focused, add tests for behavior changes, and update generated dashboard assets when the UI changes.
- Go 1.24 for the core, MCP, and storage modules; Go 1.25 for telemetry and examples (or Go 1.25 for the full repository)
- Node.js 22 and npm for dashboard work
- Docker for PostgreSQL, Redis, MongoDB, and integration examples
- CGO and SQLite development headers for the SQLite module
git clone https://github.com/YOUR_GITHUB_USER/GoVisual.git
cd GoVisual
git remote add upstream https://github.com/doganarif/GoVisual.git
go mod downloadUse a short semantic branch name such as fix/replay-validation, feat/request-filter, or docs/dashboard-guide.
Test the core v2 module:
go test ./...The storage backends, telemetry package, MCP server, and examples are separate Go modules. Run them from their module directories:
for module in store/postgres store/redis store/mongodb store/sqlite telemetry mcp cmd/examples; do
(cd "$module" && go test ./...)
donePostgreSQL, Redis, and MongoDB tests need running services and the same connection variables used by CI:
export PG_CONN='postgres://testuser:testpass@localhost:5432/testdb?sslmode=disable'
export REDIS_CONN='redis://localhost:6379/0'
export MONGO_URI='mongodb://root:root@localhost:27017'Build all examples with:
(cd cmd/examples && go build ./...)Before opening a pull request, format changed Go files and run static checks:
gofmt -w path/to/changed.go
go vet ./...The dashboard source is in internal/dashboard/ui. Its production JavaScript and CSS are committed under internal/dashboard/static because the Go binary embeds them.
Install exactly the locked dependency set, type-check, and rebuild:
cd internal/dashboard/ui
npm ci
npm run typecheck
npm run buildCommit package-lock.json whenever dependencies change. After any UI change, include the regenerated internal/dashboard/static/dashboard.js and internal/dashboard/static/styles.css. CI rebuilds both files and fails when the committed assets differ.
For local watch mode:
npm run dev- Implement the
store.Storeinterface fromstore/store.go. - Put the backend in its own module under
store/<name>. - Reuse
store/storetestfor contract coverage. - Test persistence, ordering, capacity, cleanup, and schema migration behavior.
- Document installation and configuration in storage-backends.md.
- Explain the user-visible problem and the chosen behavior.
- Add focused regression tests.
- Update documentation and generated assets where applicable.
- Keep unrelated refactors out of the change.
- Ensure the core module, affected submodules, dashboard checks, and example build pass.
By contributing, you agree that your contribution is licensed under the project's MIT license.