Make sure you have Go 1.22.2 or higher
Execute
go mod tidygo 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 200If 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