peer-pad icon indicating copy to clipboard operation
peer-pad copied to clipboard

📝 Online editor providing collaborative editing in really real-time using CRDTs and IPFS.

PeerPad logo

PeerPad is a decentralized editor that allows concurrent writing of text. Besides making live changes to a given document, it allows read-only nodes to follow the changes in real-time. It also allows you to publish a self-contained snapshot of the document to IPFS.

Test it live at https://peerpad.net or https://ipfs.io/ipns/peerpad.net

Docs: Security, Technology

🔓 PeerPad is experimental software. It hasn't been audited, and as such shouldn't be used to create or share sensitive information.

Table of Contents

  • Install
  • Usage
  • Build
  • Testing
  • Deploy
  • Contribute
  • License

Lead Maintainer

Jim Pick

Install

With the following installed:

  • git
  • node >= 8
  • npm >= 6

Clone the repo and install the dependencies from npm.

git clone https://github.com/ipfs-shipyard/peer-pad.git
cd peer-pad
npm install

Usage

For local development with hot code reloading

npm start

Then open http://localhost:3000 in your browser.

Build

To build into the build dir, run:

npm run build

Testing

To run the unit tests:

npm test

To run the end-to-end smoke test that runs PeerPad in multiple, headless Chrome instances run:

npm run build
npm run test:e2e:ci

The e2e tests expect the site to already be running, so the test:e2e:ci will fire up an http-server before running the tests in test/e2e.

If you're running the dev server on the default port (via npm start) then you can run the e2e tests without starting a server with:

npm run test:e2e

By default the Chrome instances run headless, so you won't see the robots clicking around in the browser. To debug the tests and see what's going pass DEBUG=true as an env var.

DEBUG=true npm run test:e2e

To run the e2e test against a deployed version, just pass the url as an env var

URL=https://peerpad.net npm run test:e2e

To run the e2e load tests:

npm run test:e2e:load

Deploy

You can self-host your own PeerPad. For that, run npm run build and deploy the build directory to a web-server

See docs/DEPLOY.md more info on how PeerPad is deployed to https://peerpad.net

Some dependencies (like webcrypto) require that you're serving under HTTPS — unless it's localhost...

Contribute

The PeerPad is a work in progress. As such, there's a few things you can do right now to help out:

  • Check out the existing issues!
  • 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.

Read the PeerPad contributing.md for details on the latest development flow.

Want to hack on PeerPad?

License

MIT