Giter Site home page Giter Site logo

rufatkiu / identia Goto Github PK

View Code? Open in Web Editor NEW

This project forked from iohzrd/identia

0.0 0.0 0.0 6.18 MB

Decentralized, censorship resistant social media on IPFS.

License: GNU Affero General Public License v3.0

JavaScript 1.87% Rust 19.88% TypeScript 26.34% HTML 0.25% Svelte 51.66%

identia's Introduction

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

identia's People

Contributors

iohzrd avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.