Popularity
8.3
Stable
Activity
8.7
Declining
7,434
226
1,359

Code Quality Rank: L5
Programming language: JavaScript
License: GNU General Public License v3.0 or later
Tags: Mad Science     IPFS    
Latest version: v48.1.2

ipfs alternatives and similar modules

Based on the "Mad Science" category.
Alternatively, view ipfs alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of ipfs or a related project?

Add another 'Mad Science' Module

README

The JavaScript implementation of the IPFS protocol

Getting started

Table of Contents <!-- omit in toc -->

Getting Started <!-- omit in toc -->

Install as a CLI user

Installing ipfs globally will give you the jsipfs command which you can use to start a daemon running:

$ npm install -g ipfs
$ jsipfs daemon
Initializing IPFS daemon...
js-ipfs version: x.x.x
System version: x64/darwin
Node.js version: x.x.x
Swarm listening on /ip4/127.0
.... more output

You can then add a file:

$ jsipfs add ./hello-world.txt
added QmXXY5ZxbtuYj6DnfApLiGstzPN7fvSyigrRee3hDWPCaf hello-world.txt

Install as an application developer

If you do not need to run a command line daemon, use the ipfs-core package - it has all the features of ipfs but in a lighter package:

$ npm install ipfs-core

Then start a node in your app:

import * as IPFS from 'ipfs-core'

const ipfs = await IPFS.create()
const { cid } = await ipfs.add('Hello world')
console.info(cid)
// QmXXY5ZxbtuYj6DnfApLiGstzPN7fvSyigrRee3hDWPCaf

Documentation

  • Concepts
  • [Config](./docs/CONFIG.md)
  • [Core API](./docs/core-api)
  • Examples
  • [Development](./docs/DEVELOPMENT.md)

Structure

This project is broken into several modules, their purposes are:

  • [/packages/interface-ipfs-core](./packages/interface-ipfs-core) Tests to ensure adherence of an implementation to the spec
  • [/packages/ipfs](./packages/ipfs) An aggregator module that bundles the core implementation, the CLI, HTTP API server and daemon
  • [/packages/ipfs-cli](./packages/ipfs-cli) A CLI to the core implementation
  • [/packages/ipfs-core](./packages/ipfs-core) The core implementation
  • [/packages/ipfs-core-types](./packages/ipfs-core-types) Typescript definitions for the core API
  • [/packages/ipfs-core-utils](./packages/ipfs-core-utils) Helpers and utilities common to core and the HTTP RPC API client
  • [/packages/ipfs-daemon](./packages/ipfs-daemon) Run js-IPFS as a background daemon
  • [/packages/ipfs-grpc-client](./packages/ipfs-grpc-client) A gRPC client for js-IPFS
  • [/packages/ipfs-grpc-protocol](./packages/ipfs-grpc-protocol) Shared module between the gRPC client and server
  • [/packages/ipfs-grpc-server](./packages/ipfs-grpc-server) A gRPC-over-websockets server for js-IPFS
  • [/packages/ipfs-http-client](./packages/ipfs-http-client) A client for the RPC-over-HTTP API presented by both js-ipfs and go-ipfs
  • [/packages/ipfs-http-server](./packages/ipfs-http-server) JS implementation of the Kubo RPC HTTP API
  • [/packages/ipfs-http-gateway](./packages/ipfs-http-gateway) JS implementation of the IPFS HTTP Gateway
  • [/packages/ipfs-http-response](./packages/ipfs-http-response) Creates a HTTP response for a given IPFS Path
  • [/packages/ipfs-message-port-client](./packages/ipfs-message-port-client) A client for the RPC-over-message-port API presented by js-ipfs running in a shared worker
  • [/packages/ipfs-message-port-protocol](./packages/ipfs-message-port-protocol) Code shared by the message port client & server
  • [/packages/ipfs-message-port-server](./packages/ipfs-message-port-server) The server that receives requests from ipfs-message-port-client

Packages

List of the main packages that make up the IPFS ecosystem.

Package Version Deps CI/Travis Coverage Lead Maintainer
Files
[ipfs-unixfs](//github.com/ipfs/js-ipfs-unixfs) [npm](//github.com/ipfs/js-ipfs-unixfs/releases) Deps Travis CI codecov Alex Potsides
Repo
[ipfs-repo](//github.com/ipfs/js-ipfs-repo) [npm](//github.com/ipfs/js-ipfs-repo/releases) Deps Travis CI codecov Alex Potsides
[ipfs-repo-migrations](//github.com/ipfs/js-ipfs-repo-migrations) [npm](//github.com/ipfs/js-ipfs-repo-migrations/releases) Deps Travis CI codecov N/A
Exchange
[ipfs-bitswap](//github.com/ipfs/js-ipfs-bitswap) [npm](//github.com/ipfs/js-ipfs-bitswap/releases) Deps Travis CI codecov Dirk McCormick
IPNS
[ipns](//github.com/ipfs/js-ipns) [npm](//github.com/ipfs/js-ipns/releases) Deps Travis CI codecov Vasco Santos
Generics/Utils
[ipfs-utils](//github.com/ipfs/js-ipfs) [npm](//github.com/ipfs/js-ipfs/releases) Deps Travis CI codecov Hugo Dias
[ipfs-http-client](//github.com/ipfs/js-ipfs) [npm](//github.com/ipfs/js-ipfs/releases) Deps Travis CI codecov Alex Potsides
[ipfs-http-response](//github.com/ipfs/js-ipfs-http-response) [npm](//github.com/ipfs/js-ipfs-http-response/releases) Deps Travis CI codecov Vasco Santos
[ipfsd-ctl](//github.com/ipfs/js-ipfsd-ctl) [npm](//github.com/ipfs/js-ipfsd-ctl/releases) Deps Travis CI codecov Hugo Dias
[is-ipfs](//github.com/ipfs/is-ipfs) [npm](//github.com/ipfs/is-ipfs/releases) Deps Travis CI codecov Marcin Rataj
[aegir](//github.com/ipfs/aegir) [npm](//github.com/ipfs/aegir/releases) Deps Travis CI codecov Hugo Dias
libp2p
[libp2p](//github.com/libp2p/js-libp2p) [npm](//github.com/libp2p/js-libp2p/releases) Deps Travis CI codecov Jacob Heun
[peer-id](//github.com/libp2p/js-peer-id) [npm](//github.com/libp2p/js-peer-id/releases) Deps Travis CI codecov Vasco Santos
[libp2p-crypto](//github.com/libp2p/js-libp2p-crypto) [npm](//github.com/libp2p/js-libp2p-crypto/releases) Deps Travis CI codecov Jacob Heun
[libp2p-floodsub](//github.com/libp2p/js-libp2p-floodsub) [npm](//github.com/libp2p/js-libp2p-floodsub/releases) Deps Travis CI codecov Vasco Santos
[libp2p-gossipsub](//github.com/ChainSafe/gossipsub-js) [npm](//github.com/ChainSafe/gossipsub-js/releases) Deps Travis CI codecov Cayman Nava
[libp2p-kad-dht](//github.com/libp2p/js-libp2p-kad-dht) [npm](//github.com/libp2p/js-libp2p-kad-dht/releases) Deps Travis CI codecov Vasco Santos
[libp2p-mdns](//github.com/libp2p/js-libp2p-mdns) [npm](//github.com/libp2p/js-libp2p-mdns/releases) Deps Travis CI codecov Jacob Heun
[libp2p-bootstrap](//github.com/libp2p/js-libp2p-bootstrap) [npm](//github.com/libp2p/js-libp2p-bootstrap/releases) Deps Travis CI codecov Vasco Santos
[@chainsafe/libp2p-noise](//github.com/ChainSafe/js-libp2p-noise) [npm](//github.com/ChainSafe/js-libp2p-noise/releases) Deps Travis CI codecov N/A
[libp2p-tcp](//github.com/libp2p/js-libp2p-tcp) [npm](//github.com/libp2p/js-libp2p-tcp/releases) Deps Travis CI codecov Jacob Heun
[libp2p-webrtc-star](//github.com/libp2p/js-libp2p-webrtc-star) [npm](//github.com/libp2p/js-libp2p-webrtc-star/releases) Deps Travis CI codecov Vasco Santos
[libp2p-websockets](//github.com/libp2p/js-libp2p-websockets) [npm](//github.com/libp2p/js-libp2p-websockets/releases) Deps Travis CI codecov Jacob Heun
[libp2p-mplex](//github.com/libp2p/js-libp2p-mplex) [npm](//github.com/libp2p/js-libp2p-mplex/releases) Deps Travis CI codecov Vasco Santos
[libp2p-delegated-content-routing](//github.com/libp2p/js-libp2p-delegated-content-routing) [npm](//github.com/libp2p/js-libp2p-delegated-content-routing/releases) Deps Travis CI codecov Jacob Heun
[libp2p-delegated-peer-routing](//github.com/libp2p/js-libp2p-delegated-peer-routing) [npm](//github.com/libp2p/js-libp2p-delegated-peer-routing/releases) Deps Travis CI codecov Jacob Heun
IPLD
[@ipld/dag-pb](//github.com/ipld/js-dag-pb) [npm](//github.com/ipld/js-dag-pb/releases) Deps Travis CI codecov N/A
[@ipld/dag-cbor](//github.com/ipld/js-dag-cbor) [npm](//github.com/ipld/js-dag-cbor/releases) Deps Travis CI codecov N/A
Multiformats
[multiformats](//github.com/multiformats/js-multiformats) [npm](//github.com/multiformats/js-multiformats/releases) Deps Travis CI codecov N/A
[mafmt](//github.com/multiformats/js-mafmt) [npm](//github.com/multiformats/js-mafmt/releases) Deps Travis CI codecov Vasco Santos
[multiaddr](//github.com/multiformats/js-multiaddr) [npm](//github.com/multiformats/js-multiaddr/releases) Deps Travis CI codecov Jacob Heun

This table is generated using the module package-table with package-table --data=package-list.json.

Want to hack on IPFS?

The IPFS implementation in JavaScript needs your help! There are a few things you can do right now to help out:

Read the Code of Conduct and JavaScript Contributing Guidelines.

  • Check out existing issues The issue list has many that are marked as 'help wanted' or 'difficulty:easy' which make great starting points for development, many of which can be tackled with no prior IPFS knowledge
  • Look at the IPFS Roadmap This are the high priority items being worked on right now
  • Perform code reviews More eyes will help a. speed the project along b. ensure quality, and c. reduce possible future bugs.
  • Add tests. There can never be enough tests.

License

FOSSA Status


*Note that all licence references and agreements mentioned in the ipfs README section above are relevant to that project's source code only.