Giter Site home page Giter Site logo

jacobjohansen / identia Goto Github PK

View Code? Open in Web Editor NEW

This project forked from iohzrd/identia

0.0 2.0 0.0 11.54 MB

Decentralized, censorship resistant social media on IPFS.

License: GNU Affero General Public License v3.0

HTML 0.66% JavaScript 4.66% Rust 57.15% Svelte 35.93% TypeScript 1.60%

identia's Introduction

identia

Decentralized, censorship resistant social media on IPFS.

Successor to follow

Run

Follow this guide to setup dev dependencies...

npm install
npm start

Architecture

The core of identia is it's conception of an identity.

An identity object is the fundamental unit that we'll use to bootstrap a distributed multi-media social graph.

First, we connect to IPFS and retrieve our IPFS ID.

On first boot, we instantiate a new "Identity" object, which is ultimately stored and updated to disk via SQLite.

Most of the identity logic is contained in: src-tauri/identity.rs

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-post" / mirror a post
  • implement comment system via pubsub
  • include crypto signature of body in post
  • implement private messaging with libsignal or DiscoCrypto
  • 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...
  • mobile app...
  • re-imlpement tor hidden service
  • serve web-frendly html with identity + TOR

Community:

Matrix:
#general:identia.io

Discord:
https://discord.gg/aErhA6TBPS

Follow me

12D3KooWHxU85q4JWsDXq4ZHjBCdjHHGL9wnMtqBMMgArkn6xcyz
12D3KooWDED1CudLX9sdi1qBzy5tHS4Xi2Mpk45E5wrqteri1R8z
12D3KooWQoQ3QUPezmCv2w8JJ5RXPqtjupkLB4JtV9obVfc5PZMX

Support me

BTC:
bc1qtss3kxqcfl7glaskys7tevs98e6v62rhpx8lzj

XMR:
45TMU8YyJD7XCZXRGFUL3bGrgqnA2BrqWXbt9GTWGzCZ43e2fKBVowFintAzn5CsQA4S3MiHagCk22FP1L3meQJQF94PWE3

or

https://www.patreon.com/iohzrd

License

AGPL-3.0

identia's People

Contributors

iohzrd avatar

Watchers

James Cloos avatar  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.