Thanks for your interest in contributing! Here's what you need to know.
git clone https://github.com/faucetdb/faucet.git
cd faucet
cd ui && npm install && cd ..
make build
make testRequirements: Go 1.25+, Node.js 18+ (for UI), golangci-lint
- Fork the repo and create a branch from
main - Make your changes
- Run
make testandmake lintbefore committing - Open a PR targeting the
devbranch
| Command | What it does |
|---|---|
make dev |
Run the server with hot reload |
make dev-ui |
Run the UI dev server (Vite) |
make test |
Run all tests with race detection |
make test-v |
Verbose test output |
make test-cover |
Generate coverage report |
make lint |
Run golangci-lint |
make bench |
Run benchmarks |
make build |
Build UI + Go binary |
cmd/faucet/ → CLI entrypoint (Cobra)
internal/
api/ → HTTP handlers and middleware (Chi router)
config/ → SQLite config store
connector/ → Database drivers (PostgreSQL, MySQL, SQL Server, Snowflake, SQLite)
mcp/ → MCP server implementation
ui/ → Embedded admin UI assets
ui/ → Preact + Vite + Tailwind source
- Bug fixes — Always welcome. Include a test if possible.
- New database connectors — Implement the
connector.Connectorinterface. - Documentation — Improvements to the wiki are appreciated.
- Performance improvements — Include benchmark results (
make bench).
- Follow existing patterns in the codebase
golangci-lintmust pass (make lint)- Tests use the standard
testingpackage — no test frameworks - Keep PRs focused. One feature or fix per PR.
Open an issue with:
- Faucet version (
faucet version) - Database type and version
- Steps to reproduce
- Expected vs. actual behavior
By contributing, you agree that your contributions will be licensed under the MIT License.