├── .gitignore ├── .idea ├── .gitignore ├── golang-architecture.iml ├── modules.xml └── vcs.xml ├── factory ├── factory.go ├── go.mod └── test │ └── test.go ├── hexagonal-news-api ├── .idea │ ├── .gitignore │ ├── hexagonal-news-api.iml │ ├── modules.xml │ └── vcs.xml ├── adapter │ ├── input │ │ ├── controller │ │ │ └── news_controller.go │ │ ├── model │ │ │ └── request │ │ │ │ └── news_request.go │ │ └── routes │ │ │ └── routes.go │ └── output │ │ ├── model │ │ └── response │ │ │ └── news_client_response.go │ │ └── news_http │ │ └── news_api_client.go ├── application │ ├── domain │ │ └── news_domain.go │ ├── port │ │ ├── input │ │ │ └── news_use_case.go │ │ └── output │ │ │ └── news_port.go │ └── service │ │ └── news_service.go ├── configuration │ ├── env │ │ └── get_env.go │ ├── logger │ │ └── logger.go │ ├── rest_err │ │ └── rest_err.go │ └── validation │ │ └── validate.go ├── go.mod ├── go.sum └── main.go ├── hexagonal ├── .gitignore ├── adapter │ ├── input │ │ ├── controller │ │ │ ├── create_user_controller.go │ │ │ ├── find_user_controller.go │ │ │ ├── middlewares │ │ │ │ └── jwt_middleware.go │ │ │ └── routes │ │ │ │ └── routes.go │ │ ├── converter │ │ │ └── convert_domain_to_response.go │ │ └── model │ │ │ ├── request │ │ │ └── user_request.go │ │ │ └── response │ │ │ └── user_response.go │ └── output │ │ ├── converter │ │ ├── convert_domain_to_entity.go │ │ └── convert_entity_to_domain.go │ │ ├── model │ │ └── entity │ │ │ └── user_entity.go │ │ └── repository │ │ ├── create_user_repository.go │ │ └── find_user_repository.go ├── application │ ├── constants │ │ └── token.go │ ├── domain │ │ ├── user_domain.go │ │ └── user_token_domain.go │ ├── port │ │ ├── input │ │ │ └── users_use_case.go │ │ └── output │ │ │ └── user_port.go │ └── services │ │ ├── create_user.go │ │ └── find_user.go ├── configuration │ ├── database │ │ └── mongodb │ │ │ └── mongodb_connection.go │ ├── logger │ │ └── logger.go │ ├── rest_errors │ │ └── rest_errors.go │ └── validation │ │ └── validate.go ├── crud_users.http ├── go.mod ├── go.sum └── main.go ├── mvc ├── go.mod ├── go.sum ├── main.go └── src │ ├── controller │ ├── user-form.go │ └── user.go │ ├── models │ ├── repository │ │ └── user.go │ └── user.go │ └── views │ ├── errors.go │ └── user.go ├── singleton ├── .env ├── go.mod ├── go.sum └── singleton.go └── solid ├── dependency-inversion-principle └── dip.go ├── go.mod ├── interface-segregration-principle └── main.go ├── liskov-substitution-principle └── main.go ├── open-closed-principle ├── right_way.go └── wrong_way.go └── single-responsibility-principle ├── god_object.go ├── journal.go ├── load_news.go └── printer.go /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/.gitignore -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/.idea/.gitignore -------------------------------------------------------------------------------- /.idea/golang-architecture.iml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/.idea/golang-architecture.iml -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/.idea/modules.xml -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/.idea/vcs.xml -------------------------------------------------------------------------------- /factory/factory.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/factory/factory.go -------------------------------------------------------------------------------- /factory/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/HunCoding/golang-architecture/factory 2 | 3 | go 1.18 4 | -------------------------------------------------------------------------------- /factory/test/test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/factory/test/test.go -------------------------------------------------------------------------------- /hexagonal-news-api/.idea/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/.idea/.gitignore -------------------------------------------------------------------------------- /hexagonal-news-api/.idea/hexagonal-news-api.iml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/.idea/hexagonal-news-api.iml -------------------------------------------------------------------------------- /hexagonal-news-api/.idea/modules.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/.idea/modules.xml -------------------------------------------------------------------------------- /hexagonal-news-api/.idea/vcs.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/.idea/vcs.xml -------------------------------------------------------------------------------- /hexagonal-news-api/adapter/input/controller/news_controller.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/adapter/input/controller/news_controller.go -------------------------------------------------------------------------------- /hexagonal-news-api/adapter/input/model/request/news_request.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/adapter/input/model/request/news_request.go -------------------------------------------------------------------------------- /hexagonal-news-api/adapter/input/routes/routes.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/adapter/input/routes/routes.go -------------------------------------------------------------------------------- /hexagonal-news-api/adapter/output/model/response/news_client_response.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/adapter/output/model/response/news_client_response.go -------------------------------------------------------------------------------- /hexagonal-news-api/adapter/output/news_http/news_api_client.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/adapter/output/news_http/news_api_client.go -------------------------------------------------------------------------------- /hexagonal-news-api/application/domain/news_domain.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/application/domain/news_domain.go -------------------------------------------------------------------------------- /hexagonal-news-api/application/port/input/news_use_case.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/application/port/input/news_use_case.go -------------------------------------------------------------------------------- /hexagonal-news-api/application/port/output/news_port.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/application/port/output/news_port.go -------------------------------------------------------------------------------- /hexagonal-news-api/application/service/news_service.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/application/service/news_service.go -------------------------------------------------------------------------------- /hexagonal-news-api/configuration/env/get_env.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/configuration/env/get_env.go -------------------------------------------------------------------------------- /hexagonal-news-api/configuration/logger/logger.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/configuration/logger/logger.go -------------------------------------------------------------------------------- /hexagonal-news-api/configuration/rest_err/rest_err.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/configuration/rest_err/rest_err.go -------------------------------------------------------------------------------- /hexagonal-news-api/configuration/validation/validate.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/configuration/validation/validate.go -------------------------------------------------------------------------------- /hexagonal-news-api/go.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/go.mod -------------------------------------------------------------------------------- /hexagonal-news-api/go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/go.sum -------------------------------------------------------------------------------- /hexagonal-news-api/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal-news-api/main.go -------------------------------------------------------------------------------- /hexagonal/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/.gitignore -------------------------------------------------------------------------------- /hexagonal/adapter/input/controller/create_user_controller.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/adapter/input/controller/create_user_controller.go -------------------------------------------------------------------------------- /hexagonal/adapter/input/controller/find_user_controller.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/adapter/input/controller/find_user_controller.go -------------------------------------------------------------------------------- /hexagonal/adapter/input/controller/middlewares/jwt_middleware.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/adapter/input/controller/middlewares/jwt_middleware.go -------------------------------------------------------------------------------- /hexagonal/adapter/input/controller/routes/routes.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/adapter/input/controller/routes/routes.go -------------------------------------------------------------------------------- /hexagonal/adapter/input/converter/convert_domain_to_response.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/adapter/input/converter/convert_domain_to_response.go -------------------------------------------------------------------------------- /hexagonal/adapter/input/model/request/user_request.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/adapter/input/model/request/user_request.go -------------------------------------------------------------------------------- /hexagonal/adapter/input/model/response/user_response.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/adapter/input/model/response/user_response.go -------------------------------------------------------------------------------- /hexagonal/adapter/output/converter/convert_domain_to_entity.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/adapter/output/converter/convert_domain_to_entity.go -------------------------------------------------------------------------------- /hexagonal/adapter/output/converter/convert_entity_to_domain.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/adapter/output/converter/convert_entity_to_domain.go -------------------------------------------------------------------------------- /hexagonal/adapter/output/model/entity/user_entity.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/adapter/output/model/entity/user_entity.go -------------------------------------------------------------------------------- /hexagonal/adapter/output/repository/create_user_repository.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/adapter/output/repository/create_user_repository.go -------------------------------------------------------------------------------- /hexagonal/adapter/output/repository/find_user_repository.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/adapter/output/repository/find_user_repository.go -------------------------------------------------------------------------------- /hexagonal/application/constants/token.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/application/constants/token.go -------------------------------------------------------------------------------- /hexagonal/application/domain/user_domain.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/application/domain/user_domain.go -------------------------------------------------------------------------------- /hexagonal/application/domain/user_token_domain.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/application/domain/user_token_domain.go -------------------------------------------------------------------------------- /hexagonal/application/port/input/users_use_case.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/application/port/input/users_use_case.go -------------------------------------------------------------------------------- /hexagonal/application/port/output/user_port.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/application/port/output/user_port.go -------------------------------------------------------------------------------- /hexagonal/application/services/create_user.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/application/services/create_user.go -------------------------------------------------------------------------------- /hexagonal/application/services/find_user.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/application/services/find_user.go -------------------------------------------------------------------------------- /hexagonal/configuration/database/mongodb/mongodb_connection.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/configuration/database/mongodb/mongodb_connection.go -------------------------------------------------------------------------------- /hexagonal/configuration/logger/logger.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/configuration/logger/logger.go -------------------------------------------------------------------------------- /hexagonal/configuration/rest_errors/rest_errors.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/configuration/rest_errors/rest_errors.go -------------------------------------------------------------------------------- /hexagonal/configuration/validation/validate.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/configuration/validation/validate.go -------------------------------------------------------------------------------- /hexagonal/crud_users.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/crud_users.http -------------------------------------------------------------------------------- /hexagonal/go.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/go.mod -------------------------------------------------------------------------------- /hexagonal/go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/go.sum -------------------------------------------------------------------------------- /hexagonal/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/hexagonal/main.go -------------------------------------------------------------------------------- /mvc/go.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/mvc/go.mod -------------------------------------------------------------------------------- /mvc/go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/mvc/go.sum -------------------------------------------------------------------------------- /mvc/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/mvc/main.go -------------------------------------------------------------------------------- /mvc/src/controller/user-form.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/mvc/src/controller/user-form.go -------------------------------------------------------------------------------- /mvc/src/controller/user.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/mvc/src/controller/user.go -------------------------------------------------------------------------------- /mvc/src/models/repository/user.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/mvc/src/models/repository/user.go -------------------------------------------------------------------------------- /mvc/src/models/user.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/mvc/src/models/user.go -------------------------------------------------------------------------------- /mvc/src/views/errors.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/mvc/src/views/errors.go -------------------------------------------------------------------------------- /mvc/src/views/user.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/mvc/src/views/user.go -------------------------------------------------------------------------------- /singleton/.env: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/singleton/.env -------------------------------------------------------------------------------- /singleton/go.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/singleton/go.mod -------------------------------------------------------------------------------- /singleton/go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/singleton/go.sum -------------------------------------------------------------------------------- /singleton/singleton.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/singleton/singleton.go -------------------------------------------------------------------------------- /solid/dependency-inversion-principle/dip.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/solid/dependency-inversion-principle/dip.go -------------------------------------------------------------------------------- /solid/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/HunCoding/golang-architecture/solid 2 | 3 | go 1.18 4 | -------------------------------------------------------------------------------- /solid/interface-segregration-principle/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/solid/interface-segregration-principle/main.go -------------------------------------------------------------------------------- /solid/liskov-substitution-principle/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/solid/liskov-substitution-principle/main.go -------------------------------------------------------------------------------- /solid/open-closed-principle/right_way.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/solid/open-closed-principle/right_way.go -------------------------------------------------------------------------------- /solid/open-closed-principle/wrong_way.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/solid/open-closed-principle/wrong_way.go -------------------------------------------------------------------------------- /solid/single-responsibility-principle/god_object.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/solid/single-responsibility-principle/god_object.go -------------------------------------------------------------------------------- /solid/single-responsibility-principle/journal.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/solid/single-responsibility-principle/journal.go -------------------------------------------------------------------------------- /solid/single-responsibility-principle/load_news.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/solid/single-responsibility-principle/load_news.go -------------------------------------------------------------------------------- /solid/single-responsibility-principle/printer.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HunCoding/golang-architecture/HEAD/solid/single-responsibility-principle/printer.go --------------------------------------------------------------------------------