Skip to content

Contributing

Damir Mukimov edited this page Dec 15, 2025 · 7 revisions

Contributing

Thank you for your interest in contributing to ZoneKit!


Getting Started

Prerequisites

Requirement Version Notes
Go 1.22+ Download
Git Latest Download
GitHub Account - For forking and PRs

Development Setup

Step-by-step setup instructions
# 1. Fork and clone the repository
git clone https://github.com/YOUR_USERNAME/zonekit.git
cd zonekit

# 2. Install dependencies
go mod download

# 3. Install development tools
make dev-setup

# 4. Verify setup
make test
make lint

Development Workflow

  1. Create a branch:

    git checkout -b feature/your-feature-name
  2. Make your changes:

    • Write code
    • Add tests
    • Update documentation
  3. Test your changes:

    make test
    make lint
  4. Commit your changes:

    git commit -m "feat: add your feature"
  5. Push and create a PR:

    git push origin feature/your-feature-name

Code Standards

Go Code Style

  • Follow Effective Go guidelines
  • Use gofmt for formatting
  • Run golangci-lint before committing

Testing

  • Write tests for new features
  • Maintain or improve test coverage
  • Use testify/suite for test organization

Commit Messages

Follow Conventional Commits:

Type Description Example
feat: New feature feat: add support for SRV records
fix: Bug fix fix: handle API timeout errors
docs: Documentation docs: update installation instructions
style: Code style style: format code with gofmt
refactor: Refactoring refactor: simplify config loading
test: Tests test: add tests for DNS service
chore: Maintenance chore: update dependencies

Areas for Contribution

Features

  • New DNS record types
  • Additional plugins
  • Bulk operation improvements
  • Configuration enhancements

Documentation

  • Wiki improvements
  • Code examples
  • Tutorials
  • Translation

Testing

  • Additional test coverage
  • Integration tests
  • Performance tests

Bug Fixes

  • Check Issues
  • Look for "good first issue" labels

Plugin Development

See Plugins wiki page and:

Pull Request Process

  1. Update documentation if needed
  2. Add tests for new features
  3. Ensure all tests pass
  4. Run linter and fix any issues
  5. Update CHANGELOG.md (if applicable)
  6. Create PR with clear description

PR Checklist

  • Code follows project style
  • Tests added/updated
  • Documentation updated
  • Linter passes
  • All tests pass
  • No breaking changes (or documented)

Code Review

  • Be respectful and constructive
  • Address review comments promptly
  • Ask questions if something is unclear

Questions?

  • Open an issue for discussion
  • Check existing issues and PRs
  • Review the codebase

License

By contributing, you agree that your contributions will be licensed under the same license as the project (MIT License).

Thank you for contributing! 🎉

Clone this wiki locally