{{ substr .hash 0 10 }}...{{ substr .hash $length 5 }}
+
diff --git a/.circleci/config.yml b/.circleci/config.yml
new file mode 100644
index 0000000..727ad0f
--- /dev/null
+++ b/.circleci/config.yml
@@ -0,0 +1,66 @@
+version: 2
+jobs:
+ awesome:
+ docker:
+ - image: circleci/ruby:2.4.2-jessie-node
+ steps:
+ - checkout
+ - run: gem install awesome_bot
+ - run: awesome_bot --allow-redirect --allow-dupe --allow-ssl -w ipfs.io README.md
+
+ build:
+ docker:
+ - image: circleci/node:10.15.1-browsers
+ environment:
+ NO_SANDBOX: true
+ steps:
+ - checkout
+ - run: npm install
+ - run: npm run build
+ - persist_to_workspace:
+ root: .
+ paths:
+ - public
+
+ deploy:
+ docker:
+ - image: olizilla/ipfs-dns-deploy
+ environment:
+ DOMAIN: awesome.ipfs.io
+ BUILD_DIR: public
+ steps:
+ - attach_workspace:
+ at: /tmp/workspace
+ - run:
+ name: Deploy website to IPFS
+ command: |
+ pin_name="$DOMAIN build $CIRCLE_BUILD_NUMBER"
+
+ hash=$(pin-to-cluster.sh "$pin_name" /tmp/workspace/$BUILD_DIR)
+
+ echo "Website added to IPFS: https://ipfs.io/ipfs/$hash"
+
+ if [ "$CIRCLE_BRANCH" == "master" ] ; then
+ dnslink-dnsimple -d $DOMAIN -r _dnslink -l /ipfs/$hash
+ fi
+
+workflows:
+ version: 2
+ check-links:
+ triggers:
+ - schedule:
+ cron: "0 0 * * *"
+ filters:
+ branches:
+ only:
+ - master
+ jobs:
+ - awesome
+ build-deploy:
+ jobs:
+ - awesome
+ - build
+ - deploy:
+ context: ipfs-dns-deploy
+ requires:
+ - build
diff --git a/.gitignore b/.gitignore
index 6789b40..3a106de 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,9 +27,7 @@ stroke*.svg
public
dist
/src/resources
-/src/data
/src/content
-/src/layouts/partials/indexes
/src/static/fonts
/src/static/app.css
/src/static/app.js
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index cd3108b..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-language: ruby
-rvm:
- - 2.2
-before_script:
- - gem install awesome_bot
-script:
- - awesome_bot --allow-redirect --allow-dupe --allow-ssl README.md
diff --git a/Makefile b/Makefile
deleted file mode 100644
index b9a954c..0000000
--- a/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-build:
- npm --version
- node --version
- npm install
- npm run lint
- npm run build
\ No newline at end of file
diff --git a/README.md b/README.md
index 3312cc5..a1a8f18 100644
--- a/README.md
+++ b/README.md
@@ -28,6 +28,7 @@ Everyone is welcome to submit their new awesome-ipfs item. In order to add an el
## Apps
+- [2read](https://2read.net/) - Convert article in current tab to readable form and upload it to writable node(s). [Source](https://github.com/meehow/2read)
- [3Box](https://3box.io) - Create and manage your Ethereum Profile, and your personal data. Use the 3box-js library to integrate profiles into your dapp. [Source](https://github.com/uport-project/3box)
- [a js video player](https://github.com/ipfs/website/tree/master/content/docs/examples/webapps/play) - [Demo](https://ipfs.io/ipfs/QmVc6zuAneKJzicnJpfrqCH9gSy6bz54JhcypfJYhGUFQu/play#/ipfs/QmTKZgRNwDNZwHtJSjCp6r5FYefzpULfy37JvMt9DwvXs)
- [a markdown renderer](https://github.com/ipfs/website/tree/master/content/docs/examples/webapps/markdown-viewer) - [Demo](https://ipfs.io/ipfs/QmSrCRJmzE4zE1nAfWPbzVfanKQNBhp7ZWmMnEdbiLvYNh/mdown#/ipfs/QmfQ75DjAxYzxMP2hdm6o4wFwZS5t7uorEZ2pX9AKXEg2u)
@@ -35,7 +36,6 @@ Everyone is welcome to submit their new awesome-ipfs item. In order to add an el
- [akasha](http://akasha.world/) - A Next-Generation Social Media Network, powered by Ethereum and embedded into IPFS.
- [Alexandria](http://www.alexandria.io/learn/#integrated-technologies) - Decentralized content publishing / monetization platform.
- [Arbore](http://arbo.re) - A friend-to-friend file-sharing app build on top of IPFS.
-- [Arpadyne](https://arpadyne.computes.com) - The New Internet - DNS powered by OrbitDB. Content delivered via IPFS.
- [Autonomica "IPFS Social Proof"](https://github.com/IBM/ipfs-social-proof) - Autonomica is a Keybase-like Dapp for creating an identity and proving this identity via published social media and web proofs.
- [beets](https://github.com/beetbox/beets) - Beets has a plugin which allows for easy sharing of music libraries using IPFS
- [Blokaly](https://github.com/blokaly) - A badge issuing, sharing and display platform based on IPFS.
@@ -47,12 +47,12 @@ Everyone is welcome to submit their new awesome-ipfs item. In order to add an el
- [digx](https://www.dgx.io/) - Digix is an asset-tokenisation platform built on Ethereum and IPFS.
- [dtube](https://d.tube) - Distributed video sharing with steem.it intergrations, using ipfs for backend storage.
- [enzypt.io](https://enzypt.io/) - A website to buy and sell files through Ethereum and IPFS. [Source](https://github.com/flex-dapps/enzypt)
+- [Eternum](https://www.eternum.io/) - Paid pinning service with an easy-to-use API.
- [Ethlance](http://ethlance.com) - First completely decentralised job market platform built on Ethereum and IPFS. [Source](https://github.com/madvas/ethlance)
-- [FileNation](https://filenation.io/) - The simplest way to send your files around the world using IPFS.
- [git-ipfs-rehost](https://github.com/whyrusleeping/git-ipfs-rehost) - A script to rehost your git repos in ipfs.
- [Global Upload](https://globalupload.io/) - File transportation service for IPFS, upload files to the future of distributed web.
- [gogo.tattoo](http://gogo.tattoo) - Gogo Tattoo Project uses IPFS, DLTs and other modern technologies to offer tattoo artists and wearers an unbreakable lifetime record of their portfolios. gogo.tattoo app already has a feature to share works directly to IPFS.
-- [Gorilla REPL viewer](https://github.com/keorn/ipfs-gorilla-repl) - Gorilla is a rich REPL for Clojure in the notebook style. [Demo](https://ipfs.io/ipfs/QmRNUauWDvZFkAp1Bw3kAode3jT8aH2vx7LYzbS7H6R3Mg/view.html?path=/ipfs/QmbRdyLXiFWrKc5hW1NbvpUxF9tLovWCPgiz4BDhjD9k3j)
+- [Gorilla REPL viewer](https://github.com/keorn/ipfs-gorilla-repl) - Gorilla is a rich REPL for Clojure in the notebook style.
- [Hardbin](https://github.com/jes/hardbin) - Hardbin is an encrypted pastebin, with the decryption key passed in the URL fragment
- [hasteIPFS](https://ipfs.io/ipns/bin.ipfs.ovh/) - IPFS based code bin. (Read only for now)
- [HydrusNetwork](https://github.com/hydrusnetwork/hydrus) - A booru-style media tagging application with a multitude of features, recently added basic ipfs support.
@@ -65,12 +65,12 @@ Everyone is welcome to submit their new awesome-ipfs item. In order to add an el
- [IPFS Event Drop](https://github.com/travisperson/ipfs-event-drops) - An app that allows for improved visualization of ipfs events.
- [IPFS ID and Public Key QR Codes Demo](https://ipfs.io/ipfs/zdj7Whr8X3zah99TSuyPjENaERcBW9C7B36EaCb1DEZ5pbbL9/) - A demo app that uses windows.ipfs to show you a QR Code of your IPNS Link and of your Public Key. [Source](https://github.com/ipfs-shipyard/demo-ipfs-id-qr-codes)
- [ipfs-md-wiki](https://github.com/daijiale/ipfs-md-wiki) - Build your wiki system base on ipfs and markdown.
-- [ipfs-search](http://ipfs-search.com) - Search engine for files and directories on IPFS.
+- [ipfs-search](https://ipfs-search.com) - Searching the universe since 2016.
+Sniffs the DHT gossip and indexes file and directory hashes. Metadata and search API's available. [Source](https://github.com/ipfs-search/ipfs-search)
- [ipfs-share](https://github.com/rameshvarun/ipfs-share) - Pastebin/Image host/File sharing application
- [ipfs.ink](https://ipfs.ink) - Publish and render markdown essays to and from ipfs. [Source](https://github.com/kpcyrd/ipfs.ink)
- [ipfs.pics](https://github.com/ipfspics/ipfspics-server) - Upload and share pics.
- [IPFSBin](https://github.com/victorbjelkholm/ipfsbin) - Pastebin clone build.
-- [IPFSStore](https://ipfsstore.it) - Pinning paid with Steem
- [killcord](https://killcord.io/) - A censorship resistant deadman's switch [Source](https://github.com/nomasters/killcord)
- [markup.rocks](https://ipfs.io/ipfs/QmWPgJnUGLB1LPh9KMG9LEN4LVu5e17TwkEtcmTWdNn9V6/#/ipfs/QmfQ75DjAxYzxMP2hdm6o4wFwZS5t7uorEZ2pX9AKXEg2u) - Pandoc-based markup editor/previewer/converter, ported to IPFS. [Source](https://github.com/davidar/markup.rocks)
- [NodeFort.io](https://www.nodefort.io) - Web-based IPFS node hosting service.
@@ -86,9 +86,9 @@ Everyone is welcome to submit their new awesome-ipfs item. In order to add an el
- [Playback](https://mafintosh.github.io/playback/) - IPFS playback support. This allows casting a video in IPFS to a Chromecast.
- [PubSub Chat Demo](https://ipfs.io/ipfs/QmWZ3u5S7RjFXKfW6dSZhj7CozcvpqJxm48RYMmKkWcmNQ/) - A ~76KB demo chat app that uses window.ipfs, provided by the IPFS Companion web extension [Source](https://github.com/tableflip/ipfs-pubsub-chat-example)
- [PushToTalk](http://timothy.hobbs.cz/push-to-talk/index.html) - Push to Talk lets you edit audio essays and publish them with IPFS.
-- [qri](https://qri.io) - Dataset creation, collaboration, and discovery on the distributed web. [Source](https://github.com/qri-io/qri)
+- [qri](https://qri.io) - Dataset verion control, discovery and collaboration tools (free, open-source). [Source](https://github.com/qri-io/qri)
- [Request Network](https://request.network/) - Decentralized network for financial transactions. [Source](https://github.com/RequestNetwork/requestNetwork)
-- [TallyLab](https://tallylab.com/) - Local-first, end-to-end encrypted diary app for capturing, analyzing, and sharing data about any and everything.
+- [TallyLab](https://tallylab.com/) - Local-first, end-to-end encrypted data diary app for capturing, analyzing, and sharing data about any and everything.
- [Temporal](https://github.com/RTradeLtd/Temporal) - Temporal is an easy to use API and platform for integrating IPFS and other distributed/decentralized storage technologies into enterprise applications
- [Textile Photos](https://www.textile.photos) - Textile Photos is a secure, mobile digital wallet for your photos. [Source](https://github.com/textileio/textile-mobile)
- [ToDo List Demo](https://ipfs.io/ipfs/QmfFaH6dGibQ5JwEdsujeHBzsmHUsFRB5kU9P8nzPyzMv2/) - A ToDo List demo app that uses windows.ipfs. [Source](https://github.com/ipfs-shipyard/demo-ipfs-todo)
@@ -103,16 +103,15 @@ Everyone is welcome to submit their new awesome-ipfs item. In order to add an el
- 2017-08-21: [Understanding the IPFS White Paper part 2](https://decentralized.blog/understanding-the-ipfs-white-paper-part-2.html)
- 2017-08-10: [Understanding the IPFS White Paper part 1](https://decentralized.blog/understanding-the-ipfs-white-paper-part-1.html)
- 2017-06-13: [Decentralized & Distributed Edge Computing Comes to Computes.io](https://blog.computes.io/decentralized-distributed-edge-computing-comes-to-computes-io-396aa062bc85)
+- [Downloading nodejs versions with nvm/n over IPFS](https://ipfs.io/ipfs/QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/example#/ipfs/QmUx363UFtgiQqkHHsPK3TSDmwoALDo2hrbMWbcxjH2vFc)
- 2017-05-05: [Decentralized indexes for public genomic data](https://github.com/luizirber/2017-recomb)
- 2017-03-31: [Using IPFS for IoT Communications](https://medium.com/@chrismatthieu/using-ipfs-for-iot-communications-b49c2139783a)
- 2016-09-12: [IPFS: The Internet Democratised](https://medium.com/@tonywillenberg/web-3-0-a-truly-democratised-internet-f4b06cb4077b)
- 2016-05-20: [Changelog Podcast](https://changelog.com/204/)
-- 2015-11-01: [Eris + IPFS](https://monax.io/blog/2015/11/01/eris-and-ipfs/)
- 2015-09-18: [The InterPlanetary File System Wants to Create a Permanent Web](http://motherboard.vice.com/read/the-interplanetary-file-system-wants-to-create-a-permanent-web)
- 2015-09-13: [Introduction to IPFS](http://whatdoesthequantsay.com/2015/09/13/ipfs-introduction-by-example)
- 2015-09-10: [First Steps Toward Implementing Distributed Permanent Web With IPFS](https://hacked.com/first-steps-toward-implementing-distributed-permanent-web-ipfs/)
- 2015-09-08: [HTTP is obsolete. It's time for the distributed, permanent web](https://ipfs.io/ipfs/QmNhFJjGcMPqpuYfxL62VVB9528NXqDNMFXiqN5bgFYiZ1/its-time-for-the-permanent-web.html)
-- [Downloading nodejs versions with nvm/n over IPFS](https://ipfs.io/ipfs/QmTkzDwWqPbnAh5YiV5VwcTLnGdwSNsNTn2aDxdXBFca7D/example#/ipfs/QmUx363UFtgiQqkHHsPK3TSDmwoALDo2hrbMWbcxjH2vFc)
## Datasets
@@ -120,16 +119,15 @@ Everyone is welcome to submit their new awesome-ipfs item. In order to add an el
- [IETF RFC Archive](https://ipfs.io/ipfs/QmNvTjdqEPjZVWCvRWsFJA1vK7TTw1g9JP6we1WBJTRADM) [Source](https://github.com/ipfs/archives/issues/18)
- [MDSConnect](https://ipfs.io/ipfs/QmcvfB6pAqUfTnuAK8zFKVxbdhopnBPveJrDcy1JAA7HX5) [Source](https://github.com/ipfs/archives/issues/152)
- [Old Internet Files](https://ipfs.io/ipfs/QmbsZEvJE8EU51HCUHQg2aem9JNFmFHdva3tGVYutdCXHp) [Source](https://github.com/ipfs/archives/issues/176)
-- [Presidental Daily Briefs](https://ipfs.io/ipfs/Qme6epvZDj3vzHcFKdF1nZhbixjw8Bn4imGcKnbUyBJL89) [Source](https://github.com/ipfs/archives/issues/23)
- [World Wide Web History Project](https://ipfs.io/ipfs/QmRTSA1UFHSx3z7taNRwUVM8AjB2EQwKvyZu3BfJg9QRtZ) [Source](https://github.com/ipfs/archives/issues/159)
-- [XKCD](https://ipfs.io/ipfs/Qmb8wsGZNXt5VXZh1pEmYynjB6Euqpq3HYyeAdw2vScTkQ) [Source](https://github.com/ipfs/archives/issues/21)
+- [XKCD](https://ipfs.io/ipns/xkcd.hacdias.com) [Source](https://github.com/ipfs/archives/issues/21)
- [yarchive.net](https://ipfs.io/ipfs/QmdA5WkDNALetBn4iFeSepHjdLGJdxPBwZyY47ir1bZGAK) [Source](https://github.com/ipfs/archives/issues/76)
## Tools
- [Blockwatch](https://ipfs.io/ipfs/QmdikpwcyeBuGaVzWzSzPuqvBfTGD8jPAVydcCjYHsBUxo/index.html) - Monitor the current block number of the Ethereum blockchain, and set alerts (stored locally using PouchDB in your browser) for when certain block heights are passed. [Source](https://github.com/MidnightLightning/ethereum-blockwatch)
- [cachewarmer](https://github.com/BrendanBenshoof/cachewarmer) - Donate ipfs gateways to cache other people's content
-- [dillo-ipfs](https://ipfs.io/ipns/12D3KooWBG1fsFRF4ykpidXVNVnbon5KLfv67pkkGeFstrwftVVb/) - IPFS integration for the Dillo web browser. [Source](https://git.scuttlebot.io/%25C35b%2BMlZ%2Fy5TT1e7SG66eNKEIdX5DRl9PRUxbhvO89k%3D.sha256)
+- [dillo-ipfs](https://git.scuttlebot.io/%25C35b%2BMlZ%2Fy5TT1e7SG66eNKEIdX5DRl9PRUxbhvO89k%3D.sha256) - IPFS integration for the Dillo web browser.
- [gatsby-plugin-ipfs](https://github.com/moxystudio/gatsby-plugin-ipfs) - Adds support for deploying Gatsby websites to IPFS by ensuring that assets are relative.
- [git-remote-ipfs](https://github.com/cryptix/git-remote-ipfs) - push/pull repositories from/to IPFS
- [http2ipfs](https://github.com/jbenet/http2ipfs-web) - This is a simple webtool to add URLs to an IPFS node.
@@ -152,7 +150,9 @@ Everyone is welcome to submit their new awesome-ipfs item. In order to add an el
- [IPRedirect](https://github.com/JayBrown/IPRedirect) - Browser userscript for redirecting IPFS/IPNS addresses to your local gateway. This should work on any browser that hasn't had an extension written for it yet and has support for userscripts.
- [ipscend](https://github.com/diasdavid/ipscend) - Tool for hosting web apps and static websites in IPFS
- [pinbot](https://github.com/whyrusleeping/pinbot) - Pin content via IRC
+- [Public gateway status checker](https://ipfs.fooock.com/) - Web app to check public states of IPFS gateways, including latency and gateway writable state. [Source](https://github.com/fooock/ipfs-gateway-checker)
- [Siderus Orion](https://orion.siderus.io) - Easy to use IPFS desktop client for macOS, Windows and Linux [Source](https://github.com/Siderus/Orion)
+- [Sweet IPFS](https://github.com/RHazDev/Sweet-IPFS) - Full node for Android
## Videos
diff --git a/ci/Jenkinsfile b/ci/Jenkinsfile
deleted file mode 100644
index ef1e8bc..0000000
--- a/ci/Jenkinsfile
+++ /dev/null
@@ -1,4 +0,0 @@
-website([
- website: 'awesome.ipfs.io',
- record: '_dnslink'
-])
diff --git a/data/apps.yaml b/data/apps.yaml
index f70e732..2037c75 100644
--- a/data/apps.yaml
+++ b/data/apps.yaml
@@ -3,6 +3,13 @@ color: aqua
icon: stroke_marketing
description: Applications built with IPFS or with functionality that uses IPFS.
content:
+ - title: 2read
+ website: https://2read.net/
+ source: https://github.com/meehow/2read
+ picture: /images/2read.svg
+ description: >
+ Convert article in current tab to readable form and upload it
+ to writable node(s).
- title: killcord
website: https://killcord.io/
source: https://github.com/nomasters/killcord
@@ -66,6 +73,11 @@ content:
description: >
Distributed video sharing with steem.it intergrations, using ipfs for
backend storage.
+ - title: Eternum
+ website: https://www.eternum.io/
+ picture: /images/eternum.png
+ description: >
+ Paid pinning service with an easy-to-use API.
- title: Ethlance
website: http://ethlance.com
source: https://github.com/madvas/ethlance
@@ -116,9 +128,12 @@ content:
description: >
Publish and render markdown essays to and from ipfs.
- title: ipfs-search
- website: http://ipfs-search.com
+ website: https://ipfs-search.com
+ source: https://github.com/ipfs-search/ipfs-search
description: >
- Search engine for files and directories on IPFS.
+ Searching the universe since 2016.
+
+ Sniffs the DHT gossip and indexes file and directory hashes. Metadata and search API's available.
- title: ipfs-share
source: https://github.com/rameshvarun/ipfs-share
description: >
@@ -131,10 +146,6 @@ content:
source: https://github.com/victorbjelkholm/ipfsbin
description: >
Pastebin clone build.
- - title: IPFSStore
- website: https://ipfsstore.it
- description: >
- Pinning paid with Steem
- title: markup.rocks
website: https://ipfs.io/ipfs/QmWPgJnUGLB1LPh9KMG9LEN4LVu5e17TwkEtcmTWdNn9V6/#/ipfs/QmfQ75DjAxYzxMP2hdm6o4wFwZS5t7uorEZ2pX9AKXEg2u
source: https://github.com/davidar/markup.rocks
@@ -152,10 +163,6 @@ content:
picture: /images/Partyshare_Logo.png
description: >
A simple file sharing desktop app.
- - title: FileNation
- website: https://filenation.io/
- description: >
- The simplest way to send your files around the world using IPFS.
- title: Playback
source: https://mafintosh.github.io/playback/
description: >
@@ -168,7 +175,7 @@ content:
website: https://qri.io
source: https://github.com/qri-io/qri
description: >
- Dataset creation, collaboration, and discovery on the distributed web.
+ Dataset verion control, discovery and collaboration tools (free, open-source).
- title: ujo
website: http://ujomusic.com/
description: >
@@ -199,7 +206,6 @@ content:
IPFS based code bin. (Read only for now)
- title: Gorilla REPL viewer
source: https://github.com/keorn/ipfs-gorilla-repl
- demo: https://ipfs.io/ipfs/QmRNUauWDvZFkAp1Bw3kAode3jT8aH2vx7LYzbS7H6R3Mg/view.html?path=/ipfs/QmbRdyLXiFWrKc5hW1NbvpUxF9tLovWCPgiz4BDhjD9k3j
description: >
Gorilla is a rich REPL for Clojure in the notebook style.
- title: a markdown renderer
@@ -211,15 +217,11 @@ content:
- title: a qr-code renderer
source: https://github.com/ipfs/website/tree/master/content/docs/examples/webapps/qr-render
demo: https://ipfs.io/ipfs/QmccqhJg5wm5kNjAP4k4HrYxoqaXUGNuotDUqfvYBx8jrR/qr#enter%20text%20here
- - title: Arpadyne
- website: https://arpadyne.computes.com
- description: >
- The New Internet - DNS powered by OrbitDB. Content delivered via IPFS.
- title: TallyLab
website: https://tallylab.com/
picture: /images/tallylab.jpg
description: >
- Local-first, end-to-end encrypted diary app for capturing, analyzing, and sharing data about any and everything.
+ Local-first, end-to-end encrypted data diary app for capturing, analyzing, and sharing data about any and everything.
- title: Temporal
source: https://github.com/RTradeLtd/Temporal
description: >
diff --git a/data/articles.yaml b/data/articles.yaml
index 661b589..d219960 100644
--- a/data/articles.yaml
+++ b/data/articles.yaml
@@ -24,9 +24,6 @@ content:
- title: The InterPlanetary File System Wants to Create a Permanent Web
date: '2015-09-18'
website: http://motherboard.vice.com/read/the-interplanetary-file-system-wants-to-create-a-permanent-web
- - title: Eris + IPFS
- date: '2015-11-01'
- website: https://monax.io/blog/2015/11/01/eris-and-ipfs/
- title: HTTP is obsolete. It's time for the distributed, permanent web
date: '2015-09-08'
website: https://ipfs.io/ipfs/QmNhFJjGcMPqpuYfxL62VVB9528NXqDNMFXiqN5bgFYiZ1/its-time-for-the-permanent-web.html
diff --git a/data/datasets.yml b/data/datasets.yml
index 5f2c775..4cd0474 100644
--- a/data/datasets.yml
+++ b/data/datasets.yml
@@ -8,18 +8,12 @@ content:
website: https://ipfs.io/ipfs/QmNvTjdqEPjZVWCvRWsFJA1vK7TTw1g9JP6we1WBJTRADM
source: https://github.com/ipfs/archives/issues/18
size: 500MB
- - title: Presidental Daily Briefs
- hash: /ipfs/Qme6epvZDj3vzHcFKdF1nZhbixjw8Bn4imGcKnbUyBJL89
- website: https://ipfs.io/ipfs/Qme6epvZDj3vzHcFKdF1nZhbixjw8Bn4imGcKnbUyBJL89
- source: https://github.com/ipfs/archives/issues/23
- description:
- size: 480MB
- title: XKCD
- hash: /ipfs/Qmb8wsGZNXt5VXZh1pEmYynjB6Euqpq3HYyeAdw2vScTkQ
- website: https://ipfs.io/ipfs/Qmb8wsGZNXt5VXZh1pEmYynjB6Euqpq3HYyeAdw2vScTkQ
+ hash: /ipns/xkcd.hacdias.com
+ website: https://ipfs.io/ipns/xkcd.hacdias.com
source: https://github.com/ipfs/archives/issues/21
description:
- size: 122MB
+ size: 241MB
- title: Old Internet Files
hash: /ipfs/QmbsZEvJE8EU51HCUHQg2aem9JNFmFHdva3tGVYutdCXHp
website: https://ipfs.io/ipfs/QmbsZEvJE8EU51HCUHQg2aem9JNFmFHdva3tGVYutdCXHp
diff --git a/data/tools.yaml b/data/tools.yaml
index df16037..32b134f 100644
--- a/data/tools.yaml
+++ b/data/tools.yaml
@@ -3,6 +3,9 @@ color: yellow
icon: stroke_code
description: Tools built on the top of IPFS.
content:
+- title: Sweet IPFS
+ source: https://github.com/RHazDev/Sweet-IPFS
+ description: Full node for Android
- title: cachewarmer
source: https://github.com/BrendanBenshoof/cachewarmer
description: Donate ipfs gateways to cache other people's content
@@ -11,7 +14,7 @@ content:
description: Adds support for deploying Gatsby websites to IPFS by ensuring that assets are relative.
- title: dillo-ipfs
source: https://git.scuttlebot.io/%25C35b%2BMlZ%2Fy5TT1e7SG66eNKEIdX5DRl9PRUxbhvO89k%3D.sha256
- website: https://ipfs.io/ipns/12D3KooWBG1fsFRF4ykpidXVNVnbon5KLfv67pkkGeFstrwftVVb/
+ website: https://git.scuttlebot.io/%25C35b%2BMlZ%2Fy5TT1e7SG66eNKEIdX5DRl9PRUxbhvO89k%3D.sha256
description: IPFS integration for the Dillo web browser.
picture: /images/dillo-ipfs.png
- title: git-remote-ipfs
@@ -98,3 +101,7 @@ content:
source: https://github.com/arsyun/ipfs-common
description: >
some common tools, 1.CID to human readable cid, 2.cid and block name convert, 3. read the leveldb tools.
+- title: Public gateway status checker
+ website: https://ipfs.fooock.com/
+ source: https://github.com/fooock/ipfs-gateway-checker
+ description: Web app to check public states of IPFS gateways, including latency and gateway writable state.
diff --git a/package.json b/package.json
index 4de646d..f2ebcee 100644
--- a/package.json
+++ b/package.json
@@ -3,9 +3,9 @@
"version": "1.0.0",
"private": true,
"dependencies": {
- "ipfs-css": "^0.5.2",
- "lunr": "^2.3.0",
- "tachyons": "^4.10.0"
+ "ipfs-css": "^0.12.0",
+ "lunr": "^2.3.6",
+ "tachyons": "^4.11.1"
},
"scripts": {
"start": "node ./scripts/dev.js",
@@ -18,24 +18,22 @@
"build:css": "postcss --no-map --use postcss-import cssnano -o src/static/app.css src/css/*.css",
"build:js": "browserify -g uglifyify src/js/app.js -o src/static/app.js",
"build:data": "node ./scripts/make-data.js",
- "build:hugo": "hugo -s src -d ../public --cleanDestinationDir",
- "build:minify": "html-minifier --input-dir=./public --output-dir=./public --file-ext=html --collapse-whitespace --remove-comments"
+ "build:hugo": "hugo -s src -d ../public --cleanDestinationDir --minify --gc"
},
"devDependencies": {
- "babel-eslint": "^8.2.6",
- "browserify": "^16.2.2",
- "chokidar": "^2.0.4",
- "cssnano": "^4.0.1",
- "ecstatic": "^3.2.1",
- "fs-extra": "^6.0.1",
- "html-minifier": "^3.5.19",
- "hugo-bin": "^0.29.0",
- "node-yaml": "^3.1.1",
- "npm-run-all": "^4.1.3",
- "postcss-cli": "^5.0.1",
- "postcss-import": "^11.1.0",
+ "babel-eslint": "^10.0.1",
+ "browserify": "^16.2.3",
+ "chokidar": "^2.1.5",
+ "cssnano": "^4.1.10",
+ "ecstatic": "^4.1.2",
+ "fs-extra": "^7.0.1",
+ "hugo-bin": "^0.43.4",
+ "node-yaml": "^3.2.0",
+ "npm-run-all": "^4.1.5",
+ "postcss-cli": "^6.1.2",
+ "postcss-import": "^12.0.1",
"shx": "^0.3.2",
- "standard": "^11.0.1",
+ "standard": "^12.0.1",
"uglifyify": "^5.0.1",
"watch": "^1.0.2"
},
diff --git a/scripts/data.js b/scripts/data.js
index 6b6932d..6965e32 100644
--- a/scripts/data.js
+++ b/scripts/data.js
@@ -1,23 +1,34 @@
const fs = require('fs')
-const path = require('path')
+const { join } = require('path')
const yaml = require('node-yaml')
-const { sortAbc } = require('./utils')
-const dataDir = path.join(__dirname, '../data')
+const { sortAbc, sortInv, slugify } = require('./utils')
+const dir = join(__dirname, '../data')
const trimIfExists = (str) => str ? str.trim() : undefined
-const files = fs.readdirSync(dataDir)
- .map(file => path.join(dataDir, file))
+module.exports = fs.readdirSync(dir)
+ .map(file => join(dir, file))
.map(file => yaml.readSync(file))
.map(file => {
- file.content = file.content.map(({ title, description, ...file }) => ({
+ file.slug = slugify(file.title)
+ file.type = 'category'
+
+ file.content = file.content.map(({ title, description, ...meta }, i) => ({
+ ...meta,
title: trimIfExists(title),
description: trimIfExists(description),
- ...file
+ category: file.slug,
+ color: file.color,
+ index: i
}))
+ let sort = (a, b) => sortAbc(a.title, b.title)
+
+ if (file.slug === 'articles') {
+ sort = (a, b) => sortInv(a.date, b.date)
+ }
+
+ file.content = file.content.sort(sort)
return file
})
.sort((a, b) => sortAbc(a.title, b.title))
-
-module.exports = files
diff --git a/scripts/make-data.js b/scripts/make-data.js
index 967e70e..9a8ff93 100644
--- a/scripts/make-data.js
+++ b/scripts/make-data.js
@@ -1,126 +1,50 @@
const lunr = require('lunr')
const fs = require('fs-extra')
-const path = require('path')
-const { slugify, capitalize, sortAbc } = require('./utils')
+const { join } = require('path')
-const dataDir = path.join(__dirname, '../src/data')
-const contentDir = path.join(__dirname, '../src/content')
-const indexesDir = path.join(__dirname, '../src/layouts/partials/indexes')
+function getData () {
+ let data = require('./data')
-const processDataType = (data) => {
- const content = data.content.map(info => {
- const { website, ...more } = info
-
- return {
- website: website,
- categories: [data.title.toLowerCase()],
- ...more
- }
+ data.push({
+ title: 'Awesome IPFS',
+ slug: '_index',
+ content: data
+ .reduce((arr, cat) => arr.concat(cat.content), [])
+ .map((el, i) => ({
+ ...el,
+ index: i
+ }))
})
- delete data.content
-
- return {
- info: { ...data },
- content: content
- }
+ data.forEach(makeIndex)
+ return data
}
-const writeContentFile = (data) => {
- const basename = slugify(data.title)
- const filename = path.join(contentDir, `${basename}.md`)
-
- fs.writeFileSync(filename, JSON.stringify(data))
-}
-
-const makeIndex = (data) => {
- const indexes = { 'index': [] }
-
- const checkField = (field, el) => {
- if (Array.isArray(el[field])) {
- el[field].forEach(t => {
- const key = `${field}_${t}`
-
- if (indexes[key]) {
- indexes[key].push(el.index)
- } else {
- indexes[key] = [el.index]
- }
- })
- }
- }
-
- data.forEach(el => {
- indexes.index.push(el.index)
- checkField('tags', el)
- checkField('categories', el)
- })
-
- data = data.map(({index, title, description = '', tags = [], categories = []}) => ({
+function makeIndex (category) {
+ const data = category.content.map(({ index, title, description = '', tags = [], category = '' }) => ({
ref: index,
- data: `${title} ${description} ${tags.join(' ')} ${categories.join(' ')}`
+ data: `${title} ${description} ${tags.join(' ')} ${category}`
}))
- for (const index in indexes) {
- const idx = lunr(function () {
- this.ref('ref')
- this.field('data')
-
- indexes[index].map(i => data[i]).forEach(this.add.bind(this))
- })
-
- const file = path.join(indexesDir, index + '.html')
- const json = JSON.stringify(idx).replace(`'`, `\\'`)
-
- fs.writeFileSync(file, ``)
- }
+ category.index = lunr(function () {
+ this.ref('ref')
+ this.field('data')
+ data.forEach(this.add.bind(this))
+ })
}
const process = () => {
- fs.ensureDirSync(dataDir)
- fs.ensureDirSync(contentDir)
- fs.ensureDirSync(indexesDir)
- fs.emptyDirSync(dataDir)
- fs.emptyDirSync(contentDir)
- fs.emptyDirSync(indexesDir)
+ const dir = join(__dirname, '../src/content')
+ fs.ensureDirSync(dir)
+ fs.emptyDirSync(dir)
- let data = []
- let types = []
- let typesObj = {}
+ const data = getData()
- require('./data')
- .map(processDataType)
- .forEach(({info, content}) => {
- types.push(info)
- data.push(content)
- })
-
- data = data.reduce((a, v) => a.concat(v), [])
- .sort((a, b) => sortAbc(a.title, b.title))
- .map((v, i) => { v.index = i; return v })
-
- data.forEach(writeContentFile)
- makeIndex(data)
-
- types = types.map(t => {
- t.title = capitalize(t.title)
- return t
- }).sort((a, b) => {
- if (a.weight < b.weight) {
- return -1
- }
-
- if (a.weight > b.weight) {
- return 1
- }
-
- return 0
- }).forEach(type => {
- typesObj[type.title.toLowerCase()] = type
- })
-
- const pt = path.join(dataDir, 'categories.json')
- fs.writeFileSync(pt, JSON.stringify(typesObj))
+ for (const { index, slug, ...meta } of data) {
+ const filename = join(dir, slug + '.md')
+ fs.writeFileSync(filename, `${JSON.stringify(meta)}
+`)
+ }
}
process()
diff --git a/scripts/make-readme.js b/scripts/make-readme.js
index 9aae10e..34b5179 100644
--- a/scripts/make-readme.js
+++ b/scripts/make-readme.js
@@ -3,18 +3,12 @@ const path = require('path')
const files = require('./data')
const readme = path.join(__dirname, '../README.md')
const template = path.join(__dirname, 'readme-template.md')
-const { slugify, sortInv, sortAbc } = require('./utils')
+const { slugify } = require('./utils')
const toc = files.map(cat => `- [${cat.title}](#${slugify(cat.title)})`).join('\n')
const sections = files.map(category => {
- let sort = (a, b) => sortAbc(a.title, b.title)
-
- if (category.title === 'Articles') {
- sort = (a, b) => sortInv(a.date, b.date)
- }
-
- const content = category.content.sort(sort).map(item => {
+ const content = category.content.map(item => {
let block = '- '
let mainUrl = ''
diff --git a/scripts/utils.js b/scripts/utils.js
index 72bd658..3573363 100644
--- a/scripts/utils.js
+++ b/scripts/utils.js
@@ -20,12 +20,9 @@ const slugify = (text) => text.toString()
.replace(/^-+/, '')
.replace(/-+$/, '')
-const capitalize = (text) => `${text.charAt(0).toUpperCase()}${text.slice(1).toLowerCase()}`
-
module.exports = {
sort,
sortInv,
sortAbc,
- slugify,
- capitalize
+ slugify
}
diff --git a/src/layouts/_default/baseof.html b/src/layouts/_default/baseof.html
index 875a157..ed673f5 100644
--- a/src/layouts/_default/baseof.html
+++ b/src/layouts/_default/baseof.html
@@ -11,15 +11,12 @@
{{ substr .hash 0 10 }}...{{ substr .hash $length 5 }}
+