Skip to content
/ identia Public

Decentralized, censorship resistant social media on IPFS.

License

Notifications You must be signed in to change notification settings

iohzrd/identia

Repository files navigation

identia

Peer-to-peer, censorship resistant social media on IPFS. Plus experimental RSS reader.

Successor to follow

screenshot1

Development / Running from source

Follow this guide to setup dev dependencies...

Linux

For video playback on linux, you may need to manually install gstreamer/gst-plugins: gstreamer gst-libva gst-plugins-bad gst-plugins-base gst-plugins-good gst-plugins-ugly

For hardware video acceleration install: gstreamer-vaapi. Optional but recommended.

npm install
npm start

Architecture

The identity object:

{
    "avatar": "", // base64 encoded image or ipfs CID for "avatar"
    "description": "", // user-defined description / bio
    "display_name": "", // user-defined display name
    "following": [""], // a list of ID's the user follows
    "meta": {}, // graph time!
    "posts": [""], // a list of CIDs that represent post objects
    "publisher": "", // users IPNS ID
    "timestamp": 1608271880058, // UTC adjusted UNIX timestamp of the identities last alteration
}

The post object:

{
    "body": "", // the text body of the post
    "files": [], // a list of file paths, relative to the post root
    "meta": {}, // graph time!
    "publisher": "", // original publisher, will be used for "re-post" functionality
    "timestamp": 1608271880058 // UTC adjusted UNIX timestamp of the post
}

The meta object:

{"TODO": "so many things to do..."}

The meta object is a store for arbitrary data that can be used to describe complex relationships between various types of data. These relationships can be stored in a post object to add context to a specific post or in the identity object to provide an identity-wide context scope.

TODO

  • prototype logic
  • periodically re-publish self identity
  • periodically update identities you follow...
  • cache posts
  • enable file in posts
  • bundle IPFS binaries and manage execution
  • post view
  • implement tray.
  • progress events for spinners and such
  • Distribute binaries
  • migrate to SQLite...
  • Paginate feed
  • enable(fix) audio/video playback
  • re-implement comment system via pubsub
  • implement image(media) board system via pubsub
  • implement custom IPFS in rust-libp2p
  • mobile...
  • "re-post" / mirror a post
  • include crypto signature of body in post
  • mechanism for exporting / importing, identity / posts
  • strip exif data from images
  • include index.html with posts to allow styling for browser consumption...
  • Auto-update system
  • advanced pin management
  • meta view
  • settings view
  • keybase-like functionality...

Follow me

12D3KooWHxU85q4JWsDXq4ZHjBCdjHHGL9wnMtqBMMgArkn6xcyz

Support me

https://github.com/sponsors/iohzrd

https://www.patreon.com/iohzrd

BTC:
bc1qtss3kxqcfl7glaskys7tevs98e6v62rhpx8lzj

License

AGPL-3.0