What problem does it solve?
It helps you avoid chaotic or over-engineered Go directory layouts by choosing conventions that match your project type, scope, and intended public/private APIs.
Core Features & Use Cases
- Project-type driven layout selection: Choose a structure for CLI tools, libraries, services, and monorepos/workspaces.
- Go module & package naming rules: Ensure your
go.mod module path and package directories follow consistent, idiomatic conventions.
- Practical Go architecture guardrails: Keep
cmd/ focused on wiring while placing business logic in internal/ or pkg/ appropriately.
- Quality defaults: Cover essential root files (Makefile, .gitignore, golangci-lint config), testing conventions, and monorepo workspace guidance.
Quick Start
Create a layout for your new Go service repository by generating cmd/{service}/main.go, an internal/ package skeleton for private logic, and a root go.mod whose module path matches your GitHub URL.