Merge branch 'master' into fix-partyshare-link

This commit is contained in:
Henrique Dias 2019-04-30 17:53:33 +01:00 committed by GitHub
commit 85ef98c88b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 332 additions and 289 deletions

66
.circleci/config.yml Normal file
View File

@ -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

2
.gitignore vendored
View File

@ -27,9 +27,7 @@ stroke*.svg
public public
dist dist
/src/resources /src/resources
/src/data
/src/content /src/content
/src/layouts/partials/indexes
/src/static/fonts /src/static/fonts
/src/static/app.css /src/static/app.css
/src/static/app.js /src/static/app.js

View File

@ -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

View File

@ -1,6 +0,0 @@
build:
npm --version
node --version
npm install
npm run lint
npm run build

View File

@ -28,6 +28,7 @@ Everyone is welcome to submit their new awesome-ipfs item. In order to add an el
## Apps ## 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) - [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 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) - [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. - [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. - [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. - [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. - [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 - [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. - [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. - [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. - [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) - [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) - [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. - [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. - [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. - [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 - [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) - [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. - [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 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 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-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-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.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. - [ipfs.pics](https://github.com/ipfspics/ipfspics-server) - Upload and share pics.
- [IPFSBin](https://github.com/victorbjelkholm/ipfsbin) - Pastebin clone build. - [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) - [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) - [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. - [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. - [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) - [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. - [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) - [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 - [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) - [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) - [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-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-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) - 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-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) - 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-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/) - 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-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-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-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) - 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 ## 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) - [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) - [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) - [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) - [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) - [yarchive.net](https://ipfs.io/ipfs/QmdA5WkDNALetBn4iFeSepHjdLGJdxPBwZyY47ir1bZGAK) [Source](https://github.com/ipfs/archives/issues/76)
## Tools ## 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) - [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 - [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. - [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 - [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. - [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. - [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 - [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 - [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) - [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 ## Videos

4
ci/Jenkinsfile vendored
View File

@ -1,4 +0,0 @@
website([
website: 'awesome.ipfs.io',
record: '_dnslink'
])

View File

@ -3,6 +3,13 @@ color: aqua
icon: stroke_marketing icon: stroke_marketing
description: Applications built with IPFS or with functionality that uses IPFS. description: Applications built with IPFS or with functionality that uses IPFS.
content: 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 - title: killcord
website: https://killcord.io/ website: https://killcord.io/
source: https://github.com/nomasters/killcord source: https://github.com/nomasters/killcord
@ -66,6 +73,11 @@ content:
description: > description: >
Distributed video sharing with steem.it intergrations, using ipfs for Distributed video sharing with steem.it intergrations, using ipfs for
backend storage. 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 - title: Ethlance
website: http://ethlance.com website: http://ethlance.com
source: https://github.com/madvas/ethlance source: https://github.com/madvas/ethlance
@ -116,9 +128,12 @@ content:
description: > description: >
Publish and render markdown essays to and from ipfs. Publish and render markdown essays to and from ipfs.
- title: ipfs-search - title: ipfs-search
website: http://ipfs-search.com website: https://ipfs-search.com
source: https://github.com/ipfs-search/ipfs-search
description: > 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 - title: ipfs-share
source: https://github.com/rameshvarun/ipfs-share source: https://github.com/rameshvarun/ipfs-share
description: > description: >
@ -131,10 +146,6 @@ content:
source: https://github.com/victorbjelkholm/ipfsbin source: https://github.com/victorbjelkholm/ipfsbin
description: > description: >
Pastebin clone build. Pastebin clone build.
- title: IPFSStore
website: https://ipfsstore.it
description: >
Pinning paid with Steem
- title: markup.rocks - title: markup.rocks
website: https://ipfs.io/ipfs/QmWPgJnUGLB1LPh9KMG9LEN4LVu5e17TwkEtcmTWdNn9V6/#/ipfs/QmfQ75DjAxYzxMP2hdm6o4wFwZS5t7uorEZ2pX9AKXEg2u website: https://ipfs.io/ipfs/QmWPgJnUGLB1LPh9KMG9LEN4LVu5e17TwkEtcmTWdNn9V6/#/ipfs/QmfQ75DjAxYzxMP2hdm6o4wFwZS5t7uorEZ2pX9AKXEg2u
source: https://github.com/davidar/markup.rocks source: https://github.com/davidar/markup.rocks
@ -152,10 +163,6 @@ content:
picture: /images/Partyshare_Logo.png picture: /images/Partyshare_Logo.png
description: > description: >
A simple file sharing desktop app. 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 - title: Playback
source: https://mafintosh.github.io/playback/ source: https://mafintosh.github.io/playback/
description: > description: >
@ -168,7 +175,7 @@ content:
website: https://qri.io website: https://qri.io
source: https://github.com/qri-io/qri source: https://github.com/qri-io/qri
description: > description: >
Dataset creation, collaboration, and discovery on the distributed web. Dataset verion control, discovery and collaboration tools (free, open-source).
- title: ujo - title: ujo
website: http://ujomusic.com/ website: http://ujomusic.com/
description: > description: >
@ -199,7 +206,6 @@ content:
IPFS based code bin. (Read only for now) IPFS based code bin. (Read only for now)
- title: Gorilla REPL viewer - title: Gorilla REPL viewer
source: https://github.com/keorn/ipfs-gorilla-repl source: https://github.com/keorn/ipfs-gorilla-repl
demo: https://ipfs.io/ipfs/QmRNUauWDvZFkAp1Bw3kAode3jT8aH2vx7LYzbS7H6R3Mg/view.html?path=/ipfs/QmbRdyLXiFWrKc5hW1NbvpUxF9tLovWCPgiz4BDhjD9k3j
description: > description: >
Gorilla is a rich REPL for Clojure in the notebook style. Gorilla is a rich REPL for Clojure in the notebook style.
- title: a markdown renderer - title: a markdown renderer
@ -211,15 +217,11 @@ content:
- title: a qr-code renderer - title: a qr-code renderer
source: https://github.com/ipfs/website/tree/master/content/docs/examples/webapps/qr-render source: https://github.com/ipfs/website/tree/master/content/docs/examples/webapps/qr-render
demo: https://ipfs.io/ipfs/QmccqhJg5wm5kNjAP4k4HrYxoqaXUGNuotDUqfvYBx8jrR/qr#enter%20text%20here 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 - title: TallyLab
website: https://tallylab.com/ website: https://tallylab.com/
picture: /images/tallylab.jpg picture: /images/tallylab.jpg
description: > 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 - title: Temporal
source: https://github.com/RTradeLtd/Temporal source: https://github.com/RTradeLtd/Temporal
description: > description: >

View File

@ -24,9 +24,6 @@ content:
- title: The InterPlanetary File System Wants to Create a Permanent Web - title: The InterPlanetary File System Wants to Create a Permanent Web
date: '2015-09-18' date: '2015-09-18'
website: http://motherboard.vice.com/read/the-interplanetary-file-system-wants-to-create-a-permanent-web 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 - title: HTTP is obsolete. It's time for the distributed, permanent web
date: '2015-09-08' date: '2015-09-08'
website: https://ipfs.io/ipfs/QmNhFJjGcMPqpuYfxL62VVB9528NXqDNMFXiqN5bgFYiZ1/its-time-for-the-permanent-web.html website: https://ipfs.io/ipfs/QmNhFJjGcMPqpuYfxL62VVB9528NXqDNMFXiqN5bgFYiZ1/its-time-for-the-permanent-web.html

View File

@ -8,18 +8,12 @@ content:
website: https://ipfs.io/ipfs/QmNvTjdqEPjZVWCvRWsFJA1vK7TTw1g9JP6we1WBJTRADM website: https://ipfs.io/ipfs/QmNvTjdqEPjZVWCvRWsFJA1vK7TTw1g9JP6we1WBJTRADM
source: https://github.com/ipfs/archives/issues/18 source: https://github.com/ipfs/archives/issues/18
size: 500MB 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 - title: XKCD
hash: /ipfs/Qmb8wsGZNXt5VXZh1pEmYynjB6Euqpq3HYyeAdw2vScTkQ hash: /ipns/xkcd.hacdias.com
website: https://ipfs.io/ipfs/Qmb8wsGZNXt5VXZh1pEmYynjB6Euqpq3HYyeAdw2vScTkQ website: https://ipfs.io/ipns/xkcd.hacdias.com
source: https://github.com/ipfs/archives/issues/21 source: https://github.com/ipfs/archives/issues/21
description: description:
size: 122MB size: 241MB
- title: Old Internet Files - title: Old Internet Files
hash: /ipfs/QmbsZEvJE8EU51HCUHQg2aem9JNFmFHdva3tGVYutdCXHp hash: /ipfs/QmbsZEvJE8EU51HCUHQg2aem9JNFmFHdva3tGVYutdCXHp
website: https://ipfs.io/ipfs/QmbsZEvJE8EU51HCUHQg2aem9JNFmFHdva3tGVYutdCXHp website: https://ipfs.io/ipfs/QmbsZEvJE8EU51HCUHQg2aem9JNFmFHdva3tGVYutdCXHp

View File

@ -3,6 +3,9 @@ color: yellow
icon: stroke_code icon: stroke_code
description: Tools built on the top of IPFS. description: Tools built on the top of IPFS.
content: content:
- title: Sweet IPFS
source: https://github.com/RHazDev/Sweet-IPFS
description: Full node for Android
- title: cachewarmer - title: cachewarmer
source: https://github.com/BrendanBenshoof/cachewarmer source: https://github.com/BrendanBenshoof/cachewarmer
description: Donate ipfs gateways to cache other people's content 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. description: Adds support for deploying Gatsby websites to IPFS by ensuring that assets are relative.
- title: dillo-ipfs - title: dillo-ipfs
source: https://git.scuttlebot.io/%25C35b%2BMlZ%2Fy5TT1e7SG66eNKEIdX5DRl9PRUxbhvO89k%3D.sha256 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. description: IPFS integration for the Dillo web browser.
picture: /images/dillo-ipfs.png picture: /images/dillo-ipfs.png
- title: git-remote-ipfs - title: git-remote-ipfs
@ -98,3 +101,7 @@ content:
source: https://github.com/arsyun/ipfs-common source: https://github.com/arsyun/ipfs-common
description: > description: >
some common tools, 1.CID to human readable cid, 2.cid and block name convert, 3. read the leveldb tools. 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.

View File

@ -3,9 +3,9 @@
"version": "1.0.0", "version": "1.0.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"ipfs-css": "^0.5.2", "ipfs-css": "^0.12.0",
"lunr": "^2.3.0", "lunr": "^2.3.6",
"tachyons": "^4.10.0" "tachyons": "^4.11.1"
}, },
"scripts": { "scripts": {
"start": "node ./scripts/dev.js", "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: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:js": "browserify -g uglifyify src/js/app.js -o src/static/app.js",
"build:data": "node ./scripts/make-data.js", "build:data": "node ./scripts/make-data.js",
"build:hugo": "hugo -s src -d ../public --cleanDestinationDir", "build:hugo": "hugo -s src -d ../public --cleanDestinationDir --minify --gc"
"build:minify": "html-minifier --input-dir=./public --output-dir=./public --file-ext=html --collapse-whitespace --remove-comments"
}, },
"devDependencies": { "devDependencies": {
"babel-eslint": "^8.2.6", "babel-eslint": "^10.0.1",
"browserify": "^16.2.2", "browserify": "^16.2.3",
"chokidar": "^2.0.4", "chokidar": "^2.1.5",
"cssnano": "^4.0.1", "cssnano": "^4.1.10",
"ecstatic": "^3.2.1", "ecstatic": "^4.1.2",
"fs-extra": "^6.0.1", "fs-extra": "^7.0.1",
"html-minifier": "^3.5.19", "hugo-bin": "^0.43.4",
"hugo-bin": "^0.29.0", "node-yaml": "^3.2.0",
"node-yaml": "^3.1.1", "npm-run-all": "^4.1.5",
"npm-run-all": "^4.1.3", "postcss-cli": "^6.1.2",
"postcss-cli": "^5.0.1", "postcss-import": "^12.0.1",
"postcss-import": "^11.1.0",
"shx": "^0.3.2", "shx": "^0.3.2",
"standard": "^11.0.1", "standard": "^12.0.1",
"uglifyify": "^5.0.1", "uglifyify": "^5.0.1",
"watch": "^1.0.2" "watch": "^1.0.2"
}, },

View File

@ -1,23 +1,34 @@
const fs = require('fs') const fs = require('fs')
const path = require('path') const { join } = require('path')
const yaml = require('node-yaml') const yaml = require('node-yaml')
const { sortAbc } = require('./utils') const { sortAbc, sortInv, slugify } = require('./utils')
const dataDir = path.join(__dirname, '../data')
const dir = join(__dirname, '../data')
const trimIfExists = (str) => str ? str.trim() : undefined const trimIfExists = (str) => str ? str.trim() : undefined
const files = fs.readdirSync(dataDir) module.exports = fs.readdirSync(dir)
.map(file => path.join(dataDir, file)) .map(file => join(dir, file))
.map(file => yaml.readSync(file)) .map(file => yaml.readSync(file))
.map(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), title: trimIfExists(title),
description: trimIfExists(description), 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 return file
}) })
.sort((a, b) => sortAbc(a.title, b.title)) .sort((a, b) => sortAbc(a.title, b.title))
module.exports = files

View File

@ -1,126 +1,50 @@
const lunr = require('lunr') const lunr = require('lunr')
const fs = require('fs-extra') const fs = require('fs-extra')
const path = require('path') const { join } = require('path')
const { slugify, capitalize, sortAbc } = require('./utils')
const dataDir = path.join(__dirname, '../src/data') function getData () {
const contentDir = path.join(__dirname, '../src/content') let data = require('./data')
const indexesDir = path.join(__dirname, '../src/layouts/partials/indexes')
const processDataType = (data) => { data.push({
const content = data.content.map(info => { title: 'Awesome IPFS',
const { website, ...more } = info slug: '_index',
content: data
return { .reduce((arr, cat) => arr.concat(cat.content), [])
website: website, .map((el, i) => ({
categories: [data.title.toLowerCase()], ...el,
...more index: i
} }))
}) })
delete data.content data.forEach(makeIndex)
return data
return {
info: { ...data },
content: content
}
} }
const writeContentFile = (data) => { function makeIndex (category) {
const basename = slugify(data.title) const data = category.content.map(({ index, title, description = '', tags = [], category = '' }) => ({
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 = []}) => ({
ref: index, ref: index,
data: `${title} ${description} ${tags.join(' ')} ${categories.join(' ')}` data: `${title} ${description} ${tags.join(' ')} ${category}`
})) }))
for (const index in indexes) { category.index = lunr(function () {
const idx = lunr(function () { this.ref('ref')
this.ref('ref') this.field('data')
this.field('data') data.forEach(this.add.bind(this))
})
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, `<script>var idx = JSON.parse(\`${json}\`);</script>`)
}
} }
const process = () => { const process = () => {
fs.ensureDirSync(dataDir) const dir = join(__dirname, '../src/content')
fs.ensureDirSync(contentDir) fs.ensureDirSync(dir)
fs.ensureDirSync(indexesDir) fs.emptyDirSync(dir)
fs.emptyDirSync(dataDir)
fs.emptyDirSync(contentDir)
fs.emptyDirSync(indexesDir)
let data = [] const data = getData()
let types = []
let typesObj = {}
require('./data') for (const { index, slug, ...meta } of data) {
.map(processDataType) const filename = join(dir, slug + '.md')
.forEach(({info, content}) => { fs.writeFileSync(filename, `${JSON.stringify(meta)}
types.push(info) <script>var idx = JSON.parse(\`${JSON.stringify(index).replace(`'`, `\\'`)}\`);</script>`)
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))
} }
process() process()

View File

@ -3,18 +3,12 @@ const path = require('path')
const files = require('./data') const files = require('./data')
const readme = path.join(__dirname, '../README.md') const readme = path.join(__dirname, '../README.md')
const template = path.join(__dirname, 'readme-template.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 toc = files.map(cat => `- [${cat.title}](#${slugify(cat.title)})`).join('\n')
const sections = files.map(category => { const sections = files.map(category => {
let sort = (a, b) => sortAbc(a.title, b.title) const content = category.content.map(item => {
if (category.title === 'Articles') {
sort = (a, b) => sortInv(a.date, b.date)
}
const content = category.content.sort(sort).map(item => {
let block = '- ' let block = '- '
let mainUrl = '' let mainUrl = ''

View File

@ -20,12 +20,9 @@ const slugify = (text) => text.toString()
.replace(/^-+/, '') .replace(/^-+/, '')
.replace(/-+$/, '') .replace(/-+$/, '')
const capitalize = (text) => `${text.charAt(0).toUpperCase()}${text.slice(1).toLowerCase()}`
module.exports = { module.exports = {
sort, sort,
sortInv, sortInv,
sortAbc, sortAbc,
slugify, slugify
capitalize
} }

View File

@ -11,15 +11,12 @@
<img alt="IPFS" src="{{ .Site.BaseURL }}/images/logo.png" class="w3 h3 mr3"> <img alt="IPFS" src="{{ .Site.BaseURL }}/images/logo.png" class="w3 h3 mr3">
<h1 class="f3 white">Awesome IPFS</h1> <h1 class="f3 white">Awesome IPFS</h1>
</a> </a>
{{ $site := .Site }} {{ range (where .Site.Pages "Type" "category") }}
{{ range $name, $taxonomy := .Site.Taxonomies.categories }} <a href="{{ .RelPermalink }}"
{{ $color := (index $site.Data.categories $name).color }} class="flex-grow-1 flex items-center justify-center white no-underline pa2 bg-animate dib bg-{{ .Params.color }}-muted hover-bg-{{ .Params.color }}">
{{ $icon := print (index $site.Data.categories $name).icon ".svg" }} <span class="w2 h2 fill-white mr2">{{ partial (print "icons/" .Params.icon ".svg" ) }}</span>
<a href="/categories/{{ $name | urlize }}" {{ .Title }}
class="flex-grow-1 flex items-center justify-center white no-underline pa2 bg-animate dib bg-{{ $color }}-muted hover-bg-{{ $color }}">
<span class="w2 h2 fill-white mr2">{{ partial (print "icons/" $icon ) }}</span>
{{ $name }}
</a> </a>
{{ end }} {{ end }}
</nav> </nav>

View File

@ -1,9 +0,0 @@
{{ define "main" }}
{{- $p1 := (print .Data.Plural "_") -}}
{{- $p2 := lower .Title -}}
{{- $partial := print $p1 $p2 -}}
{{- partial "list" .Data.Pages -}}
{{- partial (print "indexes/" $partial) -}}
{{ end }}

View File

@ -0,0 +1,3 @@
{{ define "main" }}
{{ partial "list" . }}
{{ end }}

View File

@ -1,7 +1,3 @@
{{ define "main" }} {{ define "main" }}
{{ partial "list" . }}
{{ partial "list" .Pages }}
{{ partial "indexes/index" }}
{{ end }} {{ end }}

View File

@ -12,73 +12,75 @@
</div> </div>
<main class="CardContainer mv4 flex flex-wrap justify-between" > <main class="CardContainer mv4 flex flex-wrap justify-between" >
{{ range (sort . "Params.index") -}} {{ range (sort .Params.content "index") -}}
<article data-ref="{{ .Params.index }}" class="Card flex flex-column bg-white shadow-4 grow2 br1 dark-gray b--black-10 flex-grow-1 ma2"> <article data-ref="{{ .index }}" class="Card flex flex-column bg-white shadow-4 grow2 br1 dark-gray b--black-10 flex-grow-1 ma2">
{{ $cat := index .Params.categories 0 }} <div class="bg-navy ttu fw6 tracked montserrat bg-{{ .color }}-muted br1 br--top white pv1 ph2 ph3-ns f7 b w-100">
{{ $color := (index .Site.Data.categories $cat).color }} {{ humanize .category }}
<div class="bg-navy ttu fw6 tracked montserrat bg-{{ $color }}-muted br1 br--top white pv1 ph2 ph3-ns f7 b w-100"> </div>
{{ humanize $cat }}
<div class="pa2 ph3-ns pb3-ns flex flex-column flex-grow-1">
<div class="dt w-100 mt1">
<div class="dtc">
<a target="_blank" class="no-underline charcoal" href="{{ if .website }}{{ .website }}{{ else if .source }}{{ .source }}{{ else if .demo }}{{ .demo }}{{ end }}">
<h1 class="f5 mw5 f4-ns mv0">{{- .title -}}</h1>
</a>
</div>
</div> </div>
<div class="pa2 ph3-ns pb3-ns flex flex-column flex-grow-1"> {{- if isset . "date" -}}
<div class="dt w-100 mt1"> {{ template "text" dateFormat "January 2, 2006" .date }}
<div class="dtc"> {{- end -}}
<a target="_blank" class="no-underline charcoal" href="{{ if .Params.website }}{{ .Params.website }}{{ else if .Params.source }}{{ .Params.source }}{{ else if .Params.demo }}{{ .Params.demo }}{{ end }}">
<h1 class="f5 mw5 f4-ns mv0">{{- .Title -}}</h1>
</a>
</div>
</div>
{{- if isset .Params "date" -}} {{- if isset . "description" -}}
{{ template "text" .Date.Format "January 2, 2006" }} {{ template "text" .description }}
{{- end -}} {{- end -}}
{{- if isset .Params "description" -}} {{- if isset . "size" -}}
{{ template "text" .Params.description }} {{ template "text" (print "Size: " .size) }}
{{- end -}} {{- end -}}
{{- if isset .Params "size" -}} {{- if isset . "hash" -}}
{{ template "text" (print "Size: " .Params.size) }}
{{- end -}}
{{- if isset .Params "hash" -}}
<div class="mt2 mw5">
<a href="https://ipfs.io{{ .Params.hash }}" target="_blank" alt="Website" title="Website" class="aqua hover-teal">
<abbr title="{{ .Params.hash }}">
<code>{{ substr .Params.hash 0 10 }}...{{ substr .Params.hash 47 5 }}</code>
</abbr>
</a>
</div>
{{- end -}}
{{- if isset .Params "picture" -}}
<div class="mt2 mw5"> <div class="mt2 mw5">
<a target="_blank" class="no-underline charcoal" href="{{ if .Params.website }}{{ .Params.website }}{{ else if .Params.source }}{{ .Params.source }}{{ else if .Params.demo }}{{ .Params.demo }}{{ end }}"> <a href="https://ipfs.io{{ .hash }}" target="_blank" alt="Website" title="Website" class="aqua hover-teal">
<img class="br2" src="{{ .Site.BaseURL }}{{ .Params.picture }}" > <abbr title="{{ .hash }}">
{{ $length := sub (len .hash) 5 }}
<code>{{ substr .hash 0 10 }}...{{ substr .hash $length 5 }}</code>
</abbr>
</a> </a>
</div> </div>
{{ end }} {{- end -}}
<div class="flex pt2 mt-auto align-center justify-begin"> {{- if isset . "picture" -}}
{{- if isset .Params "website" -}} <div class="mt2 mw5">
<a href="{{ .Params.website }}" target="_blank" alt="Website" title="Website"> <a target="_blank" class="no-underline charcoal" href="{{ if .website }}{{ .website }}{{ else if .source }}{{ .source }}{{ else if .demo }}{{ .demo }}{{ end }}">
{{ partial "icons/globe.svg" }} <img class="br2" src="{{ .picture | relURL }}" >
</a> </a>
{{- end -}}
{{- if isset .Params "source" -}}
<a href="{{ .Params.source }}" target="_blank" alt="Source Code" title="Source Code">
{{ partial "icons/code.svg" }}
</a>
{{- end -}}
{{- if isset .Params "demo" -}}
<a href="{{ .Params.demo }}" target="_blank" alt="Demo" title="Demo">
{{ partial "icons/flask.svg" }}
</a>
{{- end -}}
</div>
</div> </div>
</article> {{ end }}
<div class="flex pt2 mt-auto align-center justify-begin">
{{- if isset . "website" -}}
<a href="{{ .website }}" target="_blank" alt="Website" title="Website">
{{ partial "icons/globe.svg" }}
</a>
{{- end -}}
{{- if isset . "source" -}}
<a href="{{ .source }}" target="_blank" alt="Source Code" title="Source Code">
{{ partial "icons/code.svg" }}
</a>
{{- end -}}
{{- if isset . "demo" -}}
<a href="{{ .demo }}" target="_blank" alt="Demo" title="Demo">
{{ partial "icons/flask.svg" }}
</a>
{{- end -}}
</div>
</div>
</article>
{{ end }} {{ end }}
</main> </main>
{{ .Content }}

View File

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="13.520844mm" height="13.520844mm" viewBox="0 0 47.908501 47.908501" id="svg2" version="1.1" inkscape:version="0.91 r13725" sodipodi:docname="Button - Share.svg" inkscape:export-filename="/Users/jgillanders/Development/Games/Colibrium/Pictures/Button - Share.png" inkscape:export-xdpi="961.83002" inkscape:export-ydpi="961.83002">
<defs id="defs4">
<marker inkscape:isstock="true" inkscape:stockid="DistanceStart" orient="auto" refY="0" refX="0" id="DistanceStart" style="overflow:visible">
<g id="g2300">
<path id="path2306" d="M 0,0 2,0" style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" inkscape:connector-curvature="0"/>
<path id="path2302" d="M 0,0 13,4 9,0 13,-4 0,0 Z" style="fill:#000000;fill-rule:evenodd;stroke:none" inkscape:connector-curvature="0"/>
<path id="path2304" d="M 0,-4 0,40" style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" inkscape:connector-curvature="0"/>
</g>
</marker>
<linearGradient x1="14.66" y1="7.0243001" x2="24.031" gradientUnits="userSpaceOnUse" y2="34.826" id="G3">
<stop offset="0" stop-color="#fcf9fb" id="s3"/>
<stop offset="1" stop-opacity="0" stop-color="#fcf9fb" id="s4"/>
</linearGradient>
<radialGradient fy="32.797306" fx="28.935429" r="22" gradientTransform="matrix(1,-0.2,0.2,1,-3.8,6.8)" cx="28.935429" cy="32.797306" gradientUnits="userSpaceOnUse" id="R0">
<stop offset="0" stop-color="#e6cf00" id="s1"/>
<stop offset="1" stop-color="#fde94a" id="s2"/>
</radialGradient>
<radialGradient r="9.6875" gradientTransform="matrix(2.4,0,0,0.67,-17.1,22.4)" cx="17.312" cy="25.531" gradientUnits="userSpaceOnUse" id="R1">
<stop offset="0" stop-opacity=".63" id="s5"/>
<stop offset="1" stop-opacity="0" id="s6"/>
</radialGradient>
<linearGradient gradientTransform="matrix(0.31170768,-0.14537193,0.14537193,0.31170768,-216.07743,565.35148)" y2="34.826" x2="24.031" y1="7.0243001" x1="14.66" gradientUnits="userSpaceOnUse" id="linearGradient2995" xlink:href="#G3" inkscape:collect="always"/>
<radialGradient r="22" fy="32.797306" fx="28.935429" cy="32.797306" cx="28.935429" gradientTransform="matrix(1,-0.2,0.2,1,78.2,6.8)" gradientUnits="userSpaceOnUse" id="radialGradient3011" xlink:href="#R0" inkscape:collect="always"/>
<radialGradient r="22" fy="32.797306" fx="28.935429" cy="32.797306" cx="28.935429" gradientTransform="matrix(1,-0.2,0.2,1,78.2,6.8)" gradientUnits="userSpaceOnUse" id="radialGradient3018-9" xlink:href="#R0-4" inkscape:collect="always"/>
<radialGradient fy="32.797306" fx="28.935429" r="22" gradientTransform="matrix(1,-0.2,0.2,1,-3.8,6.8)" cx="28.935429" cy="32.797306" gradientUnits="userSpaceOnUse" id="R0-4">
<stop offset="0" stop-color="#e6cf00" id="s1-8"/>
<stop offset="1" stop-color="#fde94a" id="s2-8"/>
</radialGradient>
<radialGradient r="22" fy="32.797306" fx="28.935429" cy="32.797306" cx="28.935429" gradientTransform="matrix(1,-0.2,0.2,1,78.2,6.8)" gradientUnits="userSpaceOnUse" id="radialGradient3028-2" xlink:href="#R0-45" inkscape:collect="always"/>
<radialGradient fy="32.797306" fx="28.935429" r="22" gradientTransform="matrix(1,-0.2,0.2,1,-3.8,6.8)" cx="28.935429" cy="32.797306" gradientUnits="userSpaceOnUse" id="R0-45">
<stop offset="0" stop-color="#e6cf00" id="s1-5"/>
<stop offset="1" stop-color="#fde94a" id="s2-1"/>
</radialGradient>
<radialGradient r="22" fy="32.797306" fx="28.935429" cy="32.797306" cx="28.935429" gradientTransform="matrix(1,-0.2,0.2,1,78.2,6.8)" gradientUnits="userSpaceOnUse" id="radialGradient3986" xlink:href="#R0-45" inkscape:collect="always"/>
<radialGradient r="22" fy="32.797306" fx="28.935429" cy="32.797306" cx="28.935429" gradientTransform="matrix(1,-0.2,0.2,1,78.2,6.8)" gradientUnits="userSpaceOnUse" id="radialGradient3986-5" xlink:href="#R0-45-7" inkscape:collect="always"/>
<radialGradient fy="32.797306" fx="28.935429" r="22" gradientTransform="matrix(1,-0.2,0.2,1,-3.8,6.8)" cx="28.935429" cy="32.797306" gradientUnits="userSpaceOnUse" id="R0-45-7">
<stop offset="0" stop-color="#e6cf00" id="s1-5-6"/>
<stop offset="1" stop-color="#fde94a" id="s2-1-1"/>
</radialGradient>
<radialGradient inkscape:collect="always" xlink:href="#R0-45-7" id="radialGradient4007" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,-0.2,0.2,1,78.2,6.8)" cx="28.935429" cy="32.797306" fx="28.935429" fy="32.797306" r="22"/>
<radialGradient r="22" fy="32.797306" fx="28.935429" cy="32.797306" cx="28.935429" gradientTransform="matrix(1,-0.2,0.2,1,78.2,6.8)" gradientUnits="userSpaceOnUse" id="radialGradient3986-5-2" xlink:href="#R0-45-7-7" inkscape:collect="always"/>
<radialGradient fy="32.797306" fx="28.935429" r="22" gradientTransform="matrix(1,-0.2,0.2,1,-3.8,6.8)" cx="28.935429" cy="32.797306" gradientUnits="userSpaceOnUse" id="R0-45-7-7">
<stop offset="0" stop-color="#e6cf00" id="s1-5-6-9"/>
<stop offset="1" stop-color="#fde94a" id="s2-1-1-5"/>
</radialGradient>
<radialGradient inkscape:collect="always" xlink:href="#R0-45-7-7" id="radialGradient4041" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,-0.2,0.2,1,78.2,6.8)" cx="28.935429" cy="32.797306" fx="28.935429" fy="32.797306" r="22"/>
<radialGradient r="22" fy="32.797306" fx="28.935429" cy="32.797306" cx="28.935429" gradientTransform="matrix(1,-0.2,0.2,1,78.2,6.8)" gradientUnits="userSpaceOnUse" id="radialGradient4065" xlink:href="#R0-45" inkscape:collect="always"/>
<radialGradient r="22" fy="32.797306" fx="28.935429" cy="32.797306" cx="28.935429" gradientTransform="matrix(1,-0.2,0.2,1,78.2,6.8)" gradientUnits="userSpaceOnUse" id="radialGradient4065-4" xlink:href="#R0-45-3" inkscape:collect="always"/>
<radialGradient fy="32.797306" fx="28.935429" r="22" gradientTransform="matrix(1,-0.2,0.2,1,-3.8,6.8)" cx="28.935429" cy="32.797306" gradientUnits="userSpaceOnUse" id="R0-45-3">
<stop offset="0" stop-color="#e6cf00" id="s1-5-1"/>
<stop offset="1" stop-color="#fde94a" id="s2-1-2"/>
</radialGradient>
<radialGradient r="22" fy="32.797306" fx="28.935429" cy="32.797306" cx="28.935429" gradientTransform="matrix(1.0439725,-0.20879451,0.20879451,1.0439725,-147.8058,553.72738)" gradientUnits="userSpaceOnUse" id="radialGradient4113" xlink:href="#R0-45-7-7" inkscape:collect="always"/>
<radialGradient r="22" fy="32.797306" fx="28.935429" cy="32.797306" cx="28.935429" gradientTransform="matrix(1,-0.2,0.2,1,78.2,6.8)" gradientUnits="userSpaceOnUse" id="radialGradient4117" xlink:href="#R0-45" inkscape:collect="always"/>
<radialGradient r="22" fy="32.797306" fx="28.935429" cy="32.797306" cx="28.935429" gradientTransform="matrix(0.61925922,-1.4303233,1.4303233,0.61925922,-39.346374,44.502008)" gradientUnits="userSpaceOnUse" id="radialGradient4120" xlink:href="#R0-45" inkscape:collect="always"/>
</defs>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="3.959798" inkscape:cx="21.898881" inkscape:cy="30.152565" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" inkscape:window-width="1440" inkscape:window-height="815" inkscape:window-x="0" inkscape:window-y="1" inkscape:window-maximized="1"/>
<metadata id="metadata7">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(229.66854,-548.40793)">
<path id="hl" d="m -206.82877,565.402 2.03199,0.91795 c 1.54237,0.71307 0.75483,0.33719 2.36782,1.12659 -4.12683,1.94063 -0.28812,2.61772 -4.43562,5.1369 l 0.0102,-0.70185 c 0.0502,-4.01163 -0.32955,1.92558 0.0256,-6.47959 z" style="opacity:0.8;fill:url(#linearGradient2995)" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccc"/>
<circle r="22.95425" cy="572.36218" cx="-205.71429" id="path3932" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient4113);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"/>
<circle r="20.743464" cy="572.36218" cx="-205.71429" style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.68999999;fill:none;stroke:#ffffff;stroke-width:2.53080082;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" id="path4067"/>
<flowRoot style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;letter-spacing:2.72000003px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" id="flowRoot3379" xml:space="preserve" transform="translate(-229.71429,548.3622)"><flowRegion id="flowRegion3381"><rect style="font-size:22.5px" y="12.076912" x="10.03369" height="29.110088" width="28.986216" id="rect3383"/></flowRegion><flowPara id="flowPara3385"/></flowRoot> <g transform="matrix(0.03231979,0,0,0.03231979,-180.85582,575.47438)" id="layer1-2">
<g transform="matrix(0,-17.254,17.254,0,10443,-2252.9)" id="g11676">
<path transform="translate(1.1045,-949.48)" style="color:#000000" d="m -134.38,309.5 c 0,4.1683 -3.3791,7.5474 -7.5474,7.5474 -4.1683,0 -7.5474,-3.3791 -7.5474,-7.5474 0,-4.1683 3.3791,-7.5474 7.5474,-7.5474 4.1683,0 7.5474,3.3791 7.5474,7.5474 z" id="path11666" inkscape:connector-curvature="0"/>
<path transform="translate(32.767,-949.48)" style="color:#000000" d="m -134.38,309.5 c 0,4.1683 -3.3791,7.5474 -7.5474,7.5474 -4.1683,0 -7.5474,-3.3791 -7.5474,-7.5474 0,-4.1683 3.3791,-7.5474 7.5474,-7.5474 4.1683,0 7.5474,3.3791 7.5474,7.5474 z" id="path11668" inkscape:connector-curvature="0"/>
<path transform="translate(16.936,-976.35)" style="color:#000000" d="m -134.38,309.5 c 0,4.1683 -3.3791,7.5474 -7.5474,7.5474 -4.1683,0 -7.5474,-3.3791 -7.5474,-7.5474 0,-4.1683 3.3791,-7.5474 7.5474,-7.5474 4.1683,0 7.5474,3.3791 7.5474,7.5474 z" id="path11670" inkscape:connector-curvature="0"/>
<rect x="488.22" y="-443.73001" width="27.691999" height="3" transform="matrix(0.49998488,-0.86603413,0.86603413,0.49998488,0,0)" style="color:#000000" id="rect11672"/>
<rect x="613.15997" y="-226.89999" width="27.691999" height="3" transform="matrix(-0.5,-0.86603,-0.86603,0.5,0,0)" style="color:#000000" id="rect11674"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB