Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/henriquelluiz/people-manager
A RESTful API for people management.
https://github.com/henriquelluiz/people-manager
docker hateoas java json jwt-authentication kubernetes restful shell-script spring-boot spring-security
Last synced: about 7 hours ago
JSON representation
A RESTful API for people management.
- Host: GitHub
- URL: https://github.com/henriquelluiz/people-manager
- Owner: henriquelluiz
- License: mit
- Created: 2023-01-04T00:23:39.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-02-03T21:13:27.000Z (almost 2 years ago)
- Last Synced: 2023-08-02T22:52:32.210Z (over 1 year ago)
- Topics: docker, hateoas, java, json, jwt-authentication, kubernetes, restful, shell-script, spring-boot, spring-security
- Language: Java
- Homepage:
- Size: 165 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Apresentação
O projeto People Manager é um teste prático para a vaga de desenvolvedor back-end na Attornatus Procuradoria Digital.## Requisitos Funcionais
Uma API RESTful que deve ser capaz de:
1. Criar uma entidade Pessoa;
2. Editar uma Pessoa;
3. Consultar uma Pessoa;
4. listar todas as pessoas criadas;
5. Criar entidade Endereço para uma Pessoa específica;
6. Listar todos os endereços de uma pessoa;
7. Poder definir qual endereço é o principal.## O Que Você Vai Encontrar
- Spring Boot 3
- Java 17
- JWT Authentication
- HATEOAS
- JPA
- Clean Code
- Testes de Aceitação, de Integração e Unitários
- Deploy automátizado com shell scripting.## Como Rodar Localmente
Você pode iniciar essa aplicação de três formas: a partir de um arquivo *.jar, com docker ou com kubernetes/minikube.### Deploy Simples Com um Arquivo *.jar
É necessário ter o [OpenSSL](https://www.openssl.org/source/) instalado – ele já vem instalado na maioria das distros Linux.Antes de tudo, é preciso gerar as chaves RSA 256. Portanto, execute o comando a seguir:
```bash
chmod +x generateKeys.sh
./generateKeys.sh
```
> Isso irá criar as chaves RSA necessárias para autenticação.Em seguida execute:
```bash
chmod +x simpleDeploy.sh
./simpleDeploy.sh
```
> Isso vai fazer o build com MVN, gerar o arquivo **peoplemanager-0.0.1.jar** e executá-lo.### Deploy Com Docker
É necessário ter o Docker instalado e com acesso non-root.
Caso não tenha, confira: [Pós-instalação do Docker no Linux.](https://docs.docker.com/engine/install/linux-postinstall/)Execute os comandos a seguir:
> **As chaves RSA são requeridas.**```bash
chmod +x dockerDeploy.sh
./dockerDeploy.sh
```
> Isso irá criar a imagem e executá-la.### Deploy Com Kubernetes/Minikube
É necessário ter instaldos em sua máquina o [Docker](https://docs.docker.com/engine/install/ubuntu/), [Minikube](https://minikube.sigs.k8s.io/docs/start/) e [Kubectl](https://kubernetes.io/docs/tasks/tools/).Execute os comandos a seguir:
> **As chaves RSA são requeridas.**```bash
chmod +x kubernetesDeploy.sh
./kubernetesDeploy.sh
```
> Isso irá criar a imagem docker, criar o deployment.app e o service.Você deve expor a rota:
```bash
kubectl port-forward service/app-people-manager 8080:8080
```> É a maneira mais rápida expor uma rota.
## Detalhes
Mapeamento relacional das entidades Pessoa e Endereço.> Veja: [Entidade Pessoa](https://github.com/heenluy/people-manager/blob/main/src/main/java/dev/henriqueluiz/peoplemanager/model/Person.java) e [Entidade Endereço](https://github.com/heenluy/people-manager/blob/main/src/main/java/dev/henriqueluiz/peoplemanager/model/Address.java).
Você pode definir um endereço preferencial a qualquer momento. Mas, você só pode ter um endereço preferencial.
> Veja: [Endpoint Endereço](https://github.com/heenluy/people-manager/blob/main/src/main/java/dev/henriqueluiz/peoplemanager/controller/AddressController.java) e [Repositório Endereço](https://github.com/heenluy/people-manager/blob/main/src/main/java/dev/henriqueluiz/peoplemanager/repository/AddressRepository.java).
A aplicação já inicia com um usuário padrão:
- Username/Email: [email protected]
- Password: developer
- Authorities: Manager> **Veja a documentação da API detalhada em [API REFERENCE.](https://github.com/heenluy/people-manager/blob/main/API.md)**
## Melhorias
Caso queira fazer o deploy em alguma plataforma, eu recomendaria:
1. Configurar o CORS;
2. Configurar o CSRF;
3. Adicionar algum sistema de métricas como o Prometheus/Grafana.
4. Talvez adicionar o Swegger para documentação.**E é isso, até mais**✌️