Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: update README structure #2115

Merged
merged 2 commits into from
Oct 5, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
145 changes: 72 additions & 73 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,76 +1,3 @@
# js-libp2p-monorepo <!-- omit in toc -->

[![libp2p.io](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)
[![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io)
[![codecov](https://img.shields.io/codecov/c/github/libp2p/js-libp2p.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p)
[![CI](https://img.shields.io/github/actions/workflow/status/libp2p/js-libp2p/main.yml?branch=master\&style=flat-square)](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amaster)

> JavaScript implementation of libp2p, a modular peer to peer network stack

## Table of contents <!-- omit in toc -->

- [Structure](#structure)
- [Project status](#project-status)
- [Background](#background)
- [Roadmap](#roadmap)
- [Install](#install)
- [Usage](#usage)
- [Configuration](#configuration)
- [Limits](#limits)
- [Getting started](#getting-started)
- [Tutorials and Examples](#tutorials-and-examples)
- [Development](#development)
- [Tests](#tests)
- [Run unit tests](#run-unit-tests)
- [Packages](#packages)
- [Used by](#used-by)
- [Contribute](#contribute)
- [API Docs](#api-docs)
- [License](#license)
- [Contribution](#contribution)

## Structure

- [`/doc`](./doc) Docs for libp2p
- [`/examples/auto-relay`](./examples/auto-relay) Shows how to configure relayed connections
- [`/examples/chat`](./examples/chat) An example chat app using libp2p
- [`/examples/connection-encryption`](./examples/connection-encryption) An example of how to configure connection encrypters
- [`/examples/delegated-routing`](./examples/delegated-routing) How to configure libp2p delegated routers
- [`/examples/discovery-mechanisms`](./examples/discovery-mechanisms) How to configure peer discovery mechanisms
- [`/examples/echo`](./examples/echo) An example echo app
- [`/examples/peer-and-content-routing`](./examples/peer-and-content-routing) How to use peer and content routing
- [`/examples/pnet`](./examples/pnet) How to configure a libp2p private network
- [`/examples/protocol-and-stream-muxing`](./examples/protocol-and-stream-muxing) How to use multiplex protocols streams
- [`/examples/pubsub`](./examples/pubsub) An example using libp2p pubsub
- [`/examples/transports`](./examples/transports) An example using different types of libp2p transport
- [`/interop`](./interop) Multidimension Interop Test
- [`/packages/crypto`](./packages/crypto) Crypto primitives for libp2p
- [`/packages/interface`](./packages/interface) The interface implemented by a libp2p node
- [`/packages/interface-compliance-tests`](./packages/interface-compliance-tests) Compliance tests for JS libp2p interfaces
- [`/packages/interface-internal`](./packages/interface-internal) Interfaces implemented by internal libp2p components
- [`/packages/kad-dht`](./packages/kad-dht) JavaScript implementation of the Kad-DHT for libp2p
- [`/packages/keychain`](./packages/keychain) Key management and cryptographically protected messages
- [`/packages/libp2p`](./packages/libp2p) JavaScript implementation of libp2p, a modular peer to peer network stack
- [`/packages/logger`](./packages/logger) A logging component for use in js-libp2p modules
- [`/packages/metrics-prometheus`](./packages/metrics-prometheus) Collect libp2p metrics for scraping by Prometheus or Graphana
- [`/packages/multistream-select`](./packages/multistream-select) JavaScript implementation of multistream-select
- [`/packages/peer-collections`](./packages/peer-collections) Stores values against a peer id
- [`/packages/peer-discovery-bootstrap`](./packages/peer-discovery-bootstrap) Peer discovery via a list of bootstrap peers
- [`/packages/peer-discovery-mdns`](./packages/peer-discovery-mdns) Node.js libp2p mDNS discovery implementation for peer discovery
- [`/packages/peer-id`](./packages/peer-id) Implementation of @libp2p/interface-peer-id
- [`/packages/peer-id-factory`](./packages/peer-id-factory) Create PeerId instances
- [`/packages/peer-record`](./packages/peer-record) Used to transfer signed peer data across the network
- [`/packages/peer-store`](./packages/peer-store) Stores information about peers libp2p knows on the network
- [`/packages/protocol-perf`](./packages/protocol-perf) Implementation of Perf Protocol
- [`/packages/pubsub`](./packages/pubsub) libp2p pubsub base class
- [`/packages/pubsub-floodsub`](./packages/pubsub-floodsub) libp2p-floodsub, also known as pubsub-flood or just dumbsub, this implementation of pubsub focused on delivering an API for Publish/Subscribe, but with no CastTree Forming (it just floods the network).
- [`/packages/stream-multiplexer-mplex`](./packages/stream-multiplexer-mplex) JavaScript implementation of <https://github.com/libp2p/mplex>
- [`/packages/transport-tcp`](./packages/transport-tcp) A TCP transport for libp2p
- [`/packages/transport-webrtc`](./packages/transport-webrtc) A libp2p transport using WebRTC connections
- [`/packages/transport-websockets`](./packages/transport-websockets) JavaScript implementation of the WebSockets module that libp2p uses and that implements the interface-transport spec
- [`/packages/transport-webtransport`](./packages/transport-webtransport) JavaScript implementation of the WebTransport module that libp2p uses and that implements the interface-transport spec
- [`/packages/utils`](./packages/utils) Package to aggregate shared logic and dependencies for the libp2p ecosystem

<h1 align="center">
<a href="https://libp2p.io"><img width="250" src="https://github.com/libp2p/js-libp2p/blob/master/img/libp2p.png?raw=true" alt="libp2p hex logo" /></a>
</h1>
Expand Down Expand Up @@ -99,6 +26,16 @@
<br>
</p>

# js-libp2p-monorepo <!-- omit in toc -->

[![libp2p.io](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)
[![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io)
[![codecov](https://img.shields.io/codecov/c/github/libp2p/js-libp2p.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p)
[![CI](https://img.shields.io/github/actions/workflow/status/libp2p/js-libp2p/main.yml?branch=master\&style=flat-square)](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amaster)

> JavaScript implementation of libp2p, a modular peer to peer network stack


### Project status

This project has been used in production for years in Ethereum, IPFS, and more. It is actively maintained by multiple organizations and continues to be improved! The API might change, but we strictly follow semver.
Expand All @@ -110,6 +47,26 @@ If you are looking for the documentation of the latest release, you can view the

**Want to update libp2p in your project?** Check our [migrations folder](./doc/migrations).

## Table of contents <!-- omit in toc -->

- [Background](#background)
- [Roadmap](#roadmap)
- [Install](#install)
- [Usage](#usage)
- [Configuration](#configuration)
- [Limits](#limits)
- [Getting started](#getting-started)
- [Tutorials and Examples](#tutorials-and-examples)
- [Structure](#structure)
- [Development](#development)
- [Tests](#tests)
- [Run unit tests](#run-unit-tests)
- [Packages](#packages)
- [Used by](#used-by)
- [Contribute](#contribute)
- [API Docs](#api-docs)
- [License](#license)

## Background

libp2p is the product of a long and arduous quest to understand the evolution of the Internet networking stack. In order to build P2P applications, devs have long had to make custom ad-hoc solutions to fit their needs, sometimes making some hard assumptions about their runtimes and the state of the network at the time of their development. Today, looking back more than 20 years, we see a clear pattern in the types of mechanisms built around the Internet Protocol, IP, which can be found throughout many layers of the OSI layer system, libp2p distils these mechanisms into flat categories and defines clear interfaces that once exposed, enable other protocols and applications to use and swap them, enabling upgradability and adaptability for the runtime, without breaking the API.
Expand Down Expand Up @@ -159,6 +116,48 @@ If you are starting your journey with `js-libp2p`, read the [GETTING\_STARTED.md

You can find multiple examples on the [examples folder](./examples) that will guide you through using libp2p for several scenarios.

## Structure

- [`/doc`](./doc) Docs for libp2p
- [`/examples/auto-relay`](./examples/auto-relay) Shows how to configure relayed connections
- [`/examples/chat`](./examples/chat) An example chat app using libp2p
- [`/examples/connection-encryption`](./examples/connection-encryption) An example of how to configure connection encrypters
- [`/examples/delegated-routing`](./examples/delegated-routing) How to configure libp2p delegated routers
- [`/examples/discovery-mechanisms`](./examples/discovery-mechanisms) How to configure peer discovery mechanisms
- [`/examples/echo`](./examples/echo) An example echo app
- [`/examples/peer-and-content-routing`](./examples/peer-and-content-routing) How to use peer and content routing
- [`/examples/pnet`](./examples/pnet) How to configure a libp2p private network
- [`/examples/protocol-and-stream-muxing`](./examples/protocol-and-stream-muxing) How to use multiplex protocols streams
- [`/examples/pubsub`](./examples/pubsub) An example using libp2p pubsub
- [`/examples/transports`](./examples/transports) An example using different types of libp2p transport
- [`/interop`](./interop) Multidimension Interop Test
- [`/packages/crypto`](./packages/crypto) Crypto primitives for libp2p
- [`/packages/interface`](./packages/interface) The interface implemented by a libp2p node
- [`/packages/interface-compliance-tests`](./packages/interface-compliance-tests) Compliance tests for JS libp2p interfaces
- [`/packages/interface-internal`](./packages/interface-internal) Interfaces implemented by internal libp2p components
- [`/packages/kad-dht`](./packages/kad-dht) JavaScript implementation of the Kad-DHT for libp2p
- [`/packages/keychain`](./packages/keychain) Key management and cryptographically protected messages
- [`/packages/libp2p`](./packages/libp2p) JavaScript implementation of libp2p, a modular peer to peer network stack
- [`/packages/logger`](./packages/logger) A logging component for use in js-libp2p modules
- [`/packages/metrics-prometheus`](./packages/metrics-prometheus) Collect libp2p metrics for scraping by Prometheus or Graphana
- [`/packages/multistream-select`](./packages/multistream-select) JavaScript implementation of multistream-select
- [`/packages/peer-collections`](./packages/peer-collections) Stores values against a peer id
- [`/packages/peer-discovery-bootstrap`](./packages/peer-discovery-bootstrap) Peer discovery via a list of bootstrap peers
- [`/packages/peer-discovery-mdns`](./packages/peer-discovery-mdns) Node.js libp2p mDNS discovery implementation for peer discovery
- [`/packages/peer-id`](./packages/peer-id) Implementation of @libp2p/interface-peer-id
- [`/packages/peer-id-factory`](./packages/peer-id-factory) Create PeerId instances
- [`/packages/peer-record`](./packages/peer-record) Used to transfer signed peer data across the network
- [`/packages/peer-store`](./packages/peer-store) Stores information about peers libp2p knows on the network
- [`/packages/protocol-perf`](./packages/protocol-perf) Implementation of Perf Protocol
- [`/packages/pubsub`](./packages/pubsub) libp2p pubsub base class
- [`/packages/pubsub-floodsub`](./packages/pubsub-floodsub) libp2p-floodsub, also known as pubsub-flood or just dumbsub, this implementation of pubsub focused on delivering an API for Publish/Subscribe, but with no CastTree Forming (it just floods the network).
- [`/packages/stream-multiplexer-mplex`](./packages/stream-multiplexer-mplex) JavaScript implementation of <https://github.com/libp2p/mplex>
- [`/packages/transport-tcp`](./packages/transport-tcp) A TCP transport for libp2p
- [`/packages/transport-webrtc`](./packages/transport-webrtc) A libp2p transport using WebRTC connections
- [`/packages/transport-websockets`](./packages/transport-websockets) JavaScript implementation of the WebSockets module that libp2p uses and that implements the interface-transport spec
- [`/packages/transport-webtransport`](./packages/transport-webtransport) JavaScript implementation of the WebTransport module that libp2p uses and that implements the interface-transport spec
- [`/packages/utils`](./packages/utils) Package to aggregate shared logic and dependencies for the libp2p ecosystem

## Development

**Clone and install dependencies:**
Expand Down
Loading