Coder Social home page Coder Social logo

fga-eps-mds / 2018.1-voxpop-api Goto Github PK

View Code? Open in Web Editor NEW
2.0 15.0 1.0 1.14 MB

Repositório de back-end do VoxPop, API desenvolvida utilizando Django REST Framework. VoxPop é uma aplicação que visa criar uma classificação pessoal de deputados com base na compatibilidade dos usuários com os parlamentares. Documentação: https://docs.voxpop.ml/

Home Page: https://api.voxpop.ml

License: GNU General Public License v3.0

Python 93.85% Shell 1.71% Makefile 4.43%
django-rest-framework drf python api deputados voxpop backend

2018.1-voxpop-api's Introduction

VoxPop API

VoxPop-API
VoxPop-API-homologation Jenkins-VoxPop-API-dev
VoxPop-API-production Jenkins-VoxPop-API-master

VoxPop-WebApp
VoxPop-WebApp-homologation Jenkins-VoxPop-WebApp-dev
VoxPop-WebApp-production Jenkins-VoxPop-WebApp-master

License: GPL-3.0 Django-REST 3.7.7 PostgreSQL 10.3

Quem somos nós

O VoxPop é uma aplicação criada no contexto das disciplinas Métodos de Desenvolvimento de Software (MDS) e Engenharia de Produto de Software (EPS) da Universidade de Brasília (UnB) - Faculdade do Gama (FGA), que visa criar uma classificação pessoal de deputados com base na compatibilidade dos usuários com os parlamentares.

E como fazemos isso?

Todo o conceito do VoxPop se baseia em cruzar dados abertos disponibilizados pela Câmara dos Deputados confira aqui com dados fornecidos pelos usuários, podendo assim gerar estatísticas sobre os nossos parlamentares, sobre as proposições que são votadas por eles, e, acima de tudo, sobre a opinião do cidadão a respeito tanto dos parlamentares, quanto das proposições.

Quais dados nós utilizamos?

Nosso sistema utiliza sempre dados recentes disponibilizados pela Câmara dos Deputados referentes aos parlamentares atuais (informações pessoais, partidárias, etc.), às proposições votadas a partir do ano de 2015, e aos votos dos parlamentares em proposições votadas a partir do ano de 2015.

Instalação

Para instalar o projeto, deve-se configurar o ambiente tanto para o repositório do Front End 2018.1-VoxPop-WebApp quanto do Back End 2018.1-VoxPop-API  para trabalharem em conjunto.

Para configurar o Front End:

Deve-se instalar o Angular 5, e para ter o Angular 5, deve-se instalar o conjunto Node.js e o seu gestor de pacotes, o npm. Primeiramente é bom instalar o nvm que é o gerenciador de versões do Node.js. Mas antes de instalar o NVM precisamos de alguns pacotes de dependências que já estão no repositório de sua distribuição Debian Based. Portanto digite no terminal do linux:

$ sudo apt-get update sudo apt-get install build-essential libssl-dev

Agora que você já tem o necessário em seu sistema instale o NVM:

$ curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh _-o installnvm.sh

O número da versão <v0.33.11> pode mudar com o tempo, então recomendo acessar a página do projeto no GitHub e procurar pela nova versão.

Execute o script com:

$ _bash installnvm.sh

O que está sendo feito aqui é o download de um script e a execução do mesmo, tudo vai ser instalado em um diretório oculto na pasta do seu usuário não é necessário utilizar o comando com sudo nesse caso.

Agora execute:

$ nvm ls-remote

Ele vai te exibir várias versões do Node e assim sabemos que o NVM está funcionando corretamente. Nós escolhemos a versão mais recente do momento a v10.1.0, você pode instala-la digitando:

$ nvm install 10.1.0

Agora vamos verificar a versão do Node para ter certeza que tudo foi instalado corretamente utilizando o comando:

$ node -v

Agora no terminal instale o npm (gerenciador de pacotes do Node.js), digitando:

$ sudo apt-get install npm

Confira se foi instalado corretamente digitando:

$ npm -v

Agora que estamos prontos, podemos passar à instalação da interface de linha de comandos do angular. Para isso basta o seguinte comando:

$ npm install @angular/cli -g

 Assim que o gestor de pacotes terminar de instalar, fazemos a verificação se foi corretamente instalado com o seguinte comando:

$ ng -v

Para trabalhar com os containers já configurados, deve-se instalar o docker compose, já que o docker Compose é o orquestrador de containers do Docker. Digite no terminal para instalar a última versão do compose:

$ sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

Teste a instalação com:

$ docker-compose --version

Agora pelo terminal dentro da pasta do Front End, instale os pacotes com:

$ npm install

Isso consiste as instalações do Front End, já para instalar o Back End, além de já ter o docker compose instalado, deve-se instalar o python, pip and django.Instale o python pelo terminal com:

$ sudo apt-get install python3.5

Para instalar o gerenciador de pacotes pip, digite no terminal:

$ sudo apt-get install python-pip

Para instalar o framework Django, digite:

$ sudo apt-get install python-django

Pronto, o projeto está todo configurado e pronto para uso. Para rodar a API, basta na pasta do Back End digitar:

$ make start

E logo apos:

$ make up

Agora para ver o projeto executando, entre na pasta do Back End pelo terminal e digite:

$ ng serve

Por ultimo va no browser do seu computador, e digite no navegador o endereço: http://localhost:4200

Licença

O projeto utiliza a licença GNU General Public License v3.0, confira aqui

Mais informações

Para mais informações sobre o projeto, veja a documentação completa aqui: VoxPop Docs

Nossos endereços

2018.1-voxpop-api's People

Contributors

bedranfleck avatar breno-mariz avatar eilimrib avatar ericobandeira avatar filipetoyoshima avatar kleberbritomoreira10 avatar lucas362 avatar mateusdemorais avatar rossicler avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

tecprog-2018-2

2018.1-voxpop-api's Issues

USB07 – Procurar proposição

USB07 – Procurar proposição

Descrição:

Eu, como usuário desejo procurar PL para que eu possa encontrar uma proposição com facilidade.

Critérios de aceitação

  • configurar o endpoint de proposições para receber um string a ser buscada
  • retornar resutados que estejam de acordo com a busca

USB06 - Ver Minhas PLs Votadas

USB06 - Ver Minhas PLs Votadas

Descrição:

Eu, como usuário desejo ver lista de PL votados por mim para que eu possa acompanhar quais projetos eu já votei.

Critérios de aceitação

  • [ ]
  • [ ]
  • [ ]
  • [ ]

BF03 - Pegar o ID dos parlamentares

BF03 - Pegar o ID dos parlamentares

Descrição:

Conserta bug no retorno do ID dos paarlamentares

Fazer api retornar o ID do parlamentr

A API nao retorna o ID do parlamentar

USB20 - Visualizar últimas proposições

#USB20 - Visualizar últimas proposições

Descrição:

Eu, como usuário desejo visualizar os últimas proposições votados na câmara para me manter em dia nas decisões políticas do meu país, e poder expressar minha opinião em proposições atuais.

Critérios de aceitação

  • Ordenar as proposições
  • O end point retornar ordenado

USB08 – Ver PL Disponíveis

USB08 – Ver PL Disponíveis

Descrição:

Eu, como usuário desejo ver lista de PL disponíveis (dashboard) para que eu possa ter acesso a qualquer PL da aplicação

Critérios de aceitação

  • [ ]
  • [ ]
  • [ ]
  • [ ]

TS01 - Obtenção de Dados da Câmara

TS01 - Obtenção de Dados da Câmara

Descrição:

Eu, como desenvolvedor desejo obter dados da API da câmara dos deputados para conseguir informações dos deputados e projetos de lei.

Critérios de aceitação

  • Obtenção dos dados de Projetos de Lei
  • Obtenção dos dados de Deputados
  • Persistência completa dos dados no Banco de Dados do Servidor

USB15 – Seguir Deputado

USB15 – Seguir Deputado

Descrição:

Eu, como usuário desejo seguir deputado para que eu possa dar prioridade a um deputado que me interessa.

Critérios de aceitação

  • [ ]
  • [ ]
  • [ ]
  • [ ]

Estatísticas

Estatísticas tendo como base os projetos de lei. Informar dados referentes ao projeto de lei selecionado, verificar indice de compatibilidade com o deputado

USB16 – Parar de Seguir Deputado

USB16 – Parar de Seguir Deputado

Descrição:

Eu, como usuário desejo seguir deputado para que eu possa remover prioridade de um deputado que não me interessa

Critérios de aceitação

  • [ ]
  • [ ]
  • [ ]
  • [ ]

USB11 – Alterar Voto em PL.

USB11 – Alterar Voto em PL

Descrição:

Eu, como usuário desejo alterar meu voto em um PL para que eu possa atualizar minha opinião sobre um PL específico

Critérios de aceitação

  • [ ]
  • [ ]
  • [ ]
  • [ ]

Proposições não votadas

Descrição

Implementar endpoint para pegar pegar as proposições em que o usuário ainda não possui voto.

Critérios

  • Usar rota http://{{ domain }}/api/propositions/non_voted/
  • Só usuário autenticado pode acessar
  • Exibir proposição mais recente em que o usuário ainda não votou

Feedback

USB02 - Autenticação de Usuário

USB02 - Autenticação de Usuário

Descrição:

Eu, como usuário desejo me autenticar no sistema para manter minhas informações pessoais e preferências

Critérios de aceitação

  • Efetuar a autenticação com os dados
  • Enviar pacote para o requester com resultado da autenticação.

USB10 – Votar um PL

USB10 – Votar um PL

Descrição:

Eu, como usuário desejo votar um PL para que eu possa dar minha opinião sobre um PL específico

Critérios de aceitação

  • [ ]
  • [ ]
  • [ ]
  • [ ]

USB13 – Listar Deputados Seguidos

USB13 – Listar Deputados Seguidos

Descrição:

Eu, como usuário desejo ver a lista de deputados seguidos (dashboard) para que eu possa acompanhar os deputados que me interessam

Critérios de aceitação

  • [ ]
  • [ ]
  • [ ]
  • [ ]

USB17 – Ver Compatibilidade Política

USB17 – Ver Compatibilidade Política

Descrição:

Eu, como usuário desejo ver índice de compatibilidade com um deputado para que eu possa saber minha compatibilidade com um deputado

Critérios de aceitação

  • Retornar a compatibilidade política com o usuário logado junto com cada deputado
  • Não retornar nada de compatibilidade quando não houver usuário logado

Gerenciar Deputados

Tudo que envolve manipulação de dados referentes aos deputados em exercício na Câmara dos Deputados.

USB18 – Ver Estatísticas de uma proposição

USB18 – Ver Estatísticas de um PL

Descrição:

Eu, como usuário desejo ver estatísticas de um PL para que eu possa saber como cada tipo de pessoa vota um PL

Critérios de aceitação

  • Retornar a porcentagem de aprovação pela população
  • Retornar a porcentagem de aprovação pelos deputados

USB09 – Ver PL Detalhado

USB09 – Ver PL Detalhado

Descrição:

Eu, como usuário desejo ver PL detalhado para que eu possa saber detalhes de um PL específico

Critérios de aceitação

  • [ ]
  • [ ]
  • [ ]
  • [ ]

USB03 - Visualizar Perfil

USB03 - Visualizar Perfil

Descrição:

Eu, como usuário desejo visualizar meu perfil para que eu possa gerenciar minhas informações pessoais e preferências

Critérios de aceitação

  • [ ]
  • [ ]
  • [ ]
  • [ ]

Refatoração do cadastro de usuários

Descrição:

  • Mudar rota de /api/socialInformation/ para /api/social_informations/ (sempre usar esse padrão, usando plural e underscore para separar palavras);
  • Mudar o campo state para federal_unit na Model SocialInformation.

Padronizar nomes dos atributos na API e no WebApp:

SocialInformation

  • owner = ID do usuário dono da informação social
  • federal_unit = UF em que o usuário reside
  • city = Cidade em que o usuário reside
  • income = Renda do usuário
  • education = Nível de educação do usuário
  • job = Emprego do usuário
  • birth_date = Data de aniversário do usuário

User

Atributos de User do Django, sendo que os utilizados são:

  • username
  • first_name
  • last_name
  • email
  • password
  • social_information (neste, é trazido o JSON correspondente ao objeto SocialInformation do User)

USB14 – Ver Deputado Detalhado

USB14 – Ver Deputado Detalhado

Descrição:

Eu, como usuário desejo ver deputado detalhado para que eu possa saber detalhes de um deputado específico.

Critérios de aceitação

  • [ ]
  • [ ]
  • [ ]
  • [ ]

Corrigir criação de SocialInformation

Descrição

Atualmente, ao criar um usuário, a SocialInformation referente a ele sempre vem com os valores default. O comportamento esperado, é que sejam utilizados os valores passados no payload de criação do usuário (no campo social_information). Os valores default só devem ser utilizados se o atributo específico não for passado.

USB12 – Listar Todos Deputados

USB12 – Listar Todos Deputados

Descrição:

Eu, como usuário desejo ver a lista de deputados disponíveis para que eu possa ter acesso a qualquer deputado da aplicação

Critérios de aceitação

  • [ ]
  • [ ]
  • [ ]
  • [ ]

Implementar votos de usuário

Descrição

Criar endpoint para interagir com votos de usuário.

Critérios

  • Model de UserVote (deve possuir user) herdando de Vote (deve possuir proposition e option)
  • Serializer de UserVote
  • Viewset de UserVote
  • Cada user só interage com seus próprios votos
  • Usar rota: http://{{ domain }}/api/user_votes/

USB19 – Procurar Deputado

USB19 – Procurar Deputado

Descrição:

Eu, como usuário desejo procurar um deputado para que eu possa encontrar um deputado com facilidade

Critérios de aceitação

  • [ ]
  • [ ]
  • [ ]
  • [ ]

USB04 - Editar Informações Pessoais

USB04 - Editar Informações Pessoais

Descrição:

Eu, como usuário desejo editar minhas informações de identificação para que eu possa garantir sua veracidade

Critérios de aceitação

  • [ ]
  • [ ]
  • [ ]
  • [ ]

TS03 - Melhorar Estilo de Apresentação

Descrição

Adiciona ao projeto uma nova paleta de cores, uma navbar, um footer, opções neutras em relação a informações sociais e um novo alerta para campos obrigatórios no registro;

Status

  • Validação correta do submit de campos no registro.
  • Estética e estilização.
  • Adicionar opções neutras em informações sociais.
  • Adicionar uma navbar.
  • Adicionar um footer.

USB01 - Cadastro de Usuário

USB01 - Cadastro de Usuário

Descrição:

Eu, como usuário desejo me cadastrar no sistema para ter acesso às funcionalidades e informação

Critérios de aceitação

  • Usar model de usuário do Django (django.contrib.auth.models.User)
  • Implementar model para informações socioecômicas, fazendo relação com a model de usuário (chave estrangeira)
  • Implementar serializers de usuário e de questionário socioeconômico
# Fields para usuário
fields = ['username', 'first_name', 'last_name', 'email, 'password']
  • Implementar viewsets, com endpoints nos seguintes endereços (no ambiente de desenvolvimento):
http://localhost:8000/api/users/
http://localhost:8000/api/socioeconomic_informations/
  • Fazer documentação para o Swagger
  • Implementar testes unitários

USB05 - Editar Informações Socioeconômicas

USB05 - Editar informações socioeconômicas

Descrição:

Eu, como usuário desejo editar minhas informações socioeconômicas para que eu possa garantir sua veracidade

Critérios de aceitação

  • [ ]
  • [ ]
  • [ ]
  • [ ]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.