Um projeto de treinamento para preparar o(a) estagiário(a) para que o mesmo consiga desenvolver features reais.
O que você precisa para instalar o software e instalá-lo
Os links dos referidos softwares ensinam como deve ser feita a instalação em casa caso particular.
Após o docker e do docker-compose instalados, é preciso entrar no diretorio do projeto, e executar os seguintes comandos. O primeiro para startar o docker
systemctl start docker.service
Para iniciar os containers utiliza-se o comando, para mais informações sobre o comando
docker-compose up
Para deletar o banco de dados é preciso executar o seguinte comando, é importante lembrar que para ele ser executado é preciso estar no diretorio do projeto.
docker-compose down
Para sair do docker-compose up, é só dar Ctrl+c
Para acessar a documentação suba a aplicação no SimuladorBancoApplication
e acesse o link.
O projeto tem como objetivo treinar e desenvolver os seguintes tópicos.
- Maven
- Git
- TDD
- Spring MVC
- Spring Boot
- Mock MVC
- Kotlin
- Docker-Compose
- Postgresql
- Spring Data
Criar um sistema que simule um Banco
O sistema deve permitir cadastrar cliente/conta. Após o cliente cadastrado deve ser possível realizar as seguintes operações:
- Depósito;
- Saque;
- Transferência;
- Saldo;
- Extrato.
- O saldo da conta nunca poderá ser negativo;
- Não pode ser possível realizar saque ou transferência quando o saldo na conta é insuficiente;
- A conta de destino deve ser válida;
- O cliente só poderá ter uma conta (validar por CPF por exemplo);
- Ao criar a conta na resposta de sucesso deverá constar o Id da conta para futuras movimentações;
- Ao solicitar um extrato, deverá constar toda movimentação da conta, como transferência, depósito e saque;
- Ao solicitar transferência tanto a conta de destino quanto a de origem devem ser válidas;
- Não pode ser possível realizar uma transferência para você mesmo, ou seja, conta de origem não pode ser igual a conta de destino;
- Os serviços devem ser expostos via REST com as respostas em Json;
- O gerenciamento das dependências do projeto deve ser feita utilizando Maven;
- A linguagem utilizada deve ser JAVA/KOTLIN;
- O sistema deve ser inicializado usando Spring Boot;
- O projeto deverá estar "commitado" em seu GitHub;
- A cobertura de testes deve ser de no mínimo 60% (Utilizar o codecov no GitHub);
- Criar um docker compose para subir um Postgres;
- Criar o DER (Diagrama de entidade e relacionamento);
- Criar a persistência no banco Postgres;
- Separar em módulos (módulo para API, módulo para o Controller, módulo service, módulo para o domain e um módulo para o repository);
- Migrar para Kotlin, caso o projeto tenha sido desenvolvido em JAVA;
- Colocar testes integrados para o Controller;
- Criação das collections no Postman;
- Criar o README utilizando Markdown com detalhes do projeto, DER, regras de negócio e como inicializar e testar seu projeto;
- Refactor nos testes;