{"id":15695799,"url":"https://github.com/prongbang/echogen","last_synced_at":"2026-01-11T23:50:38.027Z","repository":{"id":87919578,"uuid":"243951388","full_name":"prongbang/echogen","owner":"prongbang","description":"Golang  Generate Clean Architecture for REST API support Echo Web Framework","archived":false,"fork":false,"pushed_at":"2021-01-17T13:55:12.000Z","size":5,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-25T22:52:04.381Z","etag":null,"topics":["clean","clean-architechture","echo","echo-framework","generate-code","generate-domain","generate-feature","golang","rest-api"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prongbang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2020-02-29T10:51:25.000Z","updated_at":"2024-05-12T23:30:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"21484b4b-faf3-460c-b5d8-ff17b8e8027a","html_url":"https://github.com/prongbang/echogen","commit_stats":null,"previous_names":["prongbang/gestgen"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prongbang%2Fechogen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prongbang%2Fechogen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prongbang%2Fechogen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prongbang%2Fechogen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prongbang","download_url":"https://codeload.github.com/prongbang/echogen/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246320986,"owners_count":20758547,"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","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":["clean","clean-architechture","echo","echo-framework","generate-code","generate-domain","generate-feature","golang","rest-api"],"created_at":"2024-10-03T19:04:52.598Z","updated_at":"2026-01-11T23:50:38.022Z","avatar_url":"https://github.com/prongbang.png","language":"Go","funding_links":["https://www.buymeacoffee.com/prongbang"],"categories":[],"sub_categories":[],"readme":"# echogen 🚀\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/prongbang/echogen.svg)](https://pkg.go.dev/github.com/prongbang/echogen)\n[![Go Report Card](https://goreportcard.com/badge/github.com/prongbang/echogen)](https://goreportcard.com/report/github.com/prongbang/echogen)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Go Version](https://img.shields.io/github/go-mod/go-version/prongbang/echogen.svg)](https://golang.org)\n\n\u003e Code generator for Echo web framework following clean architecture principles. Generate complete feature structures with a single command.\n\n## ✨ Features\n\n- 🏗️ **Clean Architecture** - Automatically generates layered architecture structure\n- 🔌 **Wire Integration** - Built-in support for Google Wire dependency injection\n- 📦 **Echo Framework** - Optimized for Echo web framework\n- 🎯 **Feature-Based** - Generates complete feature modules\n- ⚡ **Fast Development** - Accelerate your development workflow\n- 🧩 **Modular Design** - Well-organized and maintainable code structure\n\n## 📦 Installation\n\n```shell\ngo get -u github.com/prongbang/echogen\ngo install github.com/prongbang/echogen\n```\n\n## 🚀 Quick Start\n\nGenerate a new feature module with a single command:\n\n```shell\nechogen -f user\n```\n\nOr generate within a specific directory:\n\n```shell\ncd project/pkg/api \u0026\u0026 echogen -f user\n```\n\n## 📁 Generated Structure\n\nWhen you run `echogen -f user`, it creates the following structure:\n\n```\nuser/\n├── datasource.go    # Database operations\n├── handler.go       # HTTP handlers\n├── provider.go      # Wire dependency providers\n├── repository.go    # Business logic repository\n├── router.go        # Route definitions\n├── usecase.go       # Use case/business logic\n└── user.go          # Domain model\n```\n\n## 📝 Generated Code Examples\n\n### 1. DataSource Layer\n\n`datasource.go`\n```go\npackage user\n\ntype DataSource interface {\n    // Add your database operations here\n}\n\ntype dataSource struct {\n    DbSource database.DataSource\n}\n\nfunc NewDataSource(dbSource database.DataSource) DataSource {\n    return \u0026dataSource{\n        DbSource: dbSource,\n    }\n}\n```\n\n### 2. Repository Layer\n\n`repository.go`\n```go\npackage user\n\ntype Repository interface {\n    // Add your repository methods here\n}\n\ntype repository struct {\n    Ds DataSource\n}\n\nfunc NewRepository(ds DataSource) Repository {\n    return \u0026repository{\n        Ds: ds,\n    }\n}\n```\n\n### 3. UseCase Layer\n\n`usecase.go`\n```go\npackage user\n\ntype UseCase interface {\n    // Add your business logic methods here\n}\n\ntype useCase struct {\n    Repo Repository\n}\n\nfunc NewUseCase(repo Repository) UseCase {\n    return \u0026useCase{\n        Repo: repo,\n    }\n}\n```\n\n### 4. Handler Layer\n\n`handler.go`\n```go\npackage user\n\ntype Handler interface {\n    // Add your HTTP handlers here\n}\n\ntype handler struct {\n    Uc UseCase\n}\n\nfunc NewHandler(uc UseCase) Handler {\n    return \u0026handler{\n        Uc: uc,\n    }\n}\n```\n\n### 5. Router Configuration\n\n`router.go`\n```go\npackage user\n\nimport \"github.com/labstack/echo\"\n\ntype Router interface {\n    Initial(e *echo.Echo)\n}\n\ntype router struct {\n    Handle Handler\n}\n\nfunc (r *router) Initial(e *echo.Echo) {\n    // Add your routes here\n    // e.GET(\"/users\", r.Handle.GetUsers)\n    // e.POST(\"/users\", r.Handle.CreateUser)\n}\n\nfunc NewRouter(handle Handler) Router {\n    return \u0026router{Handle: handle}\n}\n```\n\n### 6. Wire Provider\n\n`provider.go`\n```go\npackage user\n\nimport \"github.com/google/wire\"\n\nvar ProviderSet = wire.NewSet(\n    NewDataSource,\n    NewRepository,\n    NewUseCase,\n    NewHandler,\n    NewRouter,\n)\n```\n\n### 7. Domain Model\n\n`user.go`\n```go\npackage user\n\ntype User struct {\n    // Add your user fields here\n    ID        string `json:\"id\"`\n    Username  string `json:\"username\"`\n    Email     string `json:\"email\"`\n    CreatedAt int64  `json:\"created_at\"`\n}\n```\n\n## 🔧 Customization\n\nAfter generating the basic structure, you can customize each layer:\n\n1. **Add Methods** - Define interfaces and implement methods\n2. **Add Fields** - Extend structs with necessary fields\n3. **Add Dependencies** - Inject additional dependencies as needed\n4. **Add Validations** - Implement input validation logic\n5. **Add Tests** - Write unit tests for each layer\n\n## 🎯 Best Practices\n\n1. **Follow Clean Architecture** - Keep dependencies pointing inward\n2. **Use Interfaces** - Program to interfaces, not implementations\n3. **Error Handling** - Implement proper error handling at each layer\n4. **Logging** - Add logging where appropriate\n5. **Documentation** - Document your code and APIs\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 💖 Support the Project\n\nIf you find this package helpful, please consider supporting it:\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/prongbang)\n\n## 🔗 Related Projects\n\n- [Echo](https://github.com/labstack/echo) - High performance, minimalist Go web framework\n- [Wire](https://github.com/google/wire) - Compile-time dependency injection for Go\n- [Clean Architecture](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html) - Architecture pattern by Uncle Bob\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprongbang%2Fechogen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprongbang%2Fechogen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprongbang%2Fechogen/lists"}