Skip to content
Decentralized content publication and subscription.
JavaScript TypeScript HTML CSS Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets
e2e
src
.editorconfig
.eslintrc.json
.gitignore
1.png
2.png
3.png
LICENSE
README.md
angular.json
example_identity.json
fix-electron5-sandbox.sh
ipfs-config.js
kadence-config.js
main.js
package-lock.json
package.json
server.js
test-ipfs.js
tsconfig.json
tslint.json

README.md

follow - Decentralized content publication and subscription.

Project status - Alpha

builds on:

  • Linux
  • OSX (unknown)
  • Windows

Abstract

TODO

UI

alt text alt text alt text


Protocol flow

  1. generate identity (public - private key pair)
  2. contact the dht bootstrap node or known peers and ask for the closest identities to your pub key in the dht
  3. store list of N closest(bitwise) peers and their identities (ip address, latest magnet link and a signature of the magnet link)
  4. generate a new identity file, which is just a JSON file containing your various sub identities. I.e. pgp key, bitcoin addr, youtube channel, etc... and array of published content objects I.e. magnet link, display_name, timestamp, etc....
  5. generate a magnet link for the most current identity file.
  6. generate a signature for the identity file magnet.
  7. push latest identity magnet, ip address and signature to neighbor peers.
  8. peers verify signature against your pubkey, and push this "value" to your key id signature is valid, otherwise ignore.
  9. for every new piece of content you create(video, text, whatever file type) add to json file. repeat step 4..8
  10. if profile/identity file gets too big(lets say after each 100 publications), clear publication list and append prior magnet link(containing full list) to the "publications_archives" list. This will be used for publication pagination.
  • IPNS / dht.GET(identity) -> ipfs/magnet link -> profile.json = list of ipfs/magnet link(s) to users publications -> download content -> enjoy content.

example identity file

example_identity.json


built using


prerequisites

general

  • nodejs (v10 or above)

Running

npm install
npm start # compiles angular assets and start electron
or
npm run electron

testing

follow QmXVaHqzoA1zRcTKYFjhRzprADBP2kX7cgkHxMNtrBJ1yy


TODO

  • Follow publishers
  • Add arbitrary info into profile
    • Add "suggested" identities to ones own profile
  • Repost someone else's publication
  • properly render images
  • properly render videos
  • properly render text documents
  • properly render html
  • search / filtering
  • themes
  • refactor
  • refactor
  • refactor

Contributors / credits

  • The ipfs team
  • Feross (Webtorrent)
  • Ironman (conceptual)

Contribute

Become a patron


License

follow is released under the terms of the GNU General Public License v2 only.

You can’t perform that action at this time.