Merge branch 'master' of github.com:ipfs/awesome-ipfs

This commit is contained in:
zcr 2019-05-08 20:05:29 +08:00
commit 7917d97231
27 changed files with 452 additions and 296 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

@ -3,4 +3,4 @@ build:
node --version node --version
npm install npm install
npm run lint npm run lint
npm run build npm run build

View File

@ -28,14 +28,15 @@ 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)
- [a qr-code renderer](https://github.com/ipfs/website/tree/master/content/docs/examples/webapps/qr-render) - [Demo](https://ipfs.io/ipfs/QmccqhJg5wm5kNjAP4k4HrYxoqaXUGNuotDUqfvYBx8jrR/qr#enter%20text%20here) - [a qr-code renderer](https://github.com/ipfs/website/tree/master/content/docs/examples/webapps/qr-render) - [Demo](https://ipfs.io/ipfs/QmccqhJg5wm5kNjAP4k4HrYxoqaXUGNuotDUqfvYBx8jrR/qr#enter%20text%20here)
- [AirSecure](https://github.com/airsecure/airsecure) - Decentralized two factor authentication app built on Textile & IPFS.
- [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.
@ -45,15 +46,15 @@ Everyone is welcome to submit their new awesome-ipfs item. In order to add an el
- [Computes](https://computes.io) - Computes.io is a distributed supercomputer powered by IPFS. - [Computes](https://computes.io) - Computes.io is a distributed supercomputer powered by IPFS.
- [dapple](https://github.com/nexusdev/dapple) - Dapple is a Solidity developer multitool designed to manage the growing complexity of interconnected smart contract systems. - [dapple](https://github.com/nexusdev/dapple) - Dapple is a Solidity developer multitool designed to manage the growing complexity of interconnected smart contract systems.
- [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.
- [DtinyUrl](http://t.bdaily.club) - Dcentralized url shortening service base on ipfs - [Discussify](https://github.com/ipfs-shipyard/discussify-browser-extension) - Discussify provides a real-time, peer to peer, and permanent discussion platform for anyone to join and participate.
- [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.
@ -66,19 +67,21 @@ 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 - [IpfsCloud](https://ipfscloud.store) - A Decentralized, Anonymous Cloud Storage Platform on IPFS. [Source](https://github.com/cluster-labs/ipfscloud-web)
- [KDE-DolphinServiceMenu-IPFS](https://github.com/amar-laksh/KDE-DolphinServiceMenu-IPFS) - Service Menu for Dolphin File Manager to upload files to IPFS The open network for transaction requests.
- [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.
- [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. - [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) - [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) - [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. - [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 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) - [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)
@ -87,9 +90,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](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)
@ -109,7 +112,6 @@ Everyone is welcome to submit their new awesome-ipfs item. In order to add an el
- 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/)
@ -121,30 +123,31 @@ 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.
- [ipcat](https://github.com/noffle/ipcat) - :cat2: Retrieve IPFS object data and send it to stdout. - [ipcat](https://github.com/noffle/ipcat) - :cat2: Retrieve IPFS object data and send it to stdout.
- [IPDR](https://github.com/miguelmota/ipdr) - IPFS-backed Docker Registry
- [ipfs-add-from-encrypted](https://github.com/TroyWilson1/ipfs-add-from-encrypted) - Encrypt a file or directory with AES256 then add to IPFS - [ipfs-add-from-encrypted](https://github.com/TroyWilson1/ipfs-add-from-encrypted) - Encrypt a file or directory with AES256 then add to IPFS
- [ipfs-add-from-url](https://github.com/maxlath/ipfs-add-from-url) - Add a file to IPFS from a URL instead of a file path - [ipfs-add-from-url](https://github.com/maxlath/ipfs-add-from-url) - Add a file to IPFS from a URL instead of a file path
- [ipfs-chrome-extension](https://github.com/dylanPowers/ipfs-chrome-extension) - Chrome extension to redirect ipfs.io traffic to local gateway - [ipfs-chrome-extension](https://github.com/dylanPowers/ipfs-chrome-extension) - Chrome extension to redirect ipfs.io traffic to local gateway
- [ipfs-chrome-station](https://github.com/fbaiodias/ipfs-chrome-station) - Chrome extension to redirect ipfs.io traffic to local gateway - [ipfs-chrome-station](https://github.com/fbaiodias/ipfs-chrome-station) - Chrome extension to redirect ipfs.io traffic to local gateway
- [ipfs-common](https://github.com/arsyun) - some common tools, 1.CID to human readable cid, 2.cid and block name convert, 3. read the leveldb tools. [Source](https://github.com/arsyun/ipfs-common) - [ipfs-common](https://github.com/arsyun) - Some common tools, 1.CID to human readable cid, 2.cid and block name convert, 3. read the leveldb tools. [Source](https://github.com/arsyun/ipfs-common)
- [ipfs-companion](https://github.com/ipfs/ipfs-companion) - Browser extension that simplifies access to IPFS resources. - [ipfs-companion](https://github.com/ipfs/ipfs-companion) - Browser extension that simplifies access to IPFS resources.
- [ipfs-gui](https://github.com/marcin212/ipfs-gui) - Windows UI integration and IPFS installer - [ipfs-gui](https://github.com/marcin212/ipfs-gui) - Windows UI integration and IPFS installer
- [ipfs-linux-service](https://github.com/dylanPowers/ipfs-linux-service) - IPFS Linux Init Daemon - [ipfs-linux-service](https://github.com/dylanPowers/ipfs-linux-service) - IPFS Linux Init Daemon
- [ipfs-mount](https://github.com/richardschneider/net-ipfs-mount) - Mount IPFS as a mapped drive on Windows - [ipfs-mount](https://github.com/richardschneider/net-ipfs-mount) - Mount IPFS as a mapped drive on Windows
- [ipfs-paste](https://github.com/jbenet/ipfs-paste) - Paste stdin and clipboard to IPFS - [ipfs-paste](https://github.com/jbenet/ipfs-paste) - Paste stdin and clipboard to IPFS
- [ipfs-publish](https://ipfs-publish.uhlir.dev) - Continuous Delivery tool for delivery of static websites from Git providers to IPFS. [Source](https://github.com/AuHau/ipfs-publish)
- [ipfs-screencap](https://github.com/jbenet/ipfs-screencap) - Capture screenshots, publish them to IPFS, and copy the link to the clipboard. - [ipfs-screencap](https://github.com/jbenet/ipfs-screencap) - Capture screenshots, publish them to IPFS, and copy the link to the clipboard.
- [ipfscrape](https://github.com/victorbjelkholm/ipfscrape) - Scrape a webpage with all assets and put it in IPFS - [ipfscrape](https://github.com/victorbjelkholm/ipfscrape) - Scrape a webpage with all assets and put it in IPFS
- [ipfsecret](https://github.com/c2fo-lab/ipfsecret) - Encrypt and decrypt IPFS files with a secret passphrase - [ipfsecret](https://github.com/c2fo-lab/ipfsecret) - Encrypt and decrypt IPFS files with a secret passphrase
@ -152,8 +155,11 @@ 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) - [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. - [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
- [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 - [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
@ -147,13 +158,11 @@ content:
description: > description: >
Distributed, peer-to-peer chat application on IPFS. Distributed, peer-to-peer chat application on IPFS.
- title: Partyshare - title: Partyshare
website: https://partysha.re website: https://busterlabs.github.io/Partyshare
source: https://github.com/BusterLabs/Partyshare
picture: /images/Partyshare_Logo.png
description: > description: >
A simple file sharing 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: >
@ -166,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: >
@ -197,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
@ -209,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: >
@ -301,6 +305,11 @@ content:
Run your IPFS node on your machine without having to bother with command line tools. 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 Manage your node, add your files, easily change the settings... everything from
just one interface. 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 - title: 3Box
website: https://3box.io website: https://3box.io
source: https://github.com/uport-project/3box source: https://github.com/uport-project/3box
@ -316,13 +325,23 @@ content:
source: https://github.com/amar-laksh/xfce-screenshooter-ipfs-support source: https://github.com/amar-laksh/xfce-screenshooter-ipfs-support
description: > description: >
A fork of xfce-screenshooter with IPFS support! A fork of xfce-screenshooter with IPFS support!
- title: Request Network - title: Request
website: https://request.network/ website: https://request.network/
source: https://github.com/RequestNetwork/requestNetwork source: https://github.com/RequestNetwork/requestNetwork
picture: /images/request-network.png picture: /images/request.svg
description: > description: >
Decentralized network for financial transactions. Decentralized network for financial transactions.
- title: DtinyUrl - title: KDE-DolphinServiceMenu-IPFS
website: http://t.bdaily.club source: https://github.com/amar-laksh/KDE-DolphinServiceMenu-IPFS
description: > description: >
Dcentralized url shortening service base on ipfs Service Menu for Dolphin File Manager to upload files to IPFS
The open network for transaction requests.
- title: Discussify
source: https://github.com/ipfs-shipyard/discussify-browser-extension
description: >
Discussify provides a real-time, peer to peer, and permanent discussion platform
for anyone to join and participate.
- title: AirSecure
source: https://github.com/airsecure/airsecure
description: >
Decentralized two factor authentication app built on Textile & IPFS.

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
@ -97,4 +100,21 @@ content:
website: https://github.com/arsyun website: https://github.com/arsyun
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: ipfs-publish
picture: /images/ipfs-publish.png
website: https://ipfs-publish.uhlir.dev
source: https://github.com/AuHau/ipfs-publish
description: Continuous Delivery tool for delivery of static websites from Git providers to IPFS.
- 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.
- title: IPDR
website: https://github.com/miguelmota/ipdr
description: IPFS-backed Docker Registry

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

@ -2,8 +2,8 @@
<html lang="{{ .Site.LanguageCode }}"> <html lang="{{ .Site.LanguageCode }}">
<head> <head>
{{ partial "head" . }} {{ partial "head" . }}
{{ partial "analytics" . }}
</head> </head>
<body> <body>
<div class="charcoal sans-serif w-90 mw8 center"> <div class="charcoal sans-serif w-90 mw8 center">
<nav class="mh2 montserrat mv4 fw6 flex-wrap ttu tracked sans-serif flex flex-between"> <nav class="mh2 montserrat mv4 fw6 flex-wrap ttu tracked sans-serif flex flex-between">
@ -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

@ -0,0 +1,70 @@
<!-- Google Analytics -->
<script>
// https://github.com/schalkneethling/dnt-helper/blob/master/js/dnt-helper.js
function _dntEnabled(dnt, userAgent) {
"use strict";
var dntStatus =
dnt ||
navigator.doNotTrack ||
window.doNotTrack ||
navigator.msDoNotTrack;
var ua = userAgent || navigator.userAgent;
var anomalousWinVersions = [
"Windows NT 6.1",
"Windows NT 6.2",
"Windows NT 6.3"
];
var fxMatch = ua.match(/Firefox\/(\d+)/);
var ieRegEx = /MSIE|Trident/i;
var isIE = ieRegEx.test(ua);
var platform = ua.match(/Windows.+?(?=;)/g);
if (isIE && typeof Array.prototype.indexOf !== "function") {
return false;
} else if (fxMatch && parseInt(fxMatch[1], 10) < 32) {
dntStatus = "Unspecified";
} else if (
isIE &&
platform &&
anomalousWinVersions.indexOf(platform.toString()) !== -1
) {
dntStatus = "Unspecified";
} else {
dntStatus =
{ "0": "Disabled", "1": "Enabled" }[dntStatus] || "Unspecified";
}
return dntStatus === "Enabled";
}
(function() {
if (!_dntEnabled() && location.hostname !== "localhost") {
!(function(n, o, d, e, j, s) {
n.GoogleAnalyticsObject = d;
n[d] ||
(n[d] = function() {
(n[d].q = n[d].q || []).push(arguments);
});
n[d].l = +new Date();
j = o.createElement(e);
s = o.getElementsByTagName(e)[0];
j.async = 1;
j.src = "//www.google-analytics.com/analytics.js";
s.parentNode.insertBefore(j, s);
})(window, document, "ga", "script");
if (!ga) return;
ga("create", "UA-96910779-8", "auto");
ga("send", "pageview");
// track outbound project clicks
document.addEventListener(
"click",
function(e) {
var href = e.target.closest("a") && e.target.closest("a").href;
if (href && href.indexOf("http") > -1) {
ga("send", "event", "outbound", "click", href);
}
},
false
);
}
})();
</script>

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: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 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