Skip to content

thiago-jv/VOTACAO_API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

107 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto Votação em Sembleia

Objetivo

No cooperativismo, cada associado possui um voto e as decisões são tomadas em assembleias, por votação. A partir disso, você precisa criar uma solução back-end para gerenciar essas sessões de votação. Essa solução deve ser executada na nuvem e promover as seguintes funcionalidades através de uma API

REST:

  • Cadastrar uma nova pauta;
  • Abrir uma sessão de votação em uma pauta (a sessão de votação deve ficar aberta por um tempo determinado na chamada de abertura ou 1 minuto por default);
  • Receber votos dos associados em pautas (os votos são apenas 'Sim'/'Não'. Cada associado é identificado por um id único e pode votar apenas uma vez por pauta);
  • Contabilizar os votos e dar o resultado da votação na pauta.

Para fins de exercício, a segurança das interfaces pode ser abstraída e qualquer chamada para as interfaces pode ser considerada como autorizada. A escolha da linguagem, frameworks e bibliotecas é livre (desde que não infrinja direitos de uso).

É importante que as pautas e os votos sejam persistidos e que não sejam perdidos com o restart da aplicação.

Tarefas bônus As tarefas bônus não são obrigatórias, mas nos permitem avaliar outros conhecimentos que você possa ter. A gente sempre sugere que o candidato pondere e apresente até onde consegue fazer, considerando o seu nível de conhecimento e a qualidade da entrega.

  • Tarefa Bônus 1 - Mensageria e filas Classificação da informação: Uso Interno O resultado da votação precisa ser informado para o restante da plataforma, isso deve ser feito preferencialmente através de mensageria. Quando a sessão de votação fechar, poste uma mensagem com o resultado da votação.

  • Tarefa Bônus 2 - Performance Imagine que sua aplicação possa ser usada em cenários que existam centenas de milhares de votos. Ela deve se comportar de maneira performática nesses cenários; Testes de performance são uma boa maneira de garantir e observar como sua aplicação se comporta.

  • Tarefa Bônus 3 - Versionamento da API Como você versionaria a API da sua aplicação? Que estratégia usar?

Tecnologias Utilizadas

Stack utilizada e mais

  1. Spring Boot
  2. Spring Data
  3. Spring Profiles
  4. Partner - DTO Data Transfer Object
  5. Partner - Repository
  6. Arquitetura de MicroServiços
  7. MapStruct
  8. Lombok
  9. Logger
  10. Maven
  11. junit
  12. RestAssured
  13. Swagger
  14. Clean Code
  15. SOLID
  16. Mensageria - RabbitMQ
  17. Docker compose
  18. PostgreSQL

Frontend

(Front-end do projeto): VOTACAO_UI - Responsável pela interface de acesso as funcionalidade e integração desenvolvidas no backend.

https://github.com/thiago-jv/VOTACAO-UI

Passos para rodar aplicação via docker-compose

1- git clone https://github.com/thiago-jv/VOTACAO_API.git

2- dentro do path /votacao -> docker compose up

Link de Acesso a API - Local

http://localhost:8089/votacaoapi/swagger-ui.html#/

Link de Acesso RabbitMQ - Local

http://localhost:15672/#

Usuario: admin
Senha: admin

Requisitos

1- Instalar ou configura manven 3.8.7 ou superior compativel.

2- Instalar jdk-11.0.18 ou superior compativel.

3- Instalar docker 4.6.1 ou superior compativel.