└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Show me the code 2 | 3 | ### # DESAFIO: 4 | 5 | API REST para Gestão de Gastos! 6 | 7 | ``` 8 | Funcionalidade: Integração de gastos por cartão 9 | Apenas sistemas credenciados poderão incluir novos gastos 10 | É esperado um volume de 100.000 inclusões por segundo 11 | Os gastos, serão informados atraves do protoloco JSON, seguindo padrão: 12 | { "descricao": "alfanumerico", "valor": double americano, "codigousuario": numerico, "data": Data dem formato UTC } 13 | ``` 14 | ``` 15 | Funcionalidade: Listagem de gastos* 16 | Dado que acesso como um cliente autenticado que pode visualizar os gastos do cartão 17 | Quando acesso a interface de listagem de gastos 18 | Então gostaria de ver meus gastos mais atuais. 19 | 20 | *Para esta funcionalidade é esperado 2.000 acessos por segundo. 21 | *O cliente espera ver gastos realizados a 5 segundos atrás. 22 | ``` 23 | ``` 24 | Funcionalidade: Filtro de gastos 25 | Dado que acesso como um cliente autenticado 26 | E acessei a interface de listagem de gastos 27 | E configure o filtro de data igual a 27/03/1992 28 | Então gostaria de ver meus gastos apenas deste dia. 29 | ``` 30 | ``` 31 | Funcionalidade: Categorização de gastos 32 | Dado que acesso como um cliente autenticado 33 | Quando acesso o detalhe de um gasto 34 | E este não possui uma categoria 35 | Então devo conseguir incluir uma categoria para este 36 | ``` 37 | ``` 38 | Funcionalidade: Sugestão de categoria 39 | Dado que acesso como um cliente autenticado 40 | Quando acesso o detalhe do gasto que não possui categoria 41 | E começo a digitar a categoria que desejo 42 | Então uma lista de sugestões de categoria deve ser exibida, estas baseadas em categorias já informadas por outro usuários. 43 | ``` 44 | ``` 45 | Funcionalidade: Categorização automatica de gasto 46 | No processo de integração de gastos, a categoria deve ser incluida automaticamente 47 | caso a descrição de um gasto seja igual a descrição de qualquer outro gasto já categorizado pelo cliente 48 | o mesmo deve receber esta categoria no momento da inclusão do mesmo 49 | ``` 50 | ### # Avaliação 51 | 52 | Você será avaliado pela usabilidade, por respeitar o design e pela arquitetura da API. 53 | É esperado que você consiga explicar as decisões que tomou durante o desenvolvimento através de commits. 54 | 55 | * Springboot - Java - Maven (preferêncialmente) ([https://projects.spring.io/spring-boot/](https://projects.spring.io/spring-boot/)) 56 | * RESTFul ([https://blog.mwaysolutions.com/2014/06/05/10-best-practices-for-better-restful-api/](https://blog.mwaysolutions.com/2014/06/05/10-best-practices-for-better-restful-api/)) 57 | * DDD ([https://airbrake.io/blog/software-design/domain-driven-design](https://airbrake.io/blog/software-design/domain-driven-design)) 58 | * Microservices ([https://martinfowler.com/microservices/](https://martinfowler.com/microservices/)) 59 | * Testes unitários, teste o que achar importante (De preferência JUnit + Mockito). Mas pode usar o que você tem mais experiência, só nos explique o que ele tem de bom. 60 | * SOAPUI para testes de carga ([https://www.soapui.org/load-testing/concept.html](https://www.soapui.org/load-testing/concept.html)) 61 | * Uso de diferentes formas de armazenamento de dados (REDIS, Cassandra, Solr/Lucene) 62 | * Uso do git 63 | * Diferencial: Criptografia de comunicação, com troca de chaves. ([http://noiseprotocol.org/](http://noiseprotocol.org/)) 64 | * Diferencial: CQRS ([https://martinfowler.com/bliki/CQRS.html](https://martinfowler.com/bliki/CQRS.html)) 65 | * Diferencial: Docker File + Docker Compose (com dbs) para rodar seus jars. 66 | 67 | ### # Observações gerais 68 | 69 | Adicione um arquivo [README.md](http://README.md) com os procedimentos para executar o projeto. 70 | Pedimos que trabalhe sozinho e não divulgue o resultado na internet. 71 | 72 | Faça um fork desse desse repositório em seu Github e nos envie um Pull Request com o resultado, por favor informe por qual empresa você esta se candidatando. 73 | 74 | ### # Importante: não há prazo de entrega, faça com qualidade! 75 | 76 | # BOA SORTE! 77 | --------------------------------------------------------------------------------