Merge branch 'master' into ipdr

This commit is contained in:
Henrique Dias 2019-04-30 18:00:33 +01:00 committed by GitHub
commit 5c831b79e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 271 additions and 305 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
dist
/src/resources
/src/data
/src/content
/src/layouts/partials/indexes
/src/static/fonts
/src/static/app.css
/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

@ -36,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.
@ -48,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.
@ -66,19 +65,19 @@ 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.
- [OpenBazaar](https://www.openbazaar.org/) - This new version(v2.0) is built on IPFS, Openbazaar stores can now be accessible to buyers even when they are offline.
- [Orbit](https://orbit.chat) - Distributed, peer-to-peer chat application on IPFS. [Source](https://github.com/haadcode/orbit)
- [Origin Protocol](https://demo.originprotocol.com/) - Distributed sharing economy marketplace with images, metadata, and ERC 725 data stored on IPFS. [Source](https://github.com/OriginProtocol/demo-dapp)
- [Partyshare](https://partysha.re) - A simple file sharing app.
- [Partyshare](https://busterlabs.github.io/Partyshare) - A simple file sharing desktop app. [Source](https://github.com/BusterLabs/Partyshare)
- [Pathephone](https://pathephone.github.io) - Distributed music streaming app.
- [Peer Bandwidth Demo](https://ipfs.io/ipfs/QmVaVXbLdw4R5NqAiiQoTWtitxo5g7FS31PQmCLbH9p8Fu/) - An demo app that uses window.ipfs, provided by the IPFS Companion web extension to get and graph bandwidth info for your IPFS node [Source](https://github.com/tableflip/ipfs-peer-bw-example)
- [Peer Map Demo](https://ipfs.io/ipfs/QmRPGCmLKH2dQmNiPRsiuYS9EhhJL1Gmkz5F75gKY1K4Bm/) - A map of IPv4 IPFS peers that uses window.ipfs [Source](https://github.com/tableflip/ipfs-peer-map-example)
@ -99,21 +98,20 @@ Everyone is welcome to submit their new awesome-ipfs item. In order to add an el
## Articles
- 2018-08-06: [Content Identifiers in IPFS](https://pascalprecht.github.io/posts/content-identifiers-in-ipfs/)
- 2018-07-11: [On future-proof cryptographic hashes](https://pascalprecht.github.io/posts/future-proofed-hashes-with-multihash/)
- 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)
- 2018-08-06: [Content Identifiers in IPFS](https://pascalprecht.github.io/posts/content-identifiers-in-ipfs/)
- 2018-07-11: [On future-proof cryptographic hashes](https://pascalprecht.github.io/posts/future-proofed-hashes-with-multihash/)
- 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-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)
## Datasets
@ -121,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,9 +149,12 @@ Everyone is welcome to submit their new awesome-ipfs item. In order to add an el
- [IPLD Explorer](https://explore.ipld.io) - Explore the Merkle Forest from the comfort of your browser [Source](https://github.com/ipfs-shipyard/ipld-explorer)
- [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
- [mahuta](https://github.com/ConsenSys/Mahuta) - Mahuta is a plug and play service for your micro-service architecture allowing to collect, store and index data on IPFS and offering search functionalities (full text, query).
- [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)
- [IPDR](https://github.com/miguelmota/ipdr) - IPFS-backed Docker Registry
- [Sweet IPFS](https://github.com/RHazDev/Sweet-IPFS) - Full node for Android
## Videos

4
ci/Jenkinsfile vendored
View File

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

View File

@ -73,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
@ -123,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: >
@ -138,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
@ -154,13 +158,11 @@ content:
description: >
Distributed, peer-to-peer chat application on IPFS.
- title: Partyshare
website: https://partysha.re
website: https://busterlabs.github.io/Partyshare
source: https://github.com/BusterLabs/Partyshare
picture: /images/Partyshare_Logo.png
description: >
A simple file sharing app.
- title: FileNation
website: https://filenation.io/
description: >
The simplest way to send your files around the world using IPFS.
A simple file sharing desktop app.
- title: Playback
source: https://mafintosh.github.io/playback/
description: >
@ -204,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
@ -216,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: >
@ -308,6 +305,11 @@ content:
Run your IPFS node on your machine without having to bother with command line tools.
Manage your node, add your files, easily change the settings... everything from
just one interface.
- title: IpfsCloud
source: https://github.com/cluster-labs/ipfscloud-web
website: https://ipfscloud.store
description: >
A Decentralized, Anonymous Cloud Storage Platform on IPFS.
- title: 3Box
website: https://3box.io
source: https://github.com/uport-project/3box
@ -323,9 +325,9 @@ content:
source: https://github.com/amar-laksh/xfce-screenshooter-ipfs-support
description: >
A fork of xfce-screenshooter with IPFS support!
- title: Request Network
- title: Request
website: https://request.network/
source: https://github.com/RequestNetwork/requestNetwork
picture: /images/request-network.png
picture: /images/request.svg
description: >
Decentralized network for financial transactions.
The open network for transaction requests.

View File

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

View File

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

View File

@ -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,12 @@ 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: mahuta
website: https://github.com/ConsenSys/Mahuta
source: https://github.com/ConsenSys/Mahuta
description: >
Mahuta is a plug and play service for your micro-service architecture allowing to collect, store and index data on IPFS and offering search functionalities (full text, query).
- 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",
"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"
},

View File

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

View File

@ -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, `<script>var idx = JSON.parse(\`${json}\`);</script>`)
}
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)}
<script>var idx = JSON.parse(\`${JSON.stringify(index).replace(`'`, `\\'`)}\`);</script>`)
}
}
process()

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

View File

@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><defs><style>.cls-1{fill:#00261b;}.cls-2{fill:#008c62;}.cls-3{fill:#00e6a0;}.cls-4{fill:#fff;}</style></defs><title>Artboard 1</title><rect class="cls-1" width="600" height="600"/><g id="Request_Green_Logo_for_Background" data-name="Request Green Logo for Background"><path class="cls-2" d="M360.36,265.6l93.88-93.53a37.26,37.26,0,0,0,11-26.41L465.39,70a15.18,15.18,0,0,0-4.21-10.43L281.06,239.13A37.38,37.38,0,0,0,281,292l.08.07,127,126.59a37.36,37.36,0,1,0,52.75-52.93Z"/><path class="cls-3" d="M450.69,55.35H167.87c-23,0-39.87,17.28-39.87,40.89V391.4a37.58,37.58,0,0,0,38.06,38.06h0c21,0,38.06-16,38.06-38.06V128.18H392.35l68.83-68.6A14.53,14.53,0,0,0,450.69,55.35Z"/><path class="cls-4" d="M138.57,503.45v22.8H128V465.5h27.54c14.4,0,21.72,6.83,21.72,17.39,0,8.76-6.32,15.15-15.81,16.9a16.09,16.09,0,0,1,6.66,2.24c3.5,2.25,5.33,6.33,7.32,13.32l3.16,10.9H167.36l-2.82-10.74c-2.58-9.89-5-12.06-15.57-12.06Zm0-28.8v21.14h14c9.15,0,14.23-4.16,14.23-10.9,0-6.49-4.08-10.24-13.81-10.24Z"/><path class="cls-4" d="M206.05,527.08c-16.06,0-24.29-10.23-24.29-23.88,0-13.23,9.07-24.47,24-24.47,15.23,0,22.39,10.9,22.39,23.39v3.66H191.91c.83,7.9,5.57,12.65,14,12.65,6.09,0,9.57-2.5,12.31-7.33l8.75,4.75C223,522.42,216.46,527.08,206.05,527.08Zm-14-27.78h25.8c-.42-6.92-4.08-12-12.23-12-7.74,0-12.4,4.49-13.57,12Z"/><path class="cls-4" d="M255.23,479.07c7.57,0,12.65,3.33,15.56,10v-9.4h10.32v64.57H270.63V516.61c-3.08,6.58-8.74,10.24-16.23,10.24-11.07,0-20.06-7.91-20.06-23.64C234.34,487.14,244.58,479.07,255.23,479.07Zm16.31,23.8c0-8.91-4.07-15.4-13.32-15.4-8.65,0-13.23,6.24-13.23,15.56s4.33,15.22,13.23,15.22c9.25,0,13.32-6.48,13.32-15.38Z"/><path class="cls-4" d="M334.2,526.25H323.8v-11c-3.16,7.9-8.91,11.89-16,11.89-11.24,0-16.65-7.49-16.65-18.88V479.65h10.41v25.8c0,7.9,2.75,13,10.57,13,7.15,0,11.57-6.16,11.57-15.9V479.65H334.2Z"/><path class="cls-4" d="M366.65,527.08c-16.06,0-24.3-10.23-24.3-23.88,0-13.23,9.08-24.47,24-24.47,15.22,0,22.38,10.9,22.38,23.39v3.66h-36.2c.83,7.9,5.57,12.65,14,12.65,6.09,0,9.58-2.5,12.32-7.33l8.75,4.75C383.55,522.42,377.05,527.08,366.65,527.08Zm-14-27.78h25.8c-.43-6.92-4.08-12-12.23-12-7.74,0-12.4,4.49-13.57,12Z"/><path class="cls-4" d="M400.85,510.86c3.83,5,8.49,7.66,15.31,7.66,6.41,0,9.07-3.08,9.07-6.32,0-4.75-7.32-5.08-15.64-6.5-8.24-1.25-14.57-4.07-14.57-12.48,0-8.16,6.83-14.65,18.56-14.65,9.49,0,16.15,2.83,21.8,9.49l-8,6.83c-3.57-5.08-8-7.58-14.39-7.58s-8.82,2.91-8.82,6c0,4.16,5.49,4.91,13.23,6.09,8.82,1.33,17.06,3.43,17.06,12.82,0,8.75-7,15.06-18.56,15.06-10.57,0-18.06-3.49-22.64-9.24Z"/><path class="cls-4" d="M472,525.17a18.22,18.22,0,0,1-8.65,1.9c-10.16,0-14.32-5.41-14.32-15.73v-23H438.38v-8.65h10.73v-11.8l9.74-5.82v17.64H472v8.65H458.85v21.8c0,5.83,2.41,8,7,8a14.34,14.34,0,0,0,6.16-1.34Z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB