O projeto People Manager é um teste prático para a vaga de desenvolvedor back-end na Attornatus Procuradoria Digital.
Uma API RESTful que deve ser capaz de:
- Criar uma entidade Pessoa;
- Editar uma Pessoa;
- Consultar uma Pessoa;
- listar todas as pessoas criadas;
- Criar entidade Endereço para uma Pessoa específica;
- Listar todos os endereços de uma pessoa;
- Poder definir qual endereço é o principal.
- 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.
Você pode iniciar essa aplicação de três formas: a partir de um arquivo *.jar, com docker ou com kubernetes/minikube.
É necessário ter o OpenSSL 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:
chmod +x generateKeys.sh
./generateKeys.sh
Isso irá criar as chaves RSA necessárias para autenticação.
Em seguida execute:
chmod +x simpleDeploy.sh
./simpleDeploy.sh
Isso vai fazer o build com MVN, gerar o arquivo peoplemanager-0.0.1.jar e executá-lo.
É necessário ter o Docker instalado e com acesso non-root. Caso não tenha, confira: Pós-instalação do Docker no Linux.
Execute os comandos a seguir:
As chaves RSA são requeridas.
chmod +x dockerDeploy.sh
./dockerDeploy.sh
Isso irá criar a imagem e executá-la.
É necessário ter instaldos em sua máquina o Docker, Minikube e Kubectl.
Execute os comandos a seguir:
As chaves RSA são requeridas.
chmod +x kubernetesDeploy.sh
./kubernetesDeploy.sh
Isso irá criar a imagem docker, criar o deployment.app e o service.
Você deve expor a rota:
kubectl port-forward service/app-people-manager 8080:8080
É a maneira mais rápida expor uma rota.
Mapeamento relacional das entidades Pessoa e Endereço.
Veja: Entidade Pessoa e Entidade Endereço.
Você pode definir um endereço preferencial a qualquer momento. Mas, você só pode ter um endereço preferencial.
Veja: Endpoint Endereço e Repositório Endereço.
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.
Caso queira fazer o deploy em alguma plataforma, eu recomendaria:
- Configurar o CORS;
- Configurar o CSRF;
- Adicionar algum sistema de métricas como o Prometheus/Grafana.
- Talvez adicionar o Swegger para documentação.
E é isso, até mais✌️