Make sure you have Go 1.22.2 or higher
Execute
go mod tidy
go test -cover ./...
To correctly use the project, it is necessary to define a .env file, with the values for the envs:
- S3_BUCKET
- SQS_QUEUE_URL
- SMTP_HOST
- SMTP_PORT
- SMTP_PASSWORD
- SMTP_FROM
docker compose build
docker compose up -d
curl --request GET --url http://localhost:8082/health
## Expected response
= Status Code 200
If you're having trouble deploying the application with
docker-compose
(and notdocker compose
), use docker version 27.0.0 or higher.
Go to http://localhost:8080/swagger/index.html#/ after the application is running.
- Go
- Gin Web Framework - Routes, JSON validation, Error management, Middleware support
- S3 - Object storage service that stores data as objects in buckets
- SQS - Managed message queues for microservices, distributed systems, and serverless applications
- swag - Tool to generate swagger documentation
- docker - Containerization tool
- docker-compose - Tool to define and run multi-container Docker applications
This project makes use of the library swag to generate the swagger documentation.
Follow the steps described in the official documentation
swag init -g cmd/worker/main.go
The documentation can be founded at the path /docs/swagger.yaml
or accessing this link.
cmd
: Application entry point directory for the application's main entry points, dependency injection, or commands. The web subdirectory contains the main entry point to the REST API.internal
: Directory to contain application code that should not be exposed to external packages.core
: Directory that contains the application's core business logic.thumb
: Directory contains definition of the entity's heights, interfaces, repository and service of the entity Thumb.
adapters
: Directory to contain external services that will interact with the application core.domainerrors
: Directory that contains the definition of the application's domain errors.
The team chose to use Miro to document this deliverable, available at the link.
The diagram contains:
- System documentation in DDD with Event Storm
- Caption for the ubiquitous language used
- Additional details to understand the proposed resolution
- Worker flow
- API flow