Skip to content
This repository has been archived by the owner on Feb 6, 2024. It is now read-only.


Repository files navigation


Papyrs - Blog on web3

GitHub release Follow Papyrs on Twitter Chat on Discord

⚠️ Deprecated

Papyrs is still available for use, but new user sign-ups have been disabled. The platform is no longer being actively developed or maintained.


Papyrs is an open-source, privacy-first, decentralized blogging platform that lives 100% on chain. Papyrs runs on the Internet Computer, the world's first blockchain that runs at web speed and serves content on the web.

Links & Projects

Here are some useful links:

  • See the HACKING document to run locally the app or fetch published blog posts.
  • Reach out to us on Discord.
  • Wanna help? Check out the CONTRIBUTING guidelines.
  • Have a look at the LICENSE for information about licensing and limitation.

This repo is the web editor of Papyrs. It can be used as a standalone app but uses other projects we are developing to be fully deployed:

  • IC: canisters and sign-in providers
  • CDN: libraries and assets we are using across the platform
  • Unsplash-proxy: a proxy we have to use to query Unsplash
  • Stylo: another kind of rich text editor
  • Kit: the templates for the blog posts we deploy for the users
  • DeckDeckGo: various web components, utilities and the providers for the offline persistence and synchronization of the data

Other handy tools:

  • Papyrs to markdown: Chrome markdown-plugin that can be used to convert a blog post to markdown

Architecture overview

All programs on the Internet Computer are Wasm modules, or canisters (canister smart contracts). The Papyrs web editor is deployed on the IC through Fleek.

The web editor persists blog post data in the browser in indexedDB. This means that Papyrs can be used by anyone without any authentication. Blog posts can be loaded from and exported to the file system.

Architecture with offline data only

However, if users are interested in storing their data "in the cloud" automatically and sharing their blog posts online, authentication with Internet Identity will be required. Once authenticated each user gets two canisters:

  • a private "data" canister that contains raw blog post data, used in the editor, and
  • a "storage" canister that holds and publicly serves blog post and asset data (html, images, js, css, etc).

Architecture with online canisters