{"id":28546182,"url":"https://github.com/jmcarbo/gotemplate","last_synced_at":"2026-05-07T04:36:20.665Z","repository":{"id":297160750,"uuid":"995830996","full_name":"jmcarbo/gotemplate","owner":"jmcarbo","description":"Production-ready Go project template with Clean Architecture, SOLID principles, and comprehensive tooling","archived":false,"fork":false,"pushed_at":"2025-06-04T07:28:05.000Z","size":164,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-07T06:43:05.229Z","etag":null,"topics":["cicd","clean-architecture","docker","go","golang","solid","template","testing"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jmcarbo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-04T04:28:53.000Z","updated_at":"2025-06-04T07:28:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"d3f30cbd-0e06-4f43-8b6b-63cad606bf8e","html_url":"https://github.com/jmcarbo/gotemplate","commit_stats":null,"previous_names":["jmcarbo/gotemplate"],"tags_count":1,"template":true,"template_full_name":null,"purl":"pkg:github/jmcarbo/gotemplate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmcarbo%2Fgotemplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmcarbo%2Fgotemplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmcarbo%2Fgotemplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmcarbo%2Fgotemplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jmcarbo","download_url":"https://codeload.github.com/jmcarbo/gotemplate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmcarbo%2Fgotemplate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278839875,"owners_count":26055021,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cicd","clean-architecture","docker","go","golang","solid","template","testing"],"created_at":"2025-06-09T23:09:04.154Z","updated_at":"2025-10-07T20:27:53.728Z","avatar_url":"https://github.com/jmcarbo.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Go Clean Architecture Template 🏗️\n\n[![CI](https://github.com/jmcarbo/gotemplate/actions/workflows/ci.yml/badge.svg)](https://github.com/jmcarbo/gotemplate/actions/workflows/ci.yml)\n[![Tests](https://github.com/jmcarbo/gotemplate/actions/workflows/test.yml/badge.svg)](https://github.com/jmcarbo/gotemplate/actions/workflows/test.yml)\n[![Go Version](https://img.shields.io/badge/Go-1.23-blue.svg)](https://golang.org/doc/go1.23)\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n\nA production-ready Go project template implementing Clean Architecture principles with SOLID design patterns, complete with testing, CI/CD, and project management tools.\n\n## ✨ Features\n\n- **🏛️ Clean Architecture** - Clear separation of concerns with domain, use cases, adapters, and infrastructure layers\n- **💎 SOLID Principles** - Enforced throughout the codebase for maintainable and scalable applications\n- **🔄 Template Synchronization** - Keep your projects updated with the latest template improvements\n- **📦 Semantic Versioning** - Automated version management with conventional commits\n- **🧪 Comprehensive Testing** - Unit, integration, and template functionality tests\n- **🐳 Docker Support** - Multi-stage builds and docker-compose for local development\n- **🔧 Development Tools** - Pre-configured linting, formatting, and git hooks\n- **📚 Rich Documentation** - Architecture guides, examples, and best practices\n- **🤖 GitHub Actions** - CI/CD pipelines for testing, building, and releasing\n\n## 🚀 Quick Start\n\n### Use this Template\n\n1. Click the \"Use this template\" button on GitHub\n2. Create your new repository\n3. Clone and set up your project:\n\n```bash\ngit clone https://github.com/yourusername/mynewproject.git\ncd mynewproject\nmake setup-project PROJECT_NAME=mynewproject MODULE_PATH=github.com/yourusername/mynewproject\n```\n\n### Or Clone Directly\n\n```bash\n# Clone the template\ngit clone https://github.com/jmcarbo/gotemplate.git myproject\ncd myproject\n\n# Set up for your project\nmake setup-project PROJECT_NAME=myproject MODULE_PATH=github.com/yourusername/myproject\n\n# Install tools and dependencies\nmake install-tools\n./scripts/install-hooks.sh\n\n# Start developing\nmake dev\n```\n\n## 📖 Documentation\n\n- [Getting Started Guide](docs/getting-started.md) - Detailed setup instructions\n- [Architecture Overview](docs/architecture.md) - Clean Architecture implementation\n- [Project Structure](docs/project-structure.md) - Directory layout and conventions\n- [Development Guide](docs/development.md) - Development workflow and best practices\n- [Template Sync Guide](docs/template-sync.md) - Keep your project updated\n- [Examples](docs/examples.md) - Complete feature implementation examples\n\n## 🏗️ Project Structure\n\n```\n.\n├── cmd/                    # Application entrypoints\n├── internal/              # Private application code\n│   ├── domain/           # Business logic and entities\n│   ├── usecases/         # Application business rules\n│   ├── adapters/         # Interface adapters (HTTP, gRPC, CLI)\n│   └── infrastructure/   # External services (DB, cache, etc.)\n├── pkg/                   # Public packages\n├── docs/                  # Documentation\n├── test/                  # Test suites\n└── scripts/              # Utility scripts\n```\n\n## 🛠️ Available Commands\n\n```bash\n# Development\nmake run              # Run the application\nmake dev              # Run with hot reload\nmake build            # Build the binary\nmake test             # Run all tests\nmake lint             # Run linter\nmake fmt              # Format code\n\n# Template Management\nmake template-check   # Check for template updates\nmake template-sync    # Sync with template updates\n\n# Version Management\nmake version          # Show current version\nmake release          # Create a new release\n\n# Docker\nmake docker-build     # Build Docker image\nmake docker-run       # Run in Docker\n```\n\n## 🧪 Testing\n\n### For Template Users\n\nYour project includes standard Go testing:\n\n```bash\n# Run all tests\nmake test\n\n# Run with coverage\nmake test-coverage\n\n# Run benchmarks\nmake benchmark\n```\n\n### For Template Development\n\nThe template itself is thoroughly tested:\n\n```bash\n# Run local template test\n./test/test_template.sh\n\n# GitHub Actions runs comprehensive tests:\n# - Code quality (lint, format, build)\n# - Template instantiation (multiple scenarios)\n# - Development workflow\n# - Docker builds\n# - Version management\n# - Pre-commit hooks\n# - Full integration tests\n```\n\n## 🔄 Keeping Your Project Updated\n\nAfter creating your project, you can sync updates from the template:\n\n```bash\n# Check for updates\nmake template-check\n\n# Preview changes\nmake template-sync-dry\n\n# Apply updates\nmake template-sync\n```\n\n## 📋 Requirements\n\n- Go 1.23 or higher\n- Docker and Docker Compose\n- Make\n- Git\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request. See our [Contributing Guidelines](CONTRIBUTING.md) for details.\n\n## 📄 License\n\nThis template is available under the MIT License. See [LICENSE](LICENSE) for details.\n\n## 🙏 Acknowledgments\n\n- Inspired by Clean Architecture principles by Robert C. Martin\n- Built with best practices from the Go community\n- Incorporates patterns from Domain-Driven Design\n\n## 🔗 Resources\n\n- [Clean Architecture](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)\n- [SOLID Principles](https://en.wikipedia.org/wiki/SOLID)\n- [Conventional Commits](https://www.conventionalcommits.org/)\n- [Semantic Versioning](https://semver.org/)\n\n---\n\nMade with ❤️ for the Go community","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmcarbo%2Fgotemplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjmcarbo%2Fgotemplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmcarbo%2Fgotemplate/lists"}