# tiddlywiki-ipfs

> IPFS with TiddlyWiki

Latest version **0.4.0-beta-TW-v5.1.23** (published 2021-03-16) · GPL-3.0-or-later license · 0 weekly downloads

## Install

```sh
npm install tiddlywiki-ipfs
pnpm add tiddlywiki-ipfs
yarn add tiddlywiki-ipfs
bun add tiddlywiki-ipfs
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; large bundle; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.4.0-beta-TW-v5.1.23 |
| Published | 2021-03-16 |
| First published | 2021-03-16 |
| Weekly downloads | 0 |
| License | GPL-3.0-or-later |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=15.5.0 |
| Dependencies | 6 |
| Unpacked size | 53.3 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 57 |
| Author | Xavier Maysonnave |
| Maintainers | xmaysonnave |
| Keywords | ens, ipfs, tiddlywiki |

## Links

- npm: https://www.npmjs.com/package/tiddlywiki-ipfs
- Repository: https://github.com/xmaysonnave/tiddlywiki-ipfs
- Issues: https://github.com/xmaysonnave/tiddlywiki-ipfs/issues
- npm.io page: https://npm.io/package/tiddlywiki-ipfs

## Dependencies (6)

- [cids](https://npm.io/package/cids.md) 1.1.6
- [buffer](https://npm.io/package/buffer.md) ^6.0.3
- [filenamify](https://npm.io/package/filenamify.md) ^4.2.0
- [uint8arrays](https://npm.io/package/uint8arrays.md) ^2.1.3
- [ipfs-provider](https://npm.io/package/ipfs-provider.md) ^1.1.0
- [@multiformats/base-x](https://npm.io/package/@multiformats/base-x.md) ^4.0.1

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 0.4.0-beta-TW-v5.1.23 (latest) — 2021-03-16

## README

<h1 align="center">IPFS with TiddyWiki</h1>

This [TiddlyWiki](https://tiddlywiki.com/) plugin aims to help users, editors and developers to manage their wikis on [IPFS](https://ipfs.io).

<h1 align="center">
  <a rel="noopener noreferrer" target="_blank" href="https://bluelightav.eth.link">
    <img src="https://gateway.ipfs.io/ipfs/bafybeibi5ldguonidlwomjxwjehodpmypgex5qd2fe6f6yuka4dqvbzvpq" alt="Blue Light"/>
  </a>
</h1>

<p align="center">
  <a rel="noopener noreferrer" target="_blank" href="https://github.com/ContributorCovenant/contributor_covenant">
    <img alt="An ethical open source project" src="https://img.shields.io/badge/open-ethical-%234baaaa"/>
  </a>
  <a rel="noopener noreferrer" target="_blank" href="LICENSE">
    <img alt="License: GPL v3" src="https://img.shields.io/badge/License-GPLv3-blue.svg"/>
  </a>
  <a rel="noopener noreferrer" target="_blank" href="CODE_OF_CONDUCT.md">
    <img alt="Covenant" src="https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg"/>
  </a>
  <a rel="noopener noreferrer" target="_blank" href="https://github.com/prettier/prettier">
    <img alt="Prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square"/>
  </a>
</p>

<p align="center">
  <a rel="noopener noreferrer" target="_blank" href="https://app.fossa.com/projects/git%2Bgithub.com%2Fxmaysonnave%2Ftiddlywiki-ipfs?ref=badge_shield" alt="FOSSA Status">
    <img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2Fxmaysonnave%2Ftiddlywiki-ipfs.svg?type=shield"/>
  </a>
  <a rel="noopener noreferrer" target="_blank" href="https://travis-ci.com/xmaysonnave/tiddlywiki-ipfs">
    <img alt="TravisCI" src="https://travis-ci.com/xmaysonnave/tiddlywiki-ipfs.svg?branch=main"/>
  </a>
  <a rel="noopener noreferrer" target="_blank" href="https://snyk.io/test/github/xmaysonnave/tiddlywiki-ipfs">
    <img alt="Snyk" src="https://snyk.io/test/github/xmaysonnave/tiddlywiki-ipfs/badge.svg"/>
  </a>
</p>

<p align="center">
  <a rel="noopener noreferrer" target="_blank" href="https://dweb.link/ipns/k51qzi5uqu5dmj8zym08576inkibqy8apl49xg888d1x0q5vhk1lt2uj6sp2wl">
    <img alt="Available from IPFS" title="Available from IPFS" src="https://img.shields.io/badge/Hosted%20on-IPFS-65c2cb?&logo=ipfs"/>
  </a>
</p>

This plugin provides the following features:

- Store `TiddlyWiki`'s and attachments on [IPFS](https://ipfs.io/)
- Access `TiddlyWiki`'s and attachments from [IPFS](https://ipfs.io/)
- Compress `TiddlyWiki`'s and attachments
- Encrypt, Decrypt and Sign `TiddlyWiki`'s and attachments
  - Standford
  - Ethereum
  - [SHA-3](https://en.wikipedia.org/wiki/SHA-3)
- Import and Export
- Publish and Manage IPNS Names and Keys
- [Metamask](https://metamask.io) Ethereum wallets support
- Publish to [ENS](https://ens.domains)
- Share over [IPFS](https://ipfs.io/) `TiddlyWiki`'s [Tiddlers](https://tiddlywiki.com/#Tiddlers) and attachments

According to [Wikipedia](https://en.wikipedia.org/wiki/TiddlyWiki):

`TiddlyWiki is a personal wiki and a non-linear notebook for organising and sharing complex information. It is an open-source single page application wiki in the form of a single HTML file that includes CSS, JavaScript, and the content. It is designed to be easy to customize and re-shape depending on application. It facilitates re-use of content by dividing it into small pieces called Tiddlers.`

`IPFS with TiddlyWiki` enhances TiddlyWiki as a decentralized application (Đapps) who uses distributed computing systems:

- [IPFS](https://ipfs.io) is a decentralized storage network
- [Ethereum Smart Contracts](https://ethereum.org/learn/#smart-contracts) are decentralized applications

`IPFS with TiddlyWiki` has the following [ĐApp](https://en.wikipedia.org/wiki/Decentralized_application) characteristics:

- Open Source
- Decentralized
- Unhackable
- Unstoppable

## Using `IPFS with TiddlyWiki`

### Latest [![Available from IPFS](/core/attachment/_ipfs_icons_ipfs.png)](https://dweb.link/ipns/k51qzi5uqu5dmj8zym08576inkibqy8apl49xg888d1x0q5vhk1lt2uj6sp2wl/latest-build 'Available from IPFS') [![Available from GitHub](/core/attachment/_ipfs_icons_github.png)](https://github.com/xmaysonnave/tiddlywiki-ipfs/tree/main/production 'Available from GitHub')

#### `TiddlyWikis` editions

- **bluelightav.eth** [![Available from IPFS](/core/attachment/_ipfs_icons_ipfs.png)](https://dweb.link/ipns/k51qzi5uqu5dmj8zym08576inkibqy8apl49xg888d1x0q5vhk1lt2uj6sp2wl/latest-build/editions/bluelightav 'Available from IPFS') [![Available from GitHub](/core/attachment/_ipfs_icons_github.png)](https://github.com/xmaysonnave/tiddlywiki-ipfs/tree/main/production/editions/bluelightav 'Available from GitHub')
- **empty** [![empty](/core/attachment/_ipfs_icons_ipfs.png)](https://dweb.link/ipns/k51qzi5uqu5dmj8zym08576inkibqy8apl49xg888d1x0q5vhk1lt2uj6sp2wl/latest-build/editions/empty 'Available from IPFS') [![Available from GitHub](/core/attachment/_ipfs_icons_github.png)](https://github.com/xmaysonnave/tiddlywiki-ipfs/tree/main/production/editions/empty 'Available from GitHub')
- **tidlywiki.com** [![Available from IPFS](/core/attachment/_ipfs_icons_ipfs.png)](https://dweb.link/ipns/k51qzi5uqu5dmj8zym08576inkibqy8apl49xg888d1x0q5vhk1lt2uj6sp2wl/latest-build/editions/tiddlywiki 'Available from IPFS') [![Available from GitHub](/core/attachment/_ipfs_icons_github.png)](https://github.com/xmaysonnave/tiddlywiki-ipfs/tree/main/production/editions/tiddlywiki 'Available from GitHub')

#### `IPFS with TiddlyWiki` boot, documentation, library modules and plugin

- **\$:/boot/boot.js** [![Available from IPFS](/core/attachment/_ipfs_icons_ipfs.png)](https://dweb.link/ipns/k51qzi5uqu5dmj8zym08576inkibqy8apl49xg888d1x0q5vhk1lt2uj6sp2wl/latest-build/tiddlywiki-ipfs/boot 'Available from IPFS') [![Available from GitHub](/core/attachment/_ipfs_icons_github.png)](https://github.com/xmaysonnave/tiddlywiki-ipfs/tree/main/production/tiddlywiki-ipfs/boot 'Available from GitHub')
- **\$:/ipfs/documentation** [![Available from IPFS](/core/attachment/_ipfs_icons_ipfs.png)](https://dweb.link/ipns/k51qzi5uqu5dmj8zym08576inkibqy8apl49xg888d1x0q5vhk1lt2uj6sp2wl/latest-build/tiddlywiki-ipfs/documentation 'Available from IPFS') [![Available from GitHub](/core/attachment/_ipfs_icons_github.png)](https://github.com/xmaysonnave/tiddlywiki-ipfs/tree/main/production/tiddlywiki-ipfs/documentation 'Available from GitHub')
- **\$:/ipfs/library/modules** [![Available from IPFS](/core/attachment/_ipfs_icons_ipfs.png)](https://dweb.link/ipns/k51qzi5uqu5dmj8zym08576inkibqy8apl49xg888d1x0q5vhk1lt2uj6sp2wl/latest-build/tiddlywiki-ipfs/library 'Available from IPFS') [![Available from GitHub](/core/attachment/_ipfs_icons_github.png)](https://github.com/xmaysonnave/tiddlywiki-ipfs/tree/main/production/tiddlywiki-ipfs/library 'Available from GitHub')
- **\$:/plugins/ipfs** [![Available from IPFS](/core/attachment/_ipfs_icons_ipfs.png)](https://dweb.link/ipns/k51qzi5uqu5dmj8zym08576inkibqy8apl49xg888d1x0q5vhk1lt2uj6sp2wl/latest-build/tiddlywiki-ipfs/plugin 'Available from IPFS') [![Available from GitHub](/core/attachment/_ipfs_icons_github.png)](https://github.com/xmaysonnave/tiddlywiki-ipfs/tree/main/production/tiddlywiki-ipfs/plugin 'Available from GitHub')

### Release

- **\$:/ipfs/documentation** [![Resolve with ENS](/core/attachment/_ipfs_icons_ens.png)](https://bluelightav.eth/#IPFS%20Documentation 'Resolve with ENS') [![Resolve with DNS Link](/core/attachment/_ipfs_icons_dns.png)](https://bluelightav.eth.link/#IPFS%20Documentation 'Resolve with DNS Link')
- **\$:/plugins/ipfs** [![Resolve with ENS](/core/attachment/_ipfs_icons_ens.png)](https://bluelightav.eth/#%24%3A%2Fplugins%2Fipfs 'Resolve with ENS') [![Resolve with DNS Link](/core/attachment/_ipfs_icons_dns.png)](https://bluelightav.eth.link/#%24%3A%2Fplugins%2Fipfs 'Resolve with DNS Link')
- **bluelightav.eth** [![Resolve with ENS](/core/attachment/_ipfs_icons_ens.png)](https://bluelightav.eth 'Resolve with ENS') [![Resolve with DNS Link](/core/attachment/_ipfs_icons_dns.png)](https://bluelightav.eth.link 'Resolve with DNS Link')

### Recommended Plugins

- [Locator](https://bimlas.gitlab.io/tw5-locator/#%24%3A%2Fplugins%2Fbimlas%2Flocator)
- [Relink](https://flibbles.github.io/tw5-relink/#%24%3A%2Fplugins%2Fflibbles%2Frelink)

### Getting Started

<a name="getting-started"/>

These instructions will get you a copy of the project up and running on your local machine.

### Prerequisites

<a name="pre-requisites"/>

### Users

<a name="users"/>

#### Getting running `IPFS with TiddlyWiki` in your browser

<a name="running-browser"/>

Starting from the file system, Follow the developer instructions [Running TiddlyWiki](#developer-running)

To resolve **.eth** domains you need an [Ethereum](https://ethereum.org/) capable browser:

- Use [Metamask](https://metamask.io) as a browser extension or as an Android mobile application

To update [ENS](https://app.ens.domains/) domains you need an Ethereum wallet:

- Use [Metamask](https://metamask.io) as a browser extension or as an Android mobile application

To run a local IPFS node, you need:

- [IPFS Companion](https://ipfs-shipyard.github.io/ipfs-companion/)
- [IPFS Desktop](https://github.com/ipfs-shipyard/ipfs-desktop)
- [IPFS Server](https://github.com/ipfs/go-ipfs)

More informations about IPFS:

- [IPFS](https://ipfs.io/)

Remarks:

**_EthDNS and EthLink_** [![EthDNS and EthLink](/core/attachment/_ipfs_icons_dns.png)](https://eth.link) are able to resolve [bluelightav.eth.link](https://bluelightav.eth.link) to IPFS.

#### Run a local IPFS node with IPFS Desktop

<a name="ipfs-desktop"/>

- [IPFS Desktop](https://github.com/ipfs-shipyard/ipfs-desktop)

According to the `ipfs-desktop` [README.md](https://github.com/ipfs-shipyard/ipfs-desktop/blob/master/README.md), `IPFS Desktop allows you to run your IPFS Node on your machine without having to bother with command line tools`.

#### Use a browser extension with IPFS Companion

<a name="ipfs-companion"/>

- [IPFS Companion for Chrome](https://chrome.google.com/webstore/detail/ipfs-companion/nibjojkomfdiaoajekhjakgkdhaomnch)
- [IPFS Companion for Firefox](https://addons.mozilla.org/fr/firefox/addon/ipfs-companion/)

According to the `ipfs-companion` [README.md](https://github.com/ipfs-shipyard/ipfs-companion/blob/master/README.md), `This add-on enables everyone to access IPFS resources the way they were meant: from locally running IPFS node :-)`.

#### Supported ENS Ethereum Networks

<a name="ens-ethereum-network"/>

- `Goerli`: Ethereum Test Network (PoA)
- `Mainnet`: Ethereum Main Network
- `Rinkeby`: Ethereum Test Network (PoA)
- `Ropsten`: Ethereum Test Network (PoW)

## Developer

<a name="developer"/>

Setup a nodejs environment to build tiddlywiki instances bundled with `IPFS with TiddlyWiki`.

### Environment

<a name="developer-environment"/>

- [Babelify](https://www.npmjs.com/package/babelify)
- [Eruda](https://github.com/liriliri/eruda)
- [Ethers](https://github.com/ethers-io/ethers.js/)
- [IPFS Provider](https://github.com/ipfs-shipyard/ipfs-provider)
- [IPFS HTTP Client](https://github.com/ipfs/js-ipfs/tree/master/packages/ipfs-http-client)
- [Mocha](https://mochajs.org/)
- [Node.js](https://nodejs.org/)
- [Snyk](https://github.com/snyk)
- [TiddyWiki5](https://www.npmjs.com/package/tiddlywiki)
- [Travis CI](https://travis-ci.com/)

#### Node.js

<a name="developer-nodejs"/>

##### Resource

<a name="developer-nodejs-resource"/>

jsDelivr, A free CDN for Open Source:
<https://www.jsdelivr.com/>

Node Documentation:
<https://nodejs.org/en/docs/>

Npm Repository:
<https://www.npmjs.com/>

SriHash:
<https://www.srihash.org/>

Yarn Documentation:
<https://classic.yarnpkg.com/en/docs/>

##### Install

<a name="developer-nodejs-install"/>

On Debian Buster we don't use the default Debian repositories or the Nodesource repositories.
We use [nvm](https://github.com/nvm-sh/nvm).

##### Setup

<a name="developer-nodejs-setup"/>

Follow the [nvm installation and update tutorial](https://github.com/nvm-sh/nvm#installation-and-update):

Current installation and update script:

```text
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
```

or

```text
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
```

As we are using [zsh](https://github.com/robbyrussell/oh-my-zsh/wiki/Installing-ZSH), here is an excerpt of our .zshrc

```text
# nvm initialization!
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

# place this after nvm initialization!
autoload -U add-zsh-hook
load-nvmrc() {
  local node_version="$(nvm version)"
  local nvmrc_path="$(nvm_find_nvmrc)"
  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$node_version" ]; then
      nvm use
    fi
  elif [ "$node_version" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc
```

Check:

```text
nvm -v
0.37.2
```

This repository contains a [.nvmrc](https://github.com/xmaysonnave/tiddlywiki-ipfs/tree/main/.nvmrc) who describes the node version to use.

```text
v15
```

Install the recommended `node` version.

```text
nvm install v15
```

Check:

```text
node -v
v15.7.0
```

Install `yarn`.
<https://classic.yarnpkg.com/en/docs/install/#debian-stable>

On Debian setup the `yarn` repository:

```text
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
```

As we are using `nvm`, we avoid the `node` installation:

```text
sudo apt update
sudo apt install --no-install-recommends yarn
```

Or Upgrade `yarn`.

```text
yarn set version latest
```

Check your environment:

```text
yarn -v
1.22.10
```

#### Repository install

<a name="developer-repository-install"/>

Clone this repository in a local folder:

```text
git clone https://github.com/xmaysonnave/tiddlywiki-ipfs --depth 1
```

Change directory:

```text
cd tiddlywiki-ipfs
```

Install dependencies, [Node.js](https://nodejs.org/) should be installed and setup:

```text
yarn
```

#### Building TiddlyWiki

<a name="developer-building-tiddlywiki"/>

The repository contains several scripts who build TiddWiki instances bundled with `IPFS with TiddlyWiki`.

The [package.json](https://github.com/xmaysonnave/tiddlywiki-ipfs/tree/main/package.json) references several options:

- build
- build-bluelightav
- build-tiddlywiki-ipfs
- download
- precommit
- prepare
- prettier-standard
- publish
- publish-build
- semver
- snyk-monitor
- snyk-protect
- test
- testc
- testw
- tiddlywiki-ipfs
- upload
- upload-node

Use the `build` script to build `IPFS with TiddlyWiki`.

```text
yarn build
```

Use the `test` script to run the tests.

```text
yarn test
```

This project is integrated with Travis CI:

- <https://travis-ci.com/github/xmaysonnave/tiddlywiki-ipfs>

## Contributor Covenant Code of Conduct

<a name="contributing"/>

Please read [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) for details on our code of conduct.

## Authors

<a name="authors"/>

- **Xavier Maysonnave** - _Initial work_ - [IPFS with TiddlyWiki](https://github.com/xmaysonnave/tiddlywiki-ipfs)

See also the list of [contributors](https://github.com/xmaysonnave/tiddlywiki-ipfs/contributors) who participated in this project.

## License

<a name="license"/>

This project is licensed under the [GPL-3.0-or-later](https://spdx.org/licenses/GPL-3.0-or-later.html) - see the [LICENSE](LICENSE) file for details.

## Acknowledgments

<a name="acknowledgment"/>

- Hat tip to anyone who support this project
- Inspiration

---
_Source: https://npm.io/package/tiddlywiki-ipfs · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
