No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Arthur Poulet fa9e9854c0
Move stuff around
4 months ago
config Init 4 months ago
spec Init 4 months ago
src Move stuff around 4 months ago
.editorconfig Init 4 months ago
.gitignore Init 4 months ago
.travis.yml Init 4 months ago
LICENSE Init 4 months ago
Makefile Init 4 months ago Init 4 months ago
shard.yml Init 4 months ago


TODO: Write a description here




make run



The goal of the project is to create a P2P network able to serve an index of meta-data about git repositories among all kind of plateform.

It contains:

  1. a distributed database
  2. a web interface
  3. a api interface
  4. a bridge to several git forges’ api.


Simple presentation:

  • A node is connected to others. Not every node needs to be connected to all the others.
  • Each node can map the immediate network arround it.
  • Each node owns data and share it.
  • Each node must assure the network stay stable through synchronization mechanics (trust update, role rotation, data duplication).


  • A new node send the list of the seeds to his seeds.
  • A new node who finish to contact the seeds has to map the immediate network by querying the seeds.
  • A new node that finish the network mapping has to send the list of the forges he knows.


  • A node who owns the data queried must answer itself.
  • A node who knows where the data is located must forward the query to the right nodes.
  • A node who don’t know where the data is located must forward the query to another node.
  • A node is responsible of the data it owns. He make sure that it is duplicated on the network.


  • Each node ensure that the other nodes accomplish their roles.
  • Each node knows which forges it is in charge of, and ensure that these forges are up to date.
  • A connected node that learn a new forge or a new node must send it to the other nodes.
  • A connected node that cannot contact another connected node must inform the network and update the map.
  • A connected node make sure that the roles rotate among the nodes.


  1. Fork it (
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request