Checkout Team Go Code Convention.
├── internal/
│ ├── app/ Package app contains application starter.
│ ├── config/ Package config provides functionality for loading and accessing application configurations.
│ ├── dto/ Package dto provides data transfer objects (DTOs) for transferring data between different layers of the application.
│ ├── entity/ Package entity provides domain entities representing the core business objects.
│ │ ├── table/ Package table provides table schema.
│ ├── extapi/ Package extapi provides implementations for external APIs.
│ ├── repo/ Package repo provides repository implementations for data storage.
│ │ ├── cache/ Package cache provides cache storage implementations.
│ │ ├── db/ Package db provides database connection and management functionalities.
│ ├── repomw/ Package repomw provides repo middleware.
│ ├── transport/ Package transport provides the implementation for handling input.
│ │ ├── grpc/ Package grpc provides gRPC server implementation.
│ │ ├── http/ Package http provides HTTP server implementation.
│ ├── usecase/ Package usecase provides the business logic implementation.
│ ├── usecasemw/ Package usecasemw provides usecase middleware.
├── pkg/ Package pkg provides package that can be imported by other services.
├── go.mod
├── go.sum
├── main.go
├── README.md
- simulate real case scenario.
- integration test.
- unit test, (easy to implement because seperated by interface between layer but not implement yet).
- integrated trace id front to back.
- grpc server.
- graceful shutdown.
- http server.
- graceful shutdown.
- centralize protobuf.
- code documentation with godoc.
- gorm connection pooling.
- validate request with golang validator.
- usecase middleware.
- usecase logger middleware.
- repo middleware.
- repo logger middleware.
- repo cache layer.