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

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jan 20, 2025
47e65f1 · Jan 20, 2025
Oct 13, 2022
Oct 19, 2024
Oct 7, 2023
Jan 19, 2025
Jan 19, 2025
Dec 31, 2022
Jan 15, 2023
Oct 19, 2024
Oct 7, 2023
Dec 26, 2021
Mar 6, 2023
Jan 20, 2025
Jan 20, 2025
Feb 11, 2023
Jan 20, 2025
Dec 25, 2023
Dec 25, 2023

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