Home
Softono

Desarquivo

Open source Vue
33
Stars
2
Forks
18
Issues
2
Watchers
3 years
Last Commit

 About Desarquivo

Desarquivo is an open-source Portuguese project designed to democratize investigative journalism and fact-checking by leveraging web archives, specifically Arquivo.pt. It functions as a reproducible tool for analyzing public records to support justice, journalism, and truth. The system focuses on uncovering connections between entities such as people, organizations, and locations across a twenty-year period from 2000 to 2020, with initial investigations centered on high-profile figures like Jose Socrates and Isabel dos Sandra. It aggregates data from major national newspapers including Publico, Expresso, Diario de Noticias, Correio da Manhã, Sol, Visao, and Jornal de Noticias. The software extracts entities and their relationships to build a massive, explorable network graph. It relies on a dual-database architecture utilizing MongoDB for NoSQL storage and Neo4j for graph data management. Citizens can access an interactive graphical interface to explore these networks and view examples, while researchers and

Platforms

Web Self-hosted Docker

Languages

Vue

Need Help Installing Desarquivo?

We provide expert installation service for this software. Our team will install, configure, and secure Desarquivo on your server. plans start at just $30.

Desarquivo

View on GitHub



Um projeto que procura democratizar e complementar o jornalismo de investigação e a verificação de factos.
Arquivo.pt para justiça, jornalismo e verdade.

A project that seeks to democratize and complement investigative journalism and fact-checking.
Arquivo.pt for justice, journalism and truth.

English Version

Sobre o Projeto

O Desarquivo foi desenhado como um esforço reprodutível que tem por base um conjunto de configurações das quais se destacam

As notícias recolhidas foram analisadas e de lá foram extraídas entidades (pessoas, organizações, lugares, entre outras) e respetivas relações. Estas relações formam uma rede imensa que é agora explorável nesta interface gráfica ou diretamente nos dados que são de livre acesso.

O desarquivo assenta sobre duas bases de dados, nomeadamente MongoDB (NoSQL) e neo4j (Grafos).


Vídeo de apresentação

Cidadãos

Podem aceder ao desarquivo e explorar as suas diferentes funcionalidades e exemplos.

Investigadores e Programadores

Podem ainda aceder aos datasets disponibilizados e executar queries mais complexas sobre os grafos gerados.

Instruções completas para usar o comando neo4j-admin

# instalar docker, docker-compose, mongorestore -> pesquisar instruções mais recentes online
# clonar este repositório e entrar na pasta
git clone https://github.com/msramalho/desarquivo
cd desarquivo

# fazer uma cópia dos ficheiros deo configuração
cp .neo4j.env.example .neo4j.env
cp .mongo.env.example .mongo.env
cp ./api/.env.example .api/.env

# (editar os ficheiros com as passwords desejadas)
...

# criar as pastas correspondentes aos volumes necessários (se for o Docker a fazê-lo as permissões estaram erradas)
mkdir neo4j/import neo4j/data neo4j/conf neo4j/logs mongodb/data/db

# colocar os datasets no formato igual ao dataset03a.zip (i_entities.csv e i_relationships.csv) na pasta /import
unzip dataset03a.zip -d <SOME DIR>
cp <SOME DIR>/i_*.csv ./neo4j/import/

# correr o seguinte comando para que importar o dataset neo4j
# (verificar que a pasta atual é $HOME/desarquivo) senão atualizar
docker run --interactive --tty --rm \
    --publish=7474:7474 --publish=7687:7687 \
    --volume=$HOME/desarquivo/neo4j/data:/data \
    --volume=$HOME/desarquivo/neo4j/import:/import \
    --user="$(id -u):$(id -g)" \
    neo4j:latest \
neo4j-admin import --id-type=STRING --nodes=/import/i_entities.csv --relationships=rel=/import/i_connections.csv

# iniciar o docker-compose
docker-compose up -d

# se aceder a IP:7474 verá o interface do neo4j, para o esconder do
# público editar as portas do serviço neo4j no docker-compose
...
# quando os 3 containers estiverem a correr
...
# importar os dados para o neo4j
# carregar o dataset02.zip para o servidor
unzip dataset02.zip -d dataset02
cd dataset02

# usar o mongorestore para importar para a isntância mongo
# -d é o nome da base de dados
# . é a pasta atual onde estarão os .bson e .json
mongorestore -u USER -p PASSWORD --authenticationDatabase admin --uri="mongodb://localhost:27017/" -d desarquivo . 

# feito.
# basta aceder a IP:80 para aceder à API que estará ligada a ambas as bases de dados, com os dados carregados

Criação do Desarquivo

O Desarquivo é uma junção de diferentes peças que se encontram descritas abaixo.

Recolha e Limpeza de Dados

Cujo código se encontra na pasta collection e que diz respeito à interação com as APIs do Arquivo.pt e com a respetiva organização na base de dados MongoDB. Há a realçar que o processo tira partido de parallelismo o que, na prática, resulta numa redução de mais de uma ordem de grandeza no tempo total de recolha. Os demais pormenores estão explicados no ficheiro de instruções na dita pasta.

API

A API foi desenvolvida em Flask e todo o respetivo código encontra-se na pasta api. Este diz respeito à interação com ambas as bases de dados (MongoDB e neo4j).

A Interface

A Interface, desenvolvida em Vue.js com Nuxt.js e Vuetify e com recurso à biblioteca cytoscape.js para a visualização do grafo. Todo o código respetivo encontra-se na pasta ui. A interface está preparada para ser automaticamente colocada em produção em gh-pages.

Docker

À exceção da interface e do processo de recolha de dados, as restantes partes do Desarquivo (API, MongoDB, neo4j) encontram-se em containers Docker o que significa que há uma maior flexibilidade e interoperabilidade quer no desenvolvimento quer em produção. Os comandos mais importantes para orquestrar estes serviços são

  • docker-compose up -d
  • docker-compose down

De realçar que se o projeto for executado em Windows, é necessário desativar o volume do serviço mongodb.

Futuro do Desarquivo

O Desarquivo continuará a ser melhorado e procurará tornar-se uma ferramenta mais completa que se afirma como defensora de transparência, liberdade de expressão, e investigação jornalística. As possibilidades são inúmeras e as ideias também. Se te revês neste projeto e acreditas que faz sentido, considera contribuir com tempo, conselhos, ou ideais.

Para entrar em contacto comigo, utiliza o LinkedIn.

Agradecemos sugestões de melhoria e identificação de erros. Nesses casos, usem os issues do Github.