This resource was made by the Go community and wouldn't be possible without you! We appreciate and recognize all contributors.
Join us on IRC at #awesome-go on freenode web access
Please be aware that we want to accept your contribution, but we have some rules to keep the minimum quality of the packages listed here. All reviews are not personal feedback, even if you are a developer reviewing your contribution. Sorry if we can't meet your expectations, we do our best.
- To add, remove, or change things on the list: Submit a pull request
To set this list apart from and complement the excellent Go wiki Projects page, awesome-go is a specially curated list for high-quality, actively maintained Go packages and resources.
- List items should be sorted alphabetically;
- Each item should be limited to one link;
- The link should be the name of the package or project;
- Descriptions should be clear, concise, and non-promotional;
- Descriptions should follow the link, on the same line and end with a punctuation mark;
- At least 3 items are needed to create a new category;
- The package or project had to be maintained under open source license ( we make a brief review of the code before the link enters the list ), see list of allowed licenses.
Please contribute links to packages/projects you have used or are familiar with. This will help ensure high-quality entries.
If you removed our PR template you can find it here.
To be on the list, project repositories should adhere to these quality standards (https://goreportcard.com/report/github.com/ github_user / github_repo):
- Code functions as documented and expected
- Generally useful to the wider community of Go programmers
- Actively maintained
- Regular, recent commits
- Or, for finished projects, issues and pull requests are responded to
- Stable or progressing toward stable
- Thoroughly documented (README, pkg.go.dev doc comments, etc.) in english language, so everyone is able to understand the project's intention and how it works
- Tests, where practical. If the library/program is testable, then coverage should be >= 80% for non-data-related packages and >=90% for data related packages. Notice: the tests will be reviewed too. We will check your coverage manually if your package's coverage is just a benchmark results.
Congrats, your project got accepted - what now?
[![Mentioned in Awesome Go](https://awesome.re/mentioned-badge.svg)](https://github.com/avelino/awesome-go) [![Mentioned in Awesome Go](https://awesome.re/mentioned-badge-flat.svg)](https://github.com/avelino/awesome-go)
To make sure every PR is checked, we have team maintainers. Every PR MUST be reviewed by at least one maintainer before it can get merged.
The maintainers will review your PR and notify you and tag it in case any information is still missing. They will wait 15 days for your interaction, after that the PR will be closed.
Please open an issue if you would like to discuss anything that could be improved or have suggestions for making the list a more valuable resource. We realize sometimes packages fall into abandonment or have breaking builds for extended periods of time, so if you see that, feel free to change its listing or let us know. We also realize that sometimes projects are just going through transitions or are more experimental in nature. These can still be cool, but we can indicate them as transitory or experimental.
Removal changes will not be applied until they have been pending for a minimum of 1 week (7 days). This grace window benefits projects that may be going through a temporary transition but are otherwise worthy of being on the list.