Giter Site home page Giter Site logo

thenets / brasil.io Goto Github PK

View Code? Open in Web Editor NEW

This project forked from turicas/brasil.io

0.0 3.0 0.0 597 KB

Backend da API do https://Brasil.IO/

License: GNU General Public License v3.0

Shell 1.11% Python 71.90% HTML 24.08% CSS 1.27% JavaScript 1.63%

brasil.io's Introduction

Brasil.IO - Dados abertos para um Brasil mais ligado

O Problema

Muitos dados públicos brasileiros estão disponíveis (principalmente depois da criação da Lei de Acesso à Informação), mas não necessariamente acessíveis. Mesmo que a informação esteja disponível, nem sempre ela está disponível em um formato legível por máquina, ou utilizando um formato aberto, ou possui descrição (metadados) que facilitem a interpretação (manual ou automática) desses dados. Quanto menos acessível é uma informação, mais perto de ser fechada ela está.

Além do problema relativo à acessibilidade, não existe um lugar comum em que todos os dados disponíveis estejam organizados e catalogados, dificultando ainda mais o acesso (ou a descoberta que esse tipo de informação está disponível).

O objetivo do projeto não é concorrer com iniciativas correlatas do Governo (como o dados.gov.br) e de outras organizações -- pelo contrário, gostaríamos de disponibilizar os dados que essas organizações já disponibilizam, porém de forma integrada e estruturada, permitindo a qualquer um (independente de vínculo) possa disponibilizar dados, independente da fonte.

A Solução

O projeto Brasil.IO foi criado com o objetivo de ser referência para quem procura ou quer publicar dados abertos sobre o Brasil de forma organizada, legível por máquina e usando padrões abertos. O projeto foi idealizado e está sendo desenvolvido por Álvaro Justen, com a colaboração de outros desenvolvedores.

Colabore

Entre em contato com o Brasil.IO por chat!

Há duas formas de rodar o projeto em sua máquina, uma utilizando docker e outra utilizando o PostegreSQL. Vamos começar pela que utiliza o docker:

Primeiramente, certifique-se de que você tenha instalados:

Siga os passos:

# Clonar o repositório:
git clone [email protected]:turicas/brasil.io.git

# Criar um virtualenv:
pyenv virtualenv 3.6.4 brasil.io

# Criar containers e ativar o virtualenv
cd brasil.io
source .activate

# Instalar dependências
pip install -r requirements.txt

# Criar schema e popular base de dados
python manage.py migrate
python manage.py update_data

Caso você escolha não utilizar o docker, siga os seguintes passos:

Certifique-se de que você tenha instalados:

Após instalar o postgreSQL, crie o banco de dados que será utilizado pelo projeto. Como o docker não está sendo utilizado será necessário comentar algumas linhas no arquivo .activate.

Comente as seguintes linhas:

DOCKER_COMPOSE_FILE=docker-compose.yml

if [ -f "$DOCKER_COMPOSE_FILE" ]; then
   docker-compose -p $PROJECT_NAME -f $DOCKER_COMPOSE_FILE up -d
fi

e siga os passos:

# Clonar o repositório:
git clone [email protected]:turicas/brasil.io.git

# Criar um virtualenv:
pyenv virtualenv 3.6.4 brasil.io

# Modificar o arquivo .env para as configurações do seu Banco de Dados.
# Caso você use as configurações padrões, o arquivo será parecido com algo assim:

POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=<sua senha>
POSTGRES_DB=brasilio

DATABASE_URL=postgres://postgres:[email protected]:5432/brasilio

# Ativar o virtualenv
cd brasil.io
source .activate

# Instalar dependências
pip install -r requirements.txt

# Criar schema e popular base de dados
python manage.py migrate
python manage.py update_data

# Startar o server
python manage.py runserver

Para importar alguma base de dados para rodar no sistema é necessário o baixar o dump aqui.

Alguns arquivos demoram bastante para serem importados, pois são muito grandes. Um exemplo de arquivo menor é o dataset balneabilidade-bahia.

Após fazer o download do arquivo basta executar o seguinte comando:

$ python manage.py import_data balneabilidade-bahia balneabilidade-bahia.csv.xz

Deploying on Dokku

Dokku is a very small plataform-as-a-service software, it works like Heroku and can be used to easily deploy apps in your own infrastructure.

  • On remote machine:
    • Install dokku
    • Install needed plugins:
      • dokku plugin:install https://github.com/dokku/dokku-postgres.git postgres
      • dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git
    • Run dokku apps:create brasilio-web
  • On local machine:
    • git remote add dokku dokku@HOSTNAME:brasilio-web
    • git push dokku master
  • On remote machine:
    • dokku postgres:create brasilio-pgsql
    • dokku postgres:expose brasilio-pgsql
    • dokku postgres:link brasilio-pgsql brasilio-web
    • dokku config:set brasilio-web DEBUG=False
    • dokku ps:scale brasilio-web web=4
    • dokku domains:add brasilio-web brasil.io
    • dokku domains:add brasilio-web api.brasil.io
    • dokku domains:add brasilio-web www.brasil.io
    • dokku letsencrypt brasilio-web
    • Put .csv.xz files inside /root/data and run: dokku storage:mount brasilio-web /root/data:/data
    • dokku run brasilio-web /bin/bash
    • Inside container:
      • cd /app && python manage.py migrate
      • cd /app && python manage.py createsuperuser
      • cd /app && python manage.py update_data
      • cd /app && python manage.py import_data <dataset-slug> /data/<filename.csv.xz>

Licença

GNU General Public License version 3

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.