Esse projeto nasceu de uma oportunidade de desenvolver nas organiações em rede um maior acesso aos recursos atualmente existentes e diponíveis. Ele tem como primeira manifestação de ideal um Manifesto pelos Recursos Ocultos. Os principais princípios que norteiam esse manifesto e, consequentemente, esse projeto são:
- Autonomia plena de cada indivíduo sobre aquilo que compartilha e que demanda
- O valor gerado por um recurso que circula é muito maior do que a posse inativa
- Ter conhecimento da casa e seus recursos
- Aplicação da lógica de redes para conectar nós
- Sustentação da energia da rede pela intenção proposta e pelos recursos existentes
Esse projeto nasce como uma proposta de entregar uma tecnologia que facilite a circulação de recursos entre pessoas que estão conectadas. A ideia é de simplesmente prover uma interface para que as pessoas possa disponibilizar recursos para seus contatos da rede e, quando alguém tiver uma necessidade, possa fazer uma busca na aplicação e encontrar recursos disponíveis em sua rede de contatos (n graus de separação).
Para reproduzir as características das organizações em rede e os propósitos contidos no Manifesto pelos Recursos Ocultos, a aplicação terá as seguintes características em sua estrutura:
- Dados: Nenhum dado será armazenado de forma centralizada. Eles ficarão distribuídos nos recursos do próprio usuário e no primeiro nível de contato das redes em que participa. Será utilizada criptografia tanto para representar os dados (SHA-256) quanto para assinar digitalmente os dados criados (ECDSA).
- *Acesso: A aplicação irá rodar praticamente toda no computador/celular do usuário. Por ess motivo foi escolhido o modelo de Progressive Web Apps (PWA)
- *Comunicação: Toda a comunicação será feita em formato peer-to-peer, tanto para estabelecer a comunicação entre as pessoas da mesma rede quanto para propagar a disponibilização e a busca por recursos
A ferramenta é uma combinação de uma série de soluções, a sua maioria em Javascript/Node.JS. Portanto estão sendo utilizadas as seguintes ferramentas e padrões:
- PWA/Polymer Ferramenta para acelerar o desenvolvimento de aplicações no formato PWA
- Curva Elípticas (ECDSA): Utilizadas para criar o par de chave de acesso dos usuários com a bilioteca Elliptic
- SHA256: Para criptografar os dados dos usuários, com a biblioteca SJCL
- Biometria do Usuário: Para ter um fator adicional de autenticação, com a biblioteca Tracking.js
- Geração de QR Code: Cada usuário terá seu QR Code para poder adicionar facilmente outros contatos. Para isso, está sendo utilizada a biblioteca Go QR
- Comunicação Peer-to-Peer: Para realizar a comunicação entre as instãncias da aplicação está sendo utilizada a biblioteca Socket.io, em Node.JS no servidor de Signaling e no client Javascript dentro da aplicação. Ele será responsável pela troca de mensagens durante as buscas, sincronização de dados e disponibilização de recursos.