Contributing
Thank you for considering contributing to cs-routeros-bouncer!
Getting started
Section titled “Getting started”Prerequisites
Section titled “Prerequisites”- Go 1.24+
- A MikroTik router (for functional testing — optional)
- Git
-
Fork and clone the repository
Terminal window git clone https://github.com/YOUR-USERNAME/cs-routeros-bouncer.gitcd cs-routeros-bouncer -
Install dependencies and verify the build
Terminal window go mod downloadgo build ./...go test ./...
Development workflow
Section titled “Development workflow”-
Create a branch from
mainTerminal window git checkout -b feat/my-feature -
Make your changes — keep commits focused and atomic
-
Write tests for new functionality
-
Run the test suite and linter
Terminal window go test ./...golangci-lint run -
Commit using conventional commit messages
feat: add support for new featurefix: correct handling of edge casedocs: update configuration reference -
Push and create a Pull Request
Commit messages
Section titled “Commit messages”Follow Conventional Commits:
| Prefix | Usage |
|---|---|
feat: | New feature |
fix: | Bug fix |
docs: | Documentation changes |
test: | Adding or modifying tests |
refactor: | Code change that neither fixes a bug nor adds a feature |
perf: | Performance improvement |
chore: | Build process or auxiliary tool changes |
ci: | CI/CD changes |
Code style
Section titled “Code style”- Follow standard Go conventions (
gofmt,go vet) - Use meaningful variable and function names
- Add comments for exported functions and complex logic
- Keep functions focused — one function, one responsibility
- Handle errors explicitly — no silent failures
Pull request guidelines
Section titled “Pull request guidelines”- Keep PRs focused on a single change
- Include tests for new functionality
- Update documentation if behavior changes
- Ensure all CI checks pass
- Provide a clear description of what and why
Reporting issues
Section titled “Reporting issues”When reporting bugs, please include:
- Bouncer version (
cs-routeros-bouncer version) - MikroTik RouterOS version
- Configuration (with credentials redacted)
- Relevant log output (
LOG_LEVEL=debug) - Steps to reproduce