Home

Awesome

<p align="center"> <a href="https://js.ipfs.io" title="JS IPFS"> <img src="https://ipfs.io/ipfs/Qme6KJdKcp85TYbLxuLV7oQzMiLremD7HMoXLZEmgo6Rnh/js-ipfs-sticker.png" alt="IPFS in JavaScript logo" width="244" /> </a> </p> <h3 align="center"><b>JS IPFS Examples</b></h3> <p align="center"> <b><i>Collection of js-ipfs examples</i></b> <br /> <br /> <img src="https://raw.githubusercontent.com/jlord/forkngo/gh-pages/badges/cobalt.png" width="200"> <br> <a href="https://github.com/ipfs/js-ipfs/tree/master/docs">Explore the docs</a> · <a href="https://github.com/ipfs-examples/js-ipfs-examples/issues">Report Bug</a> · <a href="https://github.com/ipfs-examples/js-ipfs-examples/issues">Request Feature/Example</a> </p>

Table of Contents

About The Project

Getting Started

Prerequisites

Make sure you have installed all of the following prerequisites on your development machine:

Installation

  1. Install yarn globally (needed to resolve dependencies correctly when working in a monorepo)
    npm install -g yarn
    
  2. Install NPM packages
    yarn install
    
  3. Run all the examples
    yarn run test
    

Structure

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

IPFS Tutorials at ProtoSchool

Explore ProtoSchool's IPFS tutorials for interactive js-ipfs coding challenges, deep dives into DWeb concepts like content addressing, and more.

Documentation

ipfs or ipfs-core?

The JavaScript implementation of IPFS is available as two packages, ipfs-core and ipfs.

ipfs-core contains the core api and is intended to be used to run an IPFS node as part of your application without the need to start external processes or manage API ports and servers.

ipfs is built on ipfs-core but also includes the CLI, an HTTP RPC API server and other tools to run ipfs as a background process so is a larger install with more dependencies.

If you are writing an application that needs to access the IPFS network, use ipfs-core. If you wish to use js-IPFS in a terminal window or run it as a server for use by multiple otherwise unrelated processes, use ipfs.

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the IPFS Examples Project (https://github.com/ipfs-examples/js-ipfs-examples)
  2. Create your Feature Branch (git checkout -b feature/amazing-feature)
  3. Commit your Changes (git commit -a -m 'feat: add some amazing feature')
  4. Push to the Branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Guidelines

Steps to follow after adding a new example

Create a repo

<p align="center"> <img src="./img/repo_details.png" width="300" alt="Repo Details"> </p> <p align="center"> <img src="./img/repo_settings.png" width="500" alt="Repo Settings"> </p>

Update js-ipfs to run tests against the repo

Open a PR to the ipfs/js-ipfs project that edits the .github/workflows/test.yml in order to make sure a js-ipfs release does not break your new example.

Search .github/workflows/test.yml for the test-examples section and add a block at the end of the example matrix key similar to:

- name: my super fun new example
  repo: https://github.com/ipfs-examples/js-ipfs-my-super-fun-new-example.git
  deps: ipfs-core@$PWD/packages/ipfs-core/dist,ipfs-http-client@$PWD/packages/ipfs-http-client/dist

The value of the deps key will vary depending on which modules from js-ipfs your example uses. Above we override the ipfs-core and ipfs-http-client modules, but your example may different deps.

Please see the existing setup in .github/workflows/test.yml for how to ensure you are overriding the correct modules.

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.