Câmara Organizada é uma forma simplificada de estruturar e manter as informações de Brasília. Aqui é possível organizar os parlamentares, as comissões e as propostas em curso. Com isso, fica fácil de acompanhar quais as propostas estão sendo votadas e qual o posicionamento dos representantes e das comissões, além de manter um histórico do que já aconteceu.
Por enquanto, você pode executar o Câmara com Java e Spring Boot instalados. Caso não os tenha, siga esse e esse, respectivamente.
Se você utilizar o Eclipse como IDE, fica ainda mais fácil. É só instalar o SpringSTS no Eclipse e definir as configurações de execução do código como projeto Spring e, assim, executá-lo normalmente.
Se você preferir executar pelo terminal, rode este comando:
mvn spring-boot:run
-
Como você tá deve ter percebido, este é um projeto codificado em Java usando o framework SpringBoot que facilita a configuração da aplicação.
-
Arquitetura do código se baseia na divisão de funcionalidades de Controller, Service e Repository. Onde os Controllers recebem as requisições e as encaminha ao services especializados. Service tem a lógica da aplicação. A camada de Repository disponibiliza serviços para armazenar, alterar, deletar e buscar as informaçes do sistema. Confira o diagrama abaixo ou, se preferir, veja o diagrama de classes
-
Foi utilizado ORM Hibernate para a persistência, enquanto que para o banco de dados, é utilizado o H2. Para conferir o que foi armazenado, acesse http://localhost:8080/h2 e preencha os campos conforme os dados no arquivo application.properties. Para adicionar entidades e relações no BD é preciso apenas o uso de anotações como
@Entity
,@OneToOne
,@OneToMany
,@ManyToOne
. -
Há o uso do Redis para a disponibilização de cache para algumas informações da aplicação. Assim como para o BD, a definição de informações cacheaveis é feita com anotações como
@Cacheable
, já disponibilizadas pelo Spring. Resultados: -
No câmara organizada, existe a opção de fornecer dados para um servidor Kafka(Publisher). Atualmente apenas dados dos deputados registrados são enviados. A utilização é feita da seguinte maneira:
Antes de executar o câmara organizada, entre na pasta do kafka disponível no repositório e execute os seguintes comandos para subir os servidores do zookeeper/kafka.
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties
Após ter o servidor do Kafka executando, execute o servidor do câmara organizada e toda vez que um novo deputado for registrado, ele será enviado para o servidor Kafka. O câmara cidadã é um micro-serviço que também utiliza-se do servidor Kafka (Consumer) para obter esses dados e mostrá-los em tempo real para a população. Para mais detalhes de como executar o câmara cidadã, confira o README.md da pasta cidada.
- Um administrador é cadastrável pela rota
/admin
com a operação de post. Ele pode realizar login como administrador, pela rota/login
. - O login retorna um token, gerado a partir das informações do admininstrador, utilizando a biblioteca
Json Web Token
. Esse token permite ao administrador para consultar informações sobre usuários. - Como administrador o request GET para
/user
que possui retorno diferente, variando de acordo com as informações no cabeçalhoAuthorization Bearer <token>
.- Caso seja feita uma requisição de consulta de usuários sem passar o token, apenas a informação DNI será retornada. Se o header contiver
Authorization Bearer <token>
, e o token for um token válido, a requisiçãoGET
para/user
irá retornar, além do DNI, os campos de: nome, partido e estado. - Caso o token esteja mal formatado ou inválido, a requisição irá retornar um erro conforme a biblioteca JWT.
- Caso seja feita uma requisição de consulta de usuários sem passar o token, apenas a informação DNI será retornada. Se o header contiver
Se você quiser enteder mais detalhes do sistema, dá uma olhada no conjunto das funcionalidades que implementamos aqui. E qualquer dúvida é só perguntar aos contribuidores por email mesmo livia.juliao@ccc.ufcg.edu.br e marcus.costa@ccc.ufcg.edu.br