GithubHelp home page GithubHelp logo

rubeniskov / cuser Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 0.0 16.2 MB

Distributed messaging service 🌐, with no database, no config and using IPFS layer to distribute the storage all over the universe ♾️.

License: MIT License

JavaScript 90.52% Makefile 0.49% TypeScript 8.49% Shell 0.42% Dockerfile 0.08%
ipfs cid conversation hash messaging service

cuser's Introduction

cuser logo

Chatting via Uncentralized Service with Endless Resources

Distributed messaging service 🌐, with no database, no config and using IPFS layer to distribute the storage all over the universe ♾️.

Status

testing release codecov patreon-donate github-sponsor paypal-sponsor

cuser logo

Motivation

Many times I've try to create a webpage where the users can publish their opinions, but it becomes a hard task when you have to prepare an entire ecosystem to store such data. If the information is public, why not distribute such content all over the internet?.

Here is where cuser comes out, taking the powerfull of IPFS, stores the comments using the DAG graph.

This allows create SPA's Single Page Aplications with capabilities of statefull websites, blogs, etc... and minimize the storing impact of your server.

  • Root CID represents the main article which is associated to a hash in IPFS, it can be created using the CID provider of IPFS if the article is not a IPFS distributed file.

Getting started

npm install -g cuser

Spam detection

IPFS manage the data in a fashion way, due the CID is generated using a checksum of the content data, so its really easy to track if the user is publishing the same content in many articles and restrict. A user can not publish repeated comments with the same content.

Restricted comments tree

A user can only replay the last comment, so a user can not replay on himself. This allows to make a conversation where the user only has the capability (if a mistake) to edit his last post until other user continues the conversation.

Removing / Editing comments

Even though IPFS is a permanet store due p2p distribution, if a user wants to remove a comment, can be done using hash tree which is manipulated at the server side allowing remove or replace a blocks.

Security

A user can only edits/remove his owns comments, this is a feature which the @cuser/server takes on. Checking the user token which is provided by the server itself adding this security layer for prevent users to change other users comments.

Diagram

Packages

List of packages currently in existence for cuser

name description version coverage downloads
Cuser
@cuser/cli command line interface npm-version codecov npm-downloads
@cuser/core Core ipfs wrapper npm-version codecov npm-downloads
@cuser/publisher backend publisher logic npm-version codecov npm-downloads
@cuser/reader messages reader from the ipfs transport layer npm-version codecov npm-downloads
@cuser/auth auth core utility npm-version codecov npm-downloads
@cuser/store store tree changes managment npm-version codecov npm-downloads
@cuser/crypto cuser crypto utilities npm-version codecov npm-downloads
@cuser/validator json schema validator npm-version codecov npm-downloads
@cuser/utils common utils used by cuser npm-version codecov npm-downloads
@cuser/client client logic for reading and publishing message using restfull transport npm-version codecov npm-downloads
@cuser/server http server with express npm-version codecov npm-downloads
Clients
Types
@cuser/proto typing, schemas and services based in protocol buffers npm-version codecov npm-downloads
Middlewares
@cuser/express-middleware-auth npm-version codecov npm-downloads
@cuser/express-middleware-rest npm-version codecov npm-downloads
@cuser/express-middleware-graphql npm-version codecov npm-downloads
Integrations
@cuser/react react ui components for visualize cuser npm-version codecov npm-downloads

Development

Being a workspaced based mono repo project, yarn >=1.5.0 is needed to allow local development

Installing dependencies

yarn install

Release

GITHUB_ACCESS_TOKEN=<access_token> npm run release {version_number}

cuser's People

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

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