Skip to content

libp2p/docs

Repository files navigation

libp2p Documentation Portal

Made by icon. Project icon. Build status icon. PRs Welcome Discuss


Overview

libp2p is a modular framework that encapsulates an evolving set of specifications for peer-to-peer networking. What started as the networking component that enables IPFS turned into a general-purpose framework to deliver a modular, peer-to-peer networking stack of protocols that are transport agnostic, flexible, reusable, and easy to upgrade.

libp2p enables interoperability between applications, resilient applications, and advanced networking features like decentralized publish-subscribe or advanced data structures like distributed hash tables.

Contributing content

The documentation site contains several different kinds of content. We’d love ❤️ your help with any of it:

  1. Introductory overviews: If you spot a problem or have improvements, please post an issue or PR.

  2. Concept guides: Concept guides are intended to present a brief overview of libp2p-related concepts. They strive to answer:

    • What is this?
    • How does it relate to the rest of libp2p?
    • How can (or should?) you use it? (This can often vary by implementation
    • Where do you go to learn more?
    • What is the current state of affairs?

    See a list of concepts we need help with by checking the issues.

  3. Guides: Most examples currently live in other repositories, like js-libp2p examples. If you have thoughts on integrating them better, please file an issue. If you have feedback on individual examples or want to add a new one, please file an issue or pull request on the relevant repository. If you have ideas for guides or tutorials, they belong here! Please propose them in an issue here before creating a pull request.

  4. Reference material: The navbar includes all the reference material available for libp2p. Please see the issues in this repository for current activity around reference/API documentation.

  5. Community: If there are missing community links, feel free to file an issue or pull request,

This repository is also a website; we could use your help with design and technical features (interactive examples, better syntax highlighting, scripts to pull in content from other repositories, etc.) in addition to writing. To get a sense of what we could use help on, check the issues. If you decide to work on one, please post to the issue to let us know!

Before posting a pull request with your changes, please check our style guide and contributing guide.

Finally, let’s work together to keep this a respectful and friendly space. Please make sure to follow our official code of conduct.

Running locally

Prerequisites

To run the libp2p documentation site locally, you must have NPM installed. If you already have NPM installed, make sure you are running the latest version:

npm install npm@latest -g

Installation

Follow these steps to run a copy of this site on your local machine.

  1. Clone this repository:

    git clone https://github.com/libp2p/docs
  2. Navigate into the new folder and download the dependencies by running:

    cd docs
    npm install
  3. Build the project and serve the static files to Hugo with:

    npm run build
  4. Start the local Hugo's development server with:

    npm start
  5. Visit localhost:1313 to view the site.

  6. Press CTRL + c in the terminal to stop the local server.

Configuration guide

Static site generator

The libp2p documentation site uses Hugo as a static site generator, making it easy to serve and host the static files on IPFS. In particular, the site uses the Hugo Doks theme to present the libp2p documentation.

Automated deployments

When opening a pull request, CI scripts will run against your feature branch to test your changes.

The CI/CD production workflow builds on the master branch and deploys the documentation site on fleek. It reflects the latest commit on master and publishes at https://docs.libp2p.io.

Translation

Please stay tuned for the steps to translate the documentation.

Primary maintainers

  • @DannyS03: primary contact, project organization & technical writing
  • @mxinden: libp2p steward, primarily rust-libp2p
  • @marten-seemann: libp2p steward, primarily go-libp2p
  • @MarcoPolo: libp2p steward, primarily go-libp2p
  • @jennijuju: documentation management
  • @p-shahi: libp2p project management
  • @BigLep: interplanetary management and supervision

License

All software code is copyright (c) Protocol Labs, Inc. under the MIT/Apache-2 dual license. Other written documentation and content are copyright (c) Protocol Labs, Inc. under the Creative Commons Attribution-Share-Alike License.