GoEcosystem Architecture
This document outlines the overall architecture and design principles for GoEcosystem projects.
Repository Structure
GoEcosystem is organized into several repository categories:
- Templates
go-template
: Standard Go application templatego-library-template
: Template for Go libraries
- Core Infrastructure
go-utils
: Shared utilitiesgo-docs
: Organization-wide documentation
- Applications
webscraper
: Web scraping application- Other application repositories
- Libraries
- Various libraries for specific functionality
Standard Project Structure
All Go projects follow this structure:
.
├── cmd/ # Application entrypoints
├── internal/ # Private code
├── pkg/ # Public libraries
├── docs/ # Documentation
├── test/ # Integration tests
├── go.mod # Go module file
├── LICENSE # MIT License
└── README.md # Project documentation
Dependency Management
- All projects use Go modules
- Dependencies are pinned to specific versions
- Shared code is extracted to separate repositories
Continuous Integration
All repositories use:
- GitHub Actions for testing and linting
- Branch protection rules for
main
- Pull request reviews
Design Principles
- Simplicity: Keep code simple and maintainable
- Modularity: Create small, focused packages
- Testability: Design for testability
- Documentation: Document all exported APIs
- Reusability: Extract common functionality to shared libraries