diff --git a/README.md b/README.md index be574f982993bc63ce2f5848ca2b536fbabdb77e..017f378a8137b41e286d9d047465b65260852a0a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,53 @@ -# Cache +# Cache service -Cache exposes HTTP interface for working with Redis. \ No newline at end of file +Cache service exposes HTTP interface for working with Redis. + +### Basic Architecture + +```mermaid +flowchart LR + A[Client] -- request --> B[Cache Service] --> C[(Redis)] +``` + +### API Documentation + +The API Documentation is accessible at `/swagger-ui` path in OAS 3.0 format. +Example: `localhost:8080/swagger-ui` + +### Prerequisites + +There must be a running instance of [Redis](https://redis.io/) visible to the service. +The address, username and password of the Redis in-memory store instance must be provided as environment variables. + +Example: +``` +REDIS_ADDR="localhost:6379" +REDIS_USER="user" +REDIS_PASS="pass" +``` + +### Development + +This service uses [Goa framework](https://goa.design/) v3 as a backbone. [This](https://goa.design/learn/getting-started/) is a good starting point for learning to use the framework. + +### Dependencies and Vendor + +The project uses Go modules for managing dependencies and we commit the `vendor` directory. +When you add/change dependencies, be sure to clean and update the `vendor` directory before +submitting your Merge Request for review. +```shell +go mod tidy +go mod vendor +``` + +### Tests and Linters + +To execute the units tests for the service go to the root project directory and run: +```go +go test -race ./... +``` + +To run the linters go to the root project directory and run: +```go +golangci-lint run +```