ipscend - Publish static web content to IPFS

by David Dias on 2015-11-27

ipscend is a new tool to help developers publish their static web content to IPFS and share it easily, while keeping history and more. It is heavily inspired by previous static web content publishing tools, like GitHub Pages and surge.

Features

Currently, ipscend offers a set of features, accessible through a CLI, and installable through npm (npm i -g ipscend), which enable a simple workflow for working in your Web page/app and publishing it to the IPFS network.

An ipscend.json object for a project with some published versions will look like:

$ cat ipscend.json
{
  "versions": [
    {
      "hash": "QmQhNMwk7fThpwRNUR3bStb1eA7aeFJaApZjDaQCnykowL",
      "timestamp": "2015-11-14T14:50:10.998Z",
      "snapshot": "QmNMqiKZG7gCsnaQFTqG3AUeVhA1n8byy974Yqn3qRGZcJ"
    },
    {
      "hash": "QmSAmgQPCWjbrpbYHZQ2rVkH7a9vavubG1Jzv5CjDWrUmt",
      "timestamp": "2015-11-14T14:51:00.860Z",
      "snapshot": "QmcCNrn72FuHWkXtpJuUYfbH87d61qa6PSagUbLiK6VfLJ"
    },
    {
      "hash": "QmVNgdUoBQHiBhSeDe2z8LttJaDZq7JZi17sR1SPnJmjMh",
      "timestamp": "2015-11-14T14:51:24.379Z",
      "snapshot": "QmP5NuGdozeWaZqEdY1zBpcupB6qQ66AWReqm4L2vJzt73"
    }
  ],
  "path": "src/public"
}

Workflow

In order to get started, all you need to do is initiate your ipscend in your web page/app project:

$ ipscend init
This utility will walk you through creating a ipscend.json file.
Path of your Web Application (project)? (public) src/public
$ cat ipscend.json
{
  "versions": [],
  "path": "src/public"
}

Once you are ready to publish, run the ipscend publish command:

$ ipscend publish
{ hash: 'QmVNgdUoBQHiBhSeDe2z8LttJaDZq7JZi17sR1SPnJmjMh',
  timestamp: Fri Nov 27 2015 10:23:37 GMT+0000 (WET) }
published src/public QmVNgdUoBQHiBhSeDe2z8LttJaDZq7JZi17sR1SPnJmjMh
$ cat ipscend.json
{
  "versions": [
    {
      "hash": "QmVNgdUoBQHiBhSeDe2z8LttJaDZq7JZi17sR1SPnJmjMh",
      "timestamp": "2015-11-27T16:23:37.971Z"
    }
  ],
  "path": "src/public"

Grab that hash and share it with your friends, by sending them a link to ipfs.io, appending “/ipfs/Hash” (e.g. https:/ipfs.io/ipfs/ QmVNgdUoBQHiBhSeDe2z8LttJaDZq7JZi17sR1SPnJmjMh).

If you want to use your awesome.domain.com to load your page from IPFS, you can check how to do it now at https://github.com/diasdavid/ipscend#use-ipfs-to-host-your-webpage-using-a-standard-domain-includes-cool-dns-trick.

Awesome (FUTURE)!

ipscend is still in its humble beginnings. Some of the ideas and plans to build in the future include being able to:

A big thank you to Andrés Gutgon who made the screenshot preview look really good