Skip to content

fabianogoes/fiap-tech-challenge-kitchen-api

Repository files navigation

FIAP challenge - Kitchen

CI Quality Gate Status Coverage Scanned on SonarCloud

Project Architecture by Clean Architecture

  • app/web: diretório para os principais pontos de entrada, injeção dependência ou comandos do aplicativo. O subdiretório ‘web’ contém o ponto de entrada principal a API REST.
  • domain/entities: diretório que contém modelos/entidades de domínio que representam os principais conceitos de negócios.
  • domain/usecases: diretório que contém Serviços de Domínio ou Use Cases.
  • domain/ports: diretório que contém ‘interfaces’ ou contratos definidos que os adaptadores devem seguir.
  • frameworks/rest: diretório que contém os controllers e manipulador de requisições REST.
  • frameworks/rest/dto: diretório que contém objetos/modelo de request e response.
  • frameworks/repository: diretório que contém adaptadores de banco de dados exemplo para PostgreSQL.
  • frameworks/repository/dbo: diretório que contém objetos/entidades de banco de dados.
  • .infra: diretório que contém arquivos de infrainstrutura
  • .infra/kubernetes: diretório que contém os manifestos kubernetes
  • .infra/terraform: diretório que contém os arquivos terraform para provisionar a infra do projeto

Stack

Issues

  • gin-swagger - gin middleware to automatically generate RESTful API documentation with Swagger 2.0.
  • swag - Swag converts Go annotations to Swagger Documentation 2.0
  • CORS gin's middleware - Gin middleware/handler to enable CORS support.

Development

Dependencies

Check for go version 1.21.3

go version

Preparing app

git clone git@github.com:fabianogoes/fiap-tech-challenge-kitchen-api.git
cd fiap-tech-challenge-kitchen-api
go mod tidy

Running

docker-compose up -d postgres && go run app/web/main.go

Testing using Docker/Docker Compose

docker-compose up -d

curl --request GET --url http://localhost:8020/health

## response 
{"status":"UP"}

Insomnia Collection

Docker Commands

docker login -u=fabianogoes
docker build -t fabianogoes/kitchen-api:latest .
docker tag fabianogoes/kitchen-api:latest fabianogoes/kitchen-api:latest
docker push fabianogoes/kitchen-api:latest

Run Go test

go test -v ./...