A sample Go application project layout implementing Clean Architecture with real, runnable code.
go-sample is a sample layout for Go application projects that implements Clean Architecture principles with real, executable code. It provides a concrete blueprint for structuring production-ready Go applications with proper separation of concerns between business logic, interfaces, and infrastructure. The project serves as both an educational resource and a starting point for developers building maintainable Go systems.
Go developers and teams looking to implement Clean Architecture, Domain-Driven Design, or hexagonal patterns in their applications. It's particularly valuable for engineers transitioning from theoretical architecture discussions to practical implementation.
Unlike theoretical architecture articles or minimal boilerplate, go-sample provides a complete, working application that demonstrates how to properly structure a Go project according to established architectural patterns. It bridges the gap between architectural theory and production-ready code.
Go Project Sample Layout
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a fully functional example of Clean Architecture with distinct layers for entities, use cases, interfaces, and infrastructure, making it easy to understand and apply in real projects.
Includes a complete, runnable application with Docker setup and comprehensive testing, offering a scalable foundation for real-world Go applications as highlighted in the key features.
Bridges the gap between theoretical architecture discussions and practical code, with inspirations from Clean Architecture, DDD, and other patterns listed in the README.
Organizes packages and dependencies to promote separation of concerns and long-term maintainability, based on established best practices for Go projects.
The Clean Architecture approach introduces multiple layers and abstractions that can be excessive for smaller or simpler projects, potentially increasing development time without tangible benefits.
The README is minimal, focusing on basic setup without detailed guidance on extending or customizing the architecture for specific needs, which could hinder adaptation.
Relies on Docker for running the application, which might not align with all development workflows, especially for those preferring native Go toolchains or working in restricted environments.