Contributing
Prerequisites
- Go 1.25+
- Node.js 20+ and pnpm
- golangci-lint v2.9+
- Wails v2 (only for desktop app)
Setup
bash
git clone https://github.com/ZacharyZcR/NLUI.git
cd NLUI
make build # Build server binary
make test # Run Go tests
make lint # Run golangci-lint
make sdk-test # Run TypeScript engine testsProject Layout
cmd/nlui/ CLI & HTTP server entry point
bootstrap/ Host helper — tool discovery, router wiring
config/ YAML config types & loader
core/ LLM client, conversation manager, tool loop
engine/ Facade — single entry point for hosts
gateway/ OpenAPI spec parsing, tool building, HTTP caller
service/ Shared business logic (target/LLM/proxy CRUD)
server/ Gin HTTP server (host)
desktop/ Wails desktop app (host, separate go.mod)
mcp/ MCP server & client
sdk/ TypeScript engine, client SDKs, UI components
frontend/ Next.js chat UIWorkflow
- Fork the repo, create a branch from
main - Keep changes focused on one concern
- Run
make lint testbefore pushing - Write or update tests for behavior changes
- Open a PR with a clear description
Commit Format
type: short descriptionTypes: feat, fix, refactor, test, docs, chore, ci
Code Style
Go:
gofmtis enforced by pre-commit hook- golangci-lint for additional checks
- Short functions, early returns, no dead code
TypeScript:
- Prefer
constoverlet, avoidany
Reporting Bugs
Use the Bug Report template with:
- Affected component
- Steps to reproduce
- Expected vs actual behavior
- Environment details