Git Product home page Git Product logo

Sockethub

Sockethub

A protocol gateway for the web.

Compliance CodeQL Maintainability Release

About

Sockethub is a translation layer for web applications to communicate with other protocols and services that are traditionally either inaccessible or impractical to use from in-browser JavaScript.

Using ActivityStream (AS) objects to pass messages to and from the web app, Sockethub acts as a smart proxy server/agent, which can maintain state, and connect to sockets, endpoints, and networks that would otherwise, be restricted from an application running in the browser.

Originally inspired as a sister project to RemoteStorage, and assisting in the development of unhosted and noBackend applications, Sockethub's functionality can also fit into a more traditional development stack, removing the need for custom code to handle various protocol specifics at the application layer.

Example uses of Sockethub are:

  • Writing and receiving messages (SMTP, IMAP, Nostr ...)

  • Chat (XMPP, IRC, SimpleX, ...)

  • Discovery (WebFinger, RDF(a), Link preview generation ...)

The architecture of Sockethub is extensible and supports easy implementation of additional 'platforms' to carry out tasks.

Docs

See the Sockethub wiki for documentation.

Features

We use ActivityStreams to map the various actions of a platform to a set of AS '@type's which identify the underlying action. For example, using the XMPP platform, a friend request/accept cycle would use the activity stream types 'request-friend', 'remove-friend', 'make-friend'.

Below is a list of platform contexts we're currently working on and their types, both the completed and not yet implemented ones. They are all implemented in Sockethub platforms (each in their own repository) and can be enabled/disabled in the config.json.

Platforms

Making a platform is as simple as creating a platform module that defines a schema and a series of functions that map to verbs. Take a look at some of our existing platforms for examples.

Run

To get up and running quickly, you only need the following commands:

pnpm install
pnpm dev

Dependencies

pnpm install

Build

pnpm build

Tests

pnpm test

Linter

pnpm lint:js

Or, to automatically fix linting errors:

pnpm lint:fix

Integration Tests

pnpm integration

Start

For development purposes, with examples enabled, run:

DEBUG=sockethub* pnpm dev

You should then be able to browse to http://localhost:10550 and try out the examples.

For production, with examples disabled.

DEBUG=sockethub* pnpm start

For more info on configuration options, see the Sockethub README section on environment variables.*

Packages

Credits

Project created and maintained by Nick Jennings

Logo design by Jan-Christoph Borchardt

Sponsored by NLNET

NLNET Logo

sockethub's Projects

sockethub doesnโ€™t have any public repositories yet.

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.