Product listing for your ecommerce store.
The figure below depicts how the solution was architected:
and below how the source code was structured:
.
├── api
├── cmd
├── entity
├── grpc
├── mocks
├── postgresql
├── product.go
└── usecase
api
: gRPC protocol definition.cmd
: Command line interfaces like daemons and clients.entity
: Internal only data structure representation.grpc
: gRPC generate stubs and server implementation.postgresql
: Postgresql data store implementation.product.go
: Interfaces definitions.usecase
: Use cases implementations.
The main reason for this is to build a solution to middle-to-long tream.
- Golang
- Postgresql
Clone:
git clone https://github.com/wiliamsouza/product.git
The recomended way to get it is through https://github.com/wiliamsouza/maketplace
Install dependencies:
make deps
Build binaries:
make build
This will build two commands:
- productctl: Command line interface.
- productd: Start gRPC and HTTP servers.
Generated in dist
folder for Linux and Mac.
Each command has it own help:
$ dist/productd_linux_amd64/productd
Product is a gRPC and HTTP service daemons that implements products listings.
Usage:
productd [command]
Available Commands:
help Help about any command
serve Start http or grpc daemons
version Print version
Flags:
--config string config file (default is $HOME/.product.yaml)
-h, --help help for productd
Use "productd [command] --help" for more information about a command.
and:
$ dist/productctl_linux_amd64/productctl
Productctl is a client for product gRPC service that implements products listings.
Usage:
productctl [command]
Available Commands:
client Interact with product gRPC server
help Help about any command
version Print version
Flags:
--config string config file (default is $HOME/.product.yaml)
-h, --help help for productctl
Use "productctl [command] --help" for more information about a command.
make test
Run make
to see help.
help Show Help
security Run security code checks
typping Run static type checker
lint Run lint
check Run pylint, mypy and bandit
test Run tests
First install https://github.com/golang-migrate/migrate/tree/master/cmd/migrate
This command bellow will create product
table.
make migrate
Before run migrate start database:
docker-compose up
Build:
docker build -t product .
Run:
docker run --rm product
Docker hub images:
https://hub.docker.com/repository/docker/wiliamsouza/product
This image are even with branch master
and auto generated by CI:
https://app.circleci.com/pipelines/github/wiliamsouza/product