Welcome! 🎉 Thank you for your interest in contributing to Lit – a modular, production-grade collection of Go libraries that simplifies backend development.
This document provides guidelines to help you get started and ensure consistent, high-quality contributions.
Please be respectful and inclusive in all interactions. By participating in this project, you agree to abide by our Code of Conduct.
We welcome all kinds of contributions:
If you find a bug, open an issue with:
- A clear title and description
- Steps to reproduce
- Expected and actual behavior
- Environment details (Go version, OS)
Help clarify usage, improve readability, or correct mistakes in:
- README files
- Module documentation
- Examples
Propose improvements or new modules via GitHub Discussions or open an issue with the enhancement label.
Contribute to existing modules (like ioutil, iam, guard, broker, monitoring, etc.) or propose new reusable components.
To maintain code quality and consistency, please follow these guidelines:
- Use
gofmtbefore committing (go fmt ./...) - Use clear, descriptive naming (e.g.,
NewHandler,WithConfig) - Keep functions short and focused
- Prefer composition over inheritance
- All logic must be covered by unit tests
- Use table-driven tests where applicable
- Mock external dependencies to keep tests isolated
- Run
make testand ensure all tests pass locally
- This project uses automated CI to run tests on each Pull Request (PR) and Merge Request (MR)
- Only PRs with all tests passing will be eligible for approval
- The CI pipeline includes:
- Code formatting/linting
- Unit test execution
- Build validation
git clone https://github.com/YOUR_USERNAME/lit.git
cd litgit checkout -b feature/my-feature
Use descriptive branch names (fix/config-reload, feat/grpc-middleware).
- Keep commits focused and small
- Add tests for new logic
- Update documentation if needed
make test
git push origin feature/my-feature
Then, open a pull request on GitHub. Please fill out the PR template and describe the change clearly.
By contributing to this project, you agree that your contributions will be licensed under the project's Apache-2.0 License.