Skip to content
This repository was archived by the owner on Nov 8, 2026. It is now read-only.
plebbitPublic archive

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

3 watching

Forks

Latest commit

 

History

78 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Important

Plebbit has rebranded to Bitsocial. This repository is archived and preserved for historical reference.

For current plans and proposals, see the Bitsocial master plan, documentation, and BSIPs.

Find current projects at @bitsocialnet.

Demo roadmap

plebbit-js

  • Publish comment over pubsub
    • Captcha
    • Signature
    • Encryption
    • HTTP gateway fallback if IPFS client undefined
    • Pubsub provider fallback if IPFS client undefined
    • Add signature to PubsubMessage and validate PubsubMessage.signature
    • Encrypt ChallengeMessage.challenges and ChallengeAnswerMessage.answers
    • Include Plebbit and plebbit-js version in every pubsub message
  • Get comment over IPFS/IPNS
    • Verify author signature
    • Verify subplebbit owner signature
    • HTTP gateway fallback if IPFS client undefined
    • Validate comment.link is valid with new URL(comment.link).protocol === 'https:' (all posts, comments and replies, and in pages)
  • Get subplebbit over IPNS
    • Verify Subplebbit.signature (sub owner must sign subplebbit updates otherwise IPNS provider can lie)
    • HTTP gateway fallback if IPFS client undefined
  • Get subplebbit pages over IPNS
    • Verify author signature
    • HTTP gateway fallback if IPFS client undefined
  • Tests
    • Tests run under 1 minute
    • Concurrent mocha tests
    • Concurrent karma tests
    • Add CI
    • Add CI including plebbit-react-hooks CI
    • Add way to run only 1 file in mocha tests with CLI
  • Bind Plebbit, Comment. Subplebbit, Pages classses public methods

plebbit-react

  • Post page
  • Feed page
    • Infinite scroll
    • Loading skeleton
  • Submit post page
  • Publish vote and captcha modal
  • Publish comment and captcha modal
  • Auto login with default account
  • Deploy demo to demo.plebbit.eth
  • Electron client
    • Add windows icon
    • Add mac icon
    • Add linux .desktop file info and icon
    • Set up Plebbit app to open Plebbit links. Any link that starts with demo.plebbit.eth
    • Builds and runs on Linux
    • Builds and runs on Windows
    • Builds and runs on Mac

plebbit-react-hooks

  • Accounts actions
    • createAccount
    • setAccount
    • setActiveAccount
    • setAccountsOrder
    • publishComment
    • publishCommentEdit
    • publishVote
  • Accounts hooks
    • useAccount
    • useAccountComments
    • useAccountVotes
    • useAccountVote
    • useAccounts
    • useAccountsActions
  • Comments hooks
    • useComment
    • useComments
  • Subplebbits hooks
    • useSubplebbit
    • useSubplebbits
    • Make Cloudflare not cache IPNS requests
  • Feeds hooks
    • useFeed
    • useBufferedFeeds
  • Tests
    • Add CI
    • Clean up tests to be smaller and give better errors
    • Add CI integration tests with plebbit-js (after the plebbit-js test are optimized)
    • Add way to run only 1 file in mocha tests with CLI

MVP roadmap

plebbit-js

  • Publish comment over pubsub
    • Encrypt challenges and challengeAnswers
    • Queue pubsub publishing when more than 5 keepalive connections in the browser
  • Get comment over IPFS/IPNS
    • Resolve author.address ENS name
    • Subplebbit owner adds comment.thumbnailUrl (optionally because it can leak IP)
    • Electron and Android client can fetch comment.thumbnailUrl when not already available (optionally because it can leak IP)
  • Get subplebbit over IPNS
    • Resolve subplebbit.address ENS name
  • Get subplebbit pages over IPNS
    • Resolve author.address ENS name
  • Multisubs
    • Implement Plebbit.createMultisub(createMultisubOptions): Multisub
    • Implement Plebbit.getMultisub(multisubAddress): Multisub
  • Subplebbits
    • Implement Plebbit.createSubplebbitEdit(createSubplebbitEditOptions): SubplebbitEdit
  • IPNS over pubsub
  • Peers block spam IP addresses
  • Challenges
    • Text captcha challenge
  • Implement Plebbit.listSubplebbits(): address[]
  • Change dataPath to dataPath/subplebbits and dataPath/cache
  • Implement Plebbit.getDefaults()
  • Add Plebbit.createSubplebbitEdit(createSubplebbitEditOptions) and CreateSubplebbitEditOptions documentation to readme
  • Round robin multiple pubsub providers and IPFS gateways, change provider/gateway configs to arrays
  • Make BlockchainProvider.rpcUrls an array, either to round robin or double validate responses
  • Figure out how to block IPFS files larger than the max publication size

plebbit-react

  • Challenges
    • Text captcha challenge
    • Challenge success/fail notification
    • Information about the publication on the challenge modal
    • Multiple challenges with progress indicator (e.g. 1/4)
  • Moderator/about pages
    • Subplebbit settings
      • Instructions to export/backup subplebbit (backup the file ${plebbit.dataPath}/subplebbits/${subplebbit.address})
      • Instructions to import subplebbit (copy the database file in ${plebbit.dataPath}/subplebbits/${subplebbit.address}) and refresh
    • Subplebbit appearance
    • Subplebbit rules
    • Subplebbit moderators
  • Settings pages
    • Account
      • Language
      • Location
      • Export
      • Import
    • Profile
      • NFT avatar
      • Display name
      • Crypto wallet addresses (to receive tips and awards)
    • Safety & Privacy
      • Blocked addresses
  • Own profile page
    • Edit NFT avatar
    • Edit display name
    • Edit crypto wallet addresses (to receive tips and awards)
  • Feed page
    • Author address (ENS or 14 characters public key)
    • Author avatar image
    • Author flair
    • Post flair
    • Date
    • Full embed images
    • Small thumbnails
    • Share button
    • Block button
    • Sidebar links
    • Sidebar popular communities
    • Nicely display broken images and thumbnails
    • Switch sort types
  • Comment page
    • Display markdown
    • Verify markdown tags links don't allow remote execution in electron
    • Cross posts
  • Top menu
    • Create more than 1 account
    • Switch account
  • Translations
    • Arabic
    • Chinese
    • Hindi
    • Spanish
    • Russian
    • Japanese
    • Portuguese
    • German
    • Korean
    • French
    • Italian
    • Turkish
  • Improve logo and 'plebbit' text light and dark mode
  • Improve captcha modal design
  • Search default subs
  • Pubsub HTTP client can open unlimited keepalive connections without timeout in electron
  • Tests
    • Playright browser tests
    • Add CI playright browser tests
    • Add CI/CD on master merge using plebbit-js, plebbit-react-hooks and plebbit-react tests
  • Add config for progressive web app
  • Add config for react-native build to Android APK
  • Add Android APK to automatic releases
  • Embeds
    • Twitter
    • Instagram
    • Twitch
    • Tiktok
    • Youtube
    • Odysee
    • Bitchute
    • Reddit
    • Streamable
    • Spotify
    • Imgur (not needed, they give direct links to .png)
    • Giphy (not needed, they give direct links to .gif)
    • Rumble (doesn't seem possible without API)
    • Soundcloud (doesn't seem possible without API)
    • Bandcamp (doesn't seem possible without API)
    • Google Drive (need to research, low priority)

plebbit-react-hooks

  • Accounts actions
    • publishSubplebbitEdit
    • deleteAccount
    • importAccount
    • exportAccount
    • deleteComment
    • blockAddress
  • Accounts hooks
    • useAccountNotifications
  • Feeds hooks
    • useRepliesFeed
  • Authors hooks
    • useAuthorComments or useAuthorFeed
    • hook to get total karma and other profile info (possibly just include it in useAuthorFeed)
  • Multisubs hooks
    • useFeed should resolve multisubs
    • useMultisub
    • createMultisub
  • Tipping
  • Gold and Silver NFT awards
  • Filter feed by language
  • Filter feed by location
  • Add account.warnings for ENS not resolving properly
  • useResolvedSubplebbitAddress for debugging setting up ENS in a subplebbit
  • Filter blocked addresses from accounts notifications
  • Migrate feeds React context to Zustand

Low priority

plebbit-js

  • Challenges
    • ERC20 staking challenge
    • ERC721 staking challenge
    • ERC20 tipping challenge
    • ERC20 balance challenge
    • ERC721 balance challenge
    • Video captcha challenge
    • Audio captcha challenge
    • More difficult image captcha challenge
    • Settings for less or no captcha for users with karma in the sub
    • Settings for less or no captcha for users with karma in other subs
  • Migrate to typescript
  • Mod subplebbit posts pages
    • Mod queue
    • Reports
    • Spam
    • Edited
    • Unmoderated
  • Report publication type (possibly just use CommentEdit, need to think of design)
  • Comment edit log
  • Comment vote log
  • Remove all typescript any and @ts-ignore
  • Security
    • Context isolated desktop only functions to use in the electron client
  • Algo for most anonymous padding size for publication encryption
  • Make createSigner a native function with a sign() method to protect privateKey against XSS
  • Sort by active
  • Pass acceptedChallengeTypes in Plebbit constructor
  • Make updateInterval and publishInterval public APIs
  • API for postTitleMinLength
  • Comment.archived and subplebbit.settings.archiveTimestampOlderThan, archiveLastReplyTimestampOlderThan
  • Spec for public gateway providers and public pubsub providers challenges
  • Retry infinity getComment, getSubplebbit, getPage with a global timeout in plebbitOptions
  • Comment.linkRemoved to remove only the link, like on 4chan
  • image galleries
  • video/audio playlists
  • frames like farcaster
  • "sage" option like 4chan to reply to a post without bumping it in the active sort. Unclear what this API should be called at the moment

plebbit-react

  • Moderator/about pages
    • Queues
      • Mod queue
      • Reports
      • Spam
      • Edited
      • Unmoderated
  • Create multisub page
  • Manage multisub page
  • Migrate to typescript
  • Comment edit log
  • Comment vote log
  • Integrated crypto wallet for desktop client
  • Encrypt private key PEM with password at rest (similar to MetaMask)
  • Interface to choose and sign NFT avatars so users don't have to go to Etherscan
  • Securely embed Twitter/Youtube/etc. (if possible to do securely)
  • Lazy resolve author addresses
  • Add markdown XSS examples in content mock
  • Make list of warnings and display them randomly in feeds, e.g. warn that subplebbits can be hacked and display scams. Maybe have a removable sticky with a list of common scams
  • Embed IPFS webui inside the electron app in the settings or profile page
  • Notification count in ( ) and post.title in meta title
  • Web of trust recommendations from authors, i.e. look at the authors I upvote and find the subs they post in and recommend them
  • Playlist with autoplay for video/audio

plebbit-react-hooks

  • Accounts actions
    • publishReport
    • saveComment
    • followComment
    • hideComment
    • followAuthor
    • limitAddress
  • Multisubs
    • usePlebbitDefaults()
    • useMultisub
    • useMultisubs
    • incorporate multisubs with useFeed()
    • createMultisub()
  • Define all types
  • Remove all typescript any and @ts-ignore
  • Progressive scrolling of replies in a post for posts with 100+ replies
  • Include accountComments and accountVotes when importing/exporting
  • Don't subscribe to all accountComments at once, queue new ones with higher priority, and old ones with lower priority
  • Add statuses to all hooks, like success, error, ready, progress, etc
  • Sort by active
  • Indicator to what HTML tag to use by analyzing comment.link (e.g. useCommentLinkTagName(commentLink?: string): 'a' | 'img' | 'video' | 'audio')
  • Implement useThumbnailUrl() on desktop and android
  • Hook for plebbit and IPFS stats
  • Block communities / comments / authors based on keyword / tag / language / etc

Misc

  • PLEB reward interface for best posts by plebbit team
  • ERC20 reward interface for best posts by subplebbit owners
  • PLEB DAO vote for curated NFT collection
  • PLEB DAO vote for curated multisubs
  • Moderator log (a Page of CommentEdit publications available both on Subplebbit.posts and Comment.replies)
  • Vote log (a Page of CommentEdit publications available both on Subplebbit.posts and Comment.replies)
  • Event/Meetup post type (to compete with Facebook and Meetup.com events)
  • Marketplace post type (to compete with Facebook marketplace, Shopify, Amazon)
  • Fundraiser post type (to compete with Gofundme and Kickstarter)
  • Sync accounts between multiple devices
  • Encrypt private key with password at rest (similar to MetaMask)
  • Publish Android APK on F-Droid
  • Make pubsub-provider and ipfs gateway more spam resistant using provider catchas on top of subplebbit captchas (as part of the protocol)
  • Share provider (a server that caches a plebbit page and hosts it on a random domain for 24h to easily share on other social medias)
  • 4chan interface
  • Discourse interface
  • Validate IPFS CIDs and content gotten from public IPFS gateways (because they can lie)
  • Update desktop version over IPFS
  • CLI client
  • JSON-RPC client
  • Build open source plebbit archiver
  • Integrate P2P DMs from another project
  • Integrate P2P live threads (chat) from another project
  • Integrate comment.link for livestreaming (with live thread)
  • Develop a tool to scrape a subreddit and copy its posts to Plebbit
  • Fallback to IPFS provider on desktop app when P2P not supported, like on cellular
  • Subplebbit uptime monitor and alerter
  • Video/audio player android/android tv client, similar to youtube, to play youtube, soundcloud, rumble, etc links directly, without ads and without visiting the original video site
  • ENS over IPFS, create a trie of all ENS domains, and resolve the new trie daily using IPNS, to resolve ENS over IPFS, without needing an ETH provider
  • Configurable search and recommendation RPC, several centralized providers could provide their API and the user can choose which API to use
  • Substack / patreon / medium like interface, to publish long text and paywalled content
  • Stackexchange like interface with LaTeX support
  • Centralized service to index/search plebbit, like warosu.org
  • Centralized service to run subs for others for free
  • vBulletin v3 client

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors