Skip to content
This repository has been archived by the owner on Apr 16, 2020. It is now read-only.

Latest commit

 

History

History
111 lines (67 loc) · 4.61 KB

README.md

File metadata and controls

111 lines (67 loc) · 4.61 KB

This repository has been archived!

This IPFS-related repository has been archived, and all issues are therefore frozen. If you want to ask a question or open/continue a discussion related to this repo, please visit the official IPFS forums.

We archive repos for one or more of the following reasons:

  • Code or content is unmaintained, and therefore might be broken
  • Content is outdated, and therefore may mislead readers
  • Code or content evolved into something else and/or has lived on in a different place
  • The repository or project is not active in general

Please note that in order to keep the primary IPFS GitHub org tidy, most archived repos are moved into the ipfs-inactive org.

If you feel this repo should not be archived (or portions of it should be moved to a non-archived repo), please reach out and let us know. Archiving can always be reversed if needed.


starlog

standard-readme compliant Dependency Status

logging the development of an interplanetary filesystem

WIP

Table of Contents

Background

Starlog is a way of publishing a blog-type feed, without requiring any specific servers to store it. This is accomplished through IPFS content addressable data structures.

Each user running the app for the first time, will be asked to initialize a feed. This is done by checking if the local ipns name points to an object with {"type": "starlog"} encoded as JSON in the data portion of the object.

Root object

The root starlog object has a data portion with the name of the log, and also a link to the actual data structure representation of the log.

It can optionally also contain a link to an image, used as the blog icon.

The log structure

A Finger Tree is used to store the log entries. This is an append-only version of this structure, requiring no balancing. This layout of data allows constant time access to the first and last elements of the feed.

See also krl/aolog.

Search

Search is implemented by taking the text of the entries in the leaves of the tree, and construct a bloom filter out of them.

When you search for one or more words, they are also made into a (very sparse) bloom filter. You can then check this against whole subtrees, and throw them away if they give a negative.

Install

WARNING, these special settings are for development only, and are concidered unsafe for normal ipfs usage.

Starlog uses both npm and Bower to install dependencies. If you do not have them, you'll need to install them first.

bower install
npm install

Usage

Make sure your ipfs daemon is running with API_ORIGIN set to 'http://localhost:8082', and using --unrestricted-api:

API_ORIGIN="http://localhost:8082" ipfs daemon --unrestricted-api

Leave that running, and then run the following in a new console window:

$ npm run serve
# open in localhost:8082

subcommands

  • npm run serve - Opens the app in your local browser on 8082, redirects /ipfs and /api calls to your ipfs daemon on port 5001.

  • npm run local - Packs up the app with vulcanize, adds it to ipfs, and opens the resulting hash in your local api gateway.

  • npm run gateway - Packs the app up and runs it from the ipfs.io gateway.

Contribute

Feel free to join in. All welcome. Open an issue!

This repository falls under the IPFS Code of Conduct.

License

MIT