{"id":22061396,"url":"https://github.com/jailtonjunior94/challenge-api","last_synced_at":"2026-04-05T22:35:01.142Z","repository":{"id":129481075,"uuid":"551630726","full_name":"JailtonJunior94/challenge-api","owner":"JailtonJunior94","description":null,"archived":false,"fork":false,"pushed_at":"2022-10-18T19:07:29.000Z","size":5535,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-23T17:33:08.115Z","etag":null,"topics":["api-rest","azure","challenge","sql","terraform"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JailtonJunior94.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-14T19:26:40.000Z","updated_at":"2022-10-30T11:56:36.000Z","dependencies_parsed_at":"2023-06-11T09:30:36.438Z","dependency_job_id":null,"html_url":"https://github.com/JailtonJunior94/challenge-api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JailtonJunior94/challenge-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JailtonJunior94%2Fchallenge-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JailtonJunior94%2Fchallenge-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JailtonJunior94%2Fchallenge-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JailtonJunior94%2Fchallenge-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JailtonJunior94","download_url":"https://codeload.github.com/JailtonJunior94/challenge-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JailtonJunior94%2Fchallenge-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275152613,"owners_count":25414450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-14T02:00:10.474Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","azure","challenge","sql","terraform"],"created_at":"2024-11-30T18:11:58.581Z","updated_at":"2026-04-05T22:34:56.050Z","avatar_url":"https://github.com/JailtonJunior94.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Proposta\n\nGostaríamos de criar um jogo de Star Wars com algumas informações da franquia. E para possibilitar a\nequipe de frontend criar essa aplicação, precisamos desenvolver uma API REST que contenha os dados dos\nplanetas da franquia.\n\n# Escopo\nPara cada planeta, os seguintes dados devem ser obtidos do banco de dados da aplicação, inseridos a partir\nde requisições disparadas para a API pública do Star Wars:\n- Nome, clima e terreno;\n- Para cada planeta também devemos ter os filmes com o nome, diretor e data de lançamento;\n  \nTodas as informações necessárias podem ser obtidas pela API pública do [Star Wars](https://swapi.dev/).\n- Funcionalidades desejadas:\n- Carregar um planeta da API através do Id\n- Listar os planetas\n- Buscar planeta por nome\n- Buscar por ID\n- Remover planeta\n\n# Requisitos\n- utilize git ou hg para fazer o controle de versão da solução do teste e hospede-a no Github ou Bitbucket;\n- armazene os dados no banco de dados que você julgar apropriado;\n- a API deve seguir os conceitos REST;\n- o Content-Type das respostas da API deve ser application/json ;\n- o código da solução deve conter testes e algum mecanismo documentado para - gerar a informação de\ncobertura dos testes;\n- a aplicação deve gravar logs estruturados em arquivo texto;\n\n# Desenho da Solução\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/desenho-arquitetura.png\" width=\"800\" title=\"Main\"\u003e\n\u003c/p\u003e\n\n# Testes de unidade\n- Para executar os testes de unidade, devemos utilizar os comandos \u003cstrong\u003e[Os comandos abaixo executa os testes de unidade e gera o arquivo com a cobertura]\u003c/strong\u003e\n  ```\n  make test\n  ```\n  ou\n  ```\n  go test -v --coverprofile tests/coverage.out ./...\n  go tool cover -html=tests/coverage.out\n  ```\n\n# Executando com Docker\n- Para executar o projeto local com docker, devemos utilizar os comandos \u003cstrong\u003e[Os comandos abaixo gera um container de banco de dados, faz criação das tabelas e executa a API]\u003c/strong\u003e\n  ```\n  make start\n  ```\n  ou \n  ```\n  docker-compose -f deployment/docker-compose.yml up -d --build\n  ```\n- Para parar a execução do projeto\n  ```\n  make stop\n  ```\n  ou \n  ```\n  docker-compose -f deployment/docker-compose.yml down\n  ```\n\n# Infra como código\n- Precisamos de uma conta do Microsoft Azure\n- Para gerar a infra como código, precisamos instalar a [CLI do Azure](https://learn.microsoft.com/pt-br/cli/azure/install-azure-cli) \n- Gerando o recurso AKS e MSSQL no Microsoft Azure com [Terraform](https://www.terraform.io/)\n- Na pasta deployment/iac, devemos executar os seguintes comandos\n  ```\n  terraform init -- inicia a infra como código\n  terraform validate -- valida os arquivos .tf\n  terraform plan -- mostra o planejamento do que será criado\n  terraform apply -- aplica nossa infra. para remover é só alterar o apply para destroy\n  ```\n\n# Logs estruturados\n- Exemplo dos logs estruturados \u003cstrong\u003e[Caminho do arquivo (exemplo) cmd/api/logs.txt]\u003c/strong\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/logs.png\" width=\"800\" title=\"Main\"\u003e\n\u003c/p\u003e\n  \n# Collection do POSTMAN\n- Link da Collection\n- Ambiente Local \u003cstrong\u003ehttp://localhost:8080\u003c/strong\u003e\n- Ambiente Simulando Produção \u003cstrong\u003ehttp://20.246.221.128\u003c/strong\u003e\n ```\n https://www.getpostman.com/collections/0acb7b5c4b1e38b8e2d3\n ```\n- Pode ser utilizado os testes no caminho \u003cstrong\u003etests/planets.http\u003c/strong\u003e\n\n# Utilizando o projeto em um ambiente Kubernetes [Simulando produção]\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/k8s-exemplo.png\" width=\"800\" title=\"Main\"\u003e\n\u003c/p\u003e\n\n# Sonar Cloud\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/sonar.png\" width=\"800\" title=\"Main\"\u003e\n\u003c/p\u003e\n\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=JailtonJunior94_challenge-api\u0026metric=bugs)](https://sonarcloud.io/dashboard?id=JailtonJunior94_challenge-api)\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=JailtonJunior94_challenge-api\u0026metric=code_smells)](https://sonarcloud.io/dashboard?id=JailtonJunior94_challenge-api)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=JailtonJunior94_challenge-api\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=JailtonJunior94_challenge-api)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=JailtonJunior94_challenge-api\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?id=JailtonJunior94_challenge-api)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjailtonjunior94%2Fchallenge-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjailtonjunior94%2Fchallenge-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjailtonjunior94%2Fchallenge-api/lists"}