Primeiramente, para rodar o e-Democracia, é preciso instalar algumas dependências e o Node.js no sistema para que algumas bibliotecas funcionem adequadamente:
Faça todas as implementações necessárias no seu próprio fork
Quando terminar é só submeter um Pull Request para o repositório principal 😃
Caso esteja trabalhando em uma issue específica, pedimos apenas para você comentar na issue, dizendo que começou a fazer, pra não termos problemas de duas pessoas trabalhando na mesma coisa.
Tecnologias Utilizadas
Python 3.6+
Django 2.0+
Node.js + npm
Arquitetura do projeto
O e-Democracia é formado por um conjunto de 4 ferramentas: Audiências Interativas, Discourse, Pauta Participativa e Wikilegis. Cada ferramenta funciona independentemente, possuem stacks diferentes e são versionadas em repositórios diferentes. Para juntar tudo isso, o e-Democracia funciona como um reverse proxy, conforme o diagrama:
Todas as requisições passam pelo e-Democracia e ele redireciona cada uma de acordo com a URL:
/audiencias → Audiências Interativas
/pautaparticipativa → Pauta Participativa
/wikilegis → Wikilegis
/expressao → Discourse
A comunicação do e-Democracia com cada aplicação é feita através de um app django. Cada aplicação tem seu app respectivo dentro do projeto do e-Democracia e dentro de cada app estão presentes funções de autenticação nas ferramentas(disparadas quando um usuário faz login no e-Democracia), funções para propagar as alterações nas informações dos usuários para as outras ferramentas, entre outras.
Adicionando Novas Ferrramentas
IMPORTANTE: Antes de qualquer coisa, é importante que a ferramenta que você quer adicionar ao e-Democracia tenha suporte, de alguma forma, à Single Sign On.
Para adicionar uma nova ferramenta ao e-Democracia você precisa criar um novo app no projeto.
cd src/apps
../manage.py startapp nome_da_ferramenta
É importante fazer algumas alterações na estrutura básica do app para utilizar os métodos padrões do e-Democracia. Primeiramente, você precisa adicionar algumas variáveis no settings.py:
Configurando Ambiente de Desenvolvimento
sudo dnf install libxml2-devel libxslt-devel # Fedora/CentOS
# ou
sudo apt-get install libxml2-dev libxslt-dev
sudo pip install pipenv
pipenv install --dev
npm install
Contribuindo com o e-Democracia
Tecnologias Utilizadas
Arquitetura do projeto
Adicionando Novas Ferrramentas
cd src/apps
../manage.py startapp nome_da_ferramenta
NOME_DA_FERRAMENTA_ENABLED = config('NOME_DA_FERRAMENTA_ENABLED', default=True,