-
Spring Boot - Framework de Desenvolvimento para a Linguagem Java.
-
Lombok - Biblioteca Java focada em produtividade e redução de código boilerplate que, por meio de anotações adicionadas ao nosso código, ensinamos o compilador (maven ou gradle) durante o processo de compilação a criar código Java.
-
JUnit5 - Framework facilita a criação e manutenção do código para a automação de testes com apresentação dos resultados.
-
Mockito - Estrutura de teste de código aberto para Java liberada sob a licença MIT. A estrutura permite a criação de objetos duplos de teste em testes de unidade automatizados com o objetivo de desenvolvimento orientado a teste ou desenvolvimento orientado a comportamento.
-
PostgreSQL - Banco de dados.
-
Hibernate - Framework para persistência de dados. (ORM)
-
JPA - Especificação do Java que dita como os Frameworks ORM devem ser implementados.
-
Docker - Plataforma open source que facilita a criação e administração de ambientes isolados. Ele possibilita o empacotamento de uma aplicação ou ambiente dentro de um container, se tornando portátil para qualquer outro host que contenha o Docker instalado.
-
Swagger - Essencialmente uma linguagem de descrição de interface para descrever APIs RESTful expressas usando JSON.
- Maven - Ferramenta de automação de compilação utilizada primariamente em projetos Java.
- Docker - Execução de aplicativos de containers.
- Clone o projeto:
$https://github.com/muriloalvesdev/github-developers.git
- Após concluir o Download do projeto, acesse o diretório do mesmo:
$cd github-developers/
OBS: Sobre a instalação existem duas formas, abaixo está o passo a passo, sobre como realizar este procedimento.
Mas caso você queira instalar rapidamente o projeto, basta executar o script contido na raiz do projeto:
$./docker-run.sh
- Para instalar as dependências e executar os testes, utilize o comando:
$mvn clean package
- Execute o script
$./docker-run.sh
para construir a aplicação. Este script compila o projeto com o profile dePROD
, cria uma imagem Docker da aplicação e por fim utiliza o Docker Compose para baixar a imagem do PostgreSQL (banco de dados) e sobe a aplicação. - Após executar o script você ja deve ter a aplicação sendo executada.
OBS: O projeto é executado na porta 8080 e o banco de dados é executado na porta 5432, verifique se essas
portas estão disponíveis caso ocorra algum erro. Tenha certeza de que você está com o Docker e o
Maven instalados para que você não tenha problemas ao compilar, testar e executar a aplicação.
Ainda com Docker - Deixei a imagem disponível para Download no DockerHub
Caso você queira apenas baixar a imagem e executar a aplicação, basta seguir os passos abaixo:
OBS: Você precisa ter o PostgreSQL pré instalado com um database chamado "github_developers" .
- Baixe a imagem Docker, utilizando o comando:
$docker pull muriloalvesdev/github_developers
- Execute o comando
$docker run <id_imagem>
para executar o container. - E agora você ja deve ter a aplicação sendo executada.
- Caso você queira apenas consumir as APIs do projeto, ele está hospedado no Heroku.
- A URL da aplicação com o Swagger é esta:
https://github-developers.herokuapp.com/swagger-ui.html
-
Você pode buscar por repositórios:
/search/repositories
-
Response padrão [exemplo]:
Status: 200 OK
{
"total_count": 40,
"incomplete_results": false,
"items": [
{
"id": 3081286,
"node_id": "MDEwOlJlcG9zaXRvcnkzMDgxMjg2",
"name": "Tetris",
"full_name": "dtrupenn/Tetris",
"owner": {
"login": "dtrupenn",
"id": 872147,
"node_id": "MDQ6VXNlcjg3MjE0Nw==",
"avatar_url": "https://secure.gravatar.com/avatar/e7956084e75f239de85d3a31bc172ace?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png",
"gravatar_id": "",
"url": "https://api.github.com/users/dtrupenn",
"received_events_url": "https://api.github.com/users/dtrupenn/received_events",
"type": "User",
"html_url": "https://github.com/octocat",
"followers_url": "https://api.github.com/users/octocat/followers",
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
"organizations_url": "https://api.github.com/users/octocat/orgs",
"repos_url": "https://api.github.com/users/octocat/repos",
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
"site_admin": true
},
"private": false,
"html_url": "https://github.com/dtrupenn/Tetris",
"description": "A C implementation of Tetris using Pennsim through LC4",
"fork": false,
"url": "https://api.github.com/repos/dtrupenn/Tetris",
"created_at": "2012-01-01T00:31:50Z",
"updated_at": "2013-01-05T17:58:47Z",
"pushed_at": "2012-01-01T00:37:02Z",
"homepage": "https://github.com",
"size": 524,
"stargazers_count": 1,
"watchers_count": 1,
"language": "Assembly",
"forks_count": 0,
"open_issues_count": 0,
"master_branch": "master",
"default_branch": "master",
"score": 1,
"archive_url": "https://api.github.com/repos/dtrupenn/Tetris/{archive_format}{/ref}",
"assignees_url": "https://api.github.com/repos/dtrupenn/Tetris/assignees{/user}",
"blobs_url": "https://api.github.com/repos/dtrupenn/Tetris/git/blobs{/sha}",
"branches_url": "https://api.github.com/repos/dtrupenn/Tetris/branches{/branch}",
"collaborators_url": "https://api.github.com/repos/dtrupenn/Tetris/collaborators{/collaborator}",
"comments_url": "https://api.github.com/repos/dtrupenn/Tetris/comments{/number}",
"commits_url": "https://api.github.com/repos/dtrupenn/Tetris/commits{/sha}",
"compare_url": "https://api.github.com/repos/dtrupenn/Tetris/compare/{base}...{head}",
"contents_url": "https://api.github.com/repos/dtrupenn/Tetris/contents/{+path}",
"contributors_url": "https://api.github.com/repos/dtrupenn/Tetris/contributors",
"deployments_url": "https://api.github.com/repos/dtrupenn/Tetris/deployments",
"downloads_url": "https://api.github.com/repos/dtrupenn/Tetris/downloads",
"events_url": "https://api.github.com/repos/dtrupenn/Tetris/events",
"forks_url": "https://api.github.com/repos/dtrupenn/Tetris/forks",
"git_commits_url": "https://api.github.com/repos/dtrupenn/Tetris/git/commits{/sha}",
"git_refs_url": "https://api.github.com/repos/dtrupenn/Tetris/git/refs{/sha}",
"git_tags_url": "https://api.github.com/repos/dtrupenn/Tetris/git/tags{/sha}",
"git_url": "git:github.com/dtrupenn/Tetris.git",
"issue_comment_url": "https://api.github.com/repos/dtrupenn/Tetris/issues/comments{/number}",
"issue_events_url": "https://api.github.com/repos/dtrupenn/Tetris/issues/events{/number}",
"issues_url": "https://api.github.com/repos/dtrupenn/Tetris/issues{/number}",
"keys_url": "https://api.github.com/repos/dtrupenn/Tetris/keys{/key_id}",
"labels_url": "https://api.github.com/repos/dtrupenn/Tetris/labels{/name}",
"languages_url": "https://api.github.com/repos/dtrupenn/Tetris/languages",
"merges_url": "https://api.github.com/repos/dtrupenn/Tetris/merges",
"milestones_url": "https://api.github.com/repos/dtrupenn/Tetris/milestones{/number}",
"notifications_url": "https://api.github.com/repos/dtrupenn/Tetris/notifications{?since,all,participating}",
"pulls_url": "https://api.github.com/repos/dtrupenn/Tetris/pulls{/number}",
"releases_url": "https://api.github.com/repos/dtrupenn/Tetris/releases{/id}",
"ssh_url": "git@github.com:dtrupenn/Tetris.git",
"stargazers_url": "https://api.github.com/repos/dtrupenn/Tetris/stargazers",
"statuses_url": "https://api.github.com/repos/dtrupenn/Tetris/statuses/{sha}",
"subscribers_url": "https://api.github.com/repos/dtrupenn/Tetris/subscribers",
"subscription_url": "https://api.github.com/repos/dtrupenn/Tetris/subscription",
"tags_url": "https://api.github.com/repos/dtrupenn/Tetris/tags",
"teams_url": "https://api.github.com/repos/dtrupenn/Tetris/teams",
"trees_url": "https://api.github.com/repos/dtrupenn/Tetris/git/trees{/sha}",
"clone_url": "https://github.com/dtrupenn/Tetris.git",
"mirror_url": "git:git.example.com/dtrupenn/Tetris",
"hooks_url": "https://api.github.com/repos/dtrupenn/Tetris/hooks",
"svn_url": "https://svn.github.com/dtrupenn/Tetris",
"forks": 1,
"open_issues": 1,
"watchers": 1,
"has_issues": true,
"has_projects": true,
"has_pages": true,
"has_wiki": true,
"has_downloads": true,
"archived": true,
"disabled": true,
"license": {
"key": "mit",
"name": "MIT License",
"url": "https://api.github.com/licenses/mit",
"spdx_id": "MIT",
"node_id": "MDc6TGljZW5zZW1pdA==",
"html_url": "https://api.github.com/licenses/mit"
}
}
]
}
- Você também pode buscar por usuários:
/search/users
- Response padrão [exemplo]:
Status: 200 OK
{
"total_count": 12,
"incomplete_results": false,
"items": [
{
"login": "mojombo",
"id": 1,
"node_id": "MDQ6VXNlcjE=",
"avatar_url": "https://secure.gravatar.com/avatar/25c7c18223fb42a4c6ae1c8db6f50f9b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png",
"gravatar_id": "",
"url": "https://api.github.com/users/mojombo",
"html_url": "https://github.com/mojombo",
"followers_url": "https://api.github.com/users/mojombo/followers",
"subscriptions_url": "https://api.github.com/users/mojombo/subscriptions",
"organizations_url": "https://api.github.com/users/mojombo/orgs",
"repos_url": "https://api.github.com/users/mojombo/repos",
"received_events_url": "https://api.github.com/users/mojombo/received_events",
"type": "User",
"score": 1,
"following_url": "https://api.github.com/users/mojombo/following{/other_user}",
"gists_url": "https://api.github.com/users/mojombo/gists{/gist_id}",
"starred_url": "https://api.github.com/users/mojombo/starred{/owner}{/repo}",
"events_url": "https://api.github.com/users/mojombo/events{/privacy}",
"site_admin": true
}
]
}