All Projects → cabal-club → Cabal Client

cabal-club / Cabal Client

Licence: gpl-3.0
interface for writing peer-to-peer distributed chat clients

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Cabal Client

Lbry Sdk
The LBRY SDK for building decentralized, censorship resistant, monetized, digital content apps.
Stars: ✭ 7,169 (+8750.62%)
Mutual labels:  p2p, decentralized
Vmesh
VMesh is a decentralized Layer 3 mesh router and protocol designed for open network interconnection.
Stars: ✭ 25 (-69.14%)
Mutual labels:  p2p, decentralized
Peergos
A p2p, secure file storage, social network and application protocol
Stars: ✭ 895 (+1004.94%)
Mutual labels:  p2p, decentralized
Orbit Db
Peer-to-Peer Databases for the Decentralized Web
Stars: ✭ 6,381 (+7777.78%)
Mutual labels:  p2p, decentralized
Spruce Network
Decentralized peer-to-peer mesh network.
Stars: ✭ 61 (-24.69%)
Mutual labels:  p2p, decentralized
Rust Ipfs
The InterPlanetary File System (IPFS), implemented in Rust.
Stars: ✭ 739 (+812.35%)
Mutual labels:  p2p, decentralized
Gester
scuttlebutt chat ui
Stars: ✭ 24 (-70.37%)
Mutual labels:  chat, p2p
Cabal Cli
Terminal client for Cabal, the p2p chat platform.
Stars: ✭ 479 (+491.36%)
Mutual labels:  p2p, decentralized
Dawn
global hosting, financial automation, server-less web components
Stars: ✭ 40 (-50.62%)
Mutual labels:  p2p, decentralized
Pulsarcast
A pub-sub system for the distributed web - my master thesis @ IST
Stars: ✭ 33 (-59.26%)
Mutual labels:  p2p, decentralized
Cabal Desktop
Desktop client for Cabal, the p2p/decentralized/local-first chat platform.
Stars: ✭ 632 (+680.25%)
Mutual labels:  chat, p2p
Conceal Core
Conceal Core - Daemon & Wallets (CLI)
Stars: ✭ 72 (-11.11%)
Mutual labels:  p2p, decentralized
Js Ipfs
IPFS implementation in JavaScript
Stars: ✭ 6,129 (+7466.67%)
Mutual labels:  p2p, decentralized
Beaker
An experimental peer-to-peer Web browser
Stars: ✭ 6,411 (+7814.81%)
Mutual labels:  p2p, decentralized
Awesome Anti Censorship
curated list of open-source anti-censorship tools
Stars: ✭ 521 (+543.21%)
Mutual labels:  p2p, decentralized
Radicle Alpha
A peer-to-peer stack for code collaboration
Stars: ✭ 921 (+1037.04%)
Mutual labels:  p2p, decentralized
Fluence
Peer-to-peer computing protocol and licensing system
Stars: ✭ 453 (+459.26%)
Mutual labels:  p2p, decentralized
Awesome Ethereum
⚡️ Awesome Ethereum Resources
Stars: ✭ 459 (+466.67%)
Mutual labels:  p2p, decentralized
Enigma P2p
The Enigma Worker Peer-to-Peer (P2P) package written in Node.js based on libp2p-js
Stars: ✭ 31 (-61.73%)
Mutual labels:  p2p, decentralized
Covenantsql
A decentralized, trusted, high performance, SQL database with blockchain features
Stars: ✭ 1,148 (+1317.28%)
Mutual labels:  p2p, decentralized

cabal-client

cabal-client is a new type of client library for cabal chat clients.

New chat clients can be implemented using only this library, without having to mess around with cabal-core anymore.

Some of its features:

  • consolidates logic common to all chat clients
  • leaving and joining of channels
  • virtual messages (such as status messages) and virtual channels (currently only the !status channel)
  • handling multiple cabal instances
  • receiving unread notifications and mentions for channels
  • resolving of DNS shortnames (cabal.chat) to cabal keys

For a couple of brief examples, see the examples/ directory.

Usage

See cabal-cli for an example client implementation.

Read the API documentation

var Client = require('cabal-client')

const client = new Client({
  config: {
    dbdir: '/tmp/cabals'
  }
})

client.createCabal()
  .then((cabal) => {
    // resolves when the cabal is ready, returns a CabalDetails instance
  })

Concepts

cabal-client has three core abstractions: Client, CabalDetails and ChannelDetails.

Client is the entrypoint. It has a list of CabalDetails (one details for each joined cabal) as well as an API for interacting with a cabal (getting a count of the new messages for a channel, the joined channels for the current peer etc).

CabalDetails is the instance that clients mostly operate on, as it encapsulates all information for a particular cabal. (joined channels, users in that channel, the topic). It also emits events.

When a change has happened, a CabalDetails instance will call this._emitUpdate(). When a client receives this event, they should update their state & rerender. (Check out how the cli does it.)

ChannelDetails encapsulates everything channels (mentions in that channel, status messages for the channel (like having called a command eg /names, when it was last read, if it's currently being viewed, if it's joined and so on). It also has a barebones implementation for virtual channels, which currently is only the !status channel.

Install

With npm installed, run

$ npm install cabal-client

License

AGPL-3.0-or-later

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].