From 29df7fefb4cbf270981bd4963c8307b01b6e4b69 Mon Sep 17 00:00:00 2001 From: Harsh Agrawal Date: Mon, 6 Jun 2022 15:20:49 +0530 Subject: [PATCH] Refactor code. Replace airtable by local json. --- app/components/{LogoCard.js => LogoCard.jsx} | 8 +- app/components/ToolModal.jsx | 121 +++ app/data/landscape.json | 921 +++++++++++++++++++ app/package.json | 2 - app/pages/_app.tsx | 2 +- app/pages/_document.tsx | 4 +- app/pages/index.tsx | 183 +--- app/util/airtable/index.js | 46 - app/yarn.lock | 63 -- 9 files changed, 1073 insertions(+), 277 deletions(-) rename app/components/{LogoCard.js => LogoCard.jsx} (77%) create mode 100644 app/components/ToolModal.jsx create mode 100644 app/data/landscape.json delete mode 100644 app/util/airtable/index.js diff --git a/app/components/LogoCard.js b/app/components/LogoCard.jsx similarity index 77% rename from app/components/LogoCard.js rename to app/components/LogoCard.jsx index bc8449f..241cfc1 100644 --- a/app/components/LogoCard.js +++ b/app/components/LogoCard.jsx @@ -2,7 +2,7 @@ import React from 'react' import { Card, Row } from '@nextui-org/react' export default function LogoCard({ item, onClick }) { - const logoUrl = (item.logo || []).length > 0 ? item.logo[0].url : item.logoUrl + const { logo, title, name } = item return (
{item.title}
-

{item.name}

+

{name}

diff --git a/app/components/ToolModal.jsx b/app/components/ToolModal.jsx new file mode 100644 index 0000000..d186404 --- /dev/null +++ b/app/components/ToolModal.jsx @@ -0,0 +1,121 @@ +import { Modal } from '@nextui-org/react' + +const extractTwitterUsernameFromUrl = (twitterUrl) => { + try { + return twitterUrl.replace(/\/$/, '').replace('https://twitter.com/', '@') + } catch (e) { + return '' + } +} + +const cleanUrl = (websiteUrl) => { + try { + return websiteUrl + .replace(/\/$/, '') + .replace('https://', '') + .replace('www.', '') + } catch (e) { + return '' + } +} + +export default function ToolModal({ visible, setVisible, currentItem }){ + const { name, full_name, description, website, title, logo, github, twitter, crunchbase, funding } = currentItem + + const closeHandler = () => { + setVisible(false) + } + + return ( + + +
+ {title} +

{full_name || name}

+

{description}

+
+
+ {cleanUrl(website) && ( +

+ Website{' '} + + {cleanUrl(website)} + +

+ )} +
+
+ {extractTwitterUsernameFromUrl(twitter) && ( +

+ Twitter{' '} + + {extractTwitterUsernameFromUrl(twitter)} + +

+ )} +
+
+ {cleanUrl(github) && ( +

+ GitHub{' '} + + {cleanUrl(github)} + +

+ )} +
+
+ {cleanUrl(crunchbase) && ( +

+ + Crunchbase + {' '} + + {cleanUrl(crunchbase)} + +

+ )} +
+
+ {funding && ( +

+ Funding{' '} + {funding} +

+ )} +
+
+
+
+
+ ) +} \ No newline at end of file diff --git a/app/data/landscape.json b/app/data/landscape.json new file mode 100644 index 0000000..514e484 --- /dev/null +++ b/app/data/landscape.json @@ -0,0 +1,921 @@ +[ + { + "name": "IDEs", + "items": [ + { + "description": "Microsoft Visual Studio Code lets you build and debug modern web and cloud applications. Visual Studio Code is free and available on Linux, macOS, and Windows.", + "github": "https://github.com/Microsoft/vscode", + "name": "VSCode", + "twitter": "https://twitter.com/code", + "website": "https://code.visualstudio.com/", + "category": "IDEs", + "full_name": "VSCode", + "logo": "https://dl.airtable.com/.attachments/46dabca92365f6ddc50f626d2a55406a/8711b6f2/Pt-7RucE_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=32837745abc16979" + }, + { + "description": "Remix IDE allows developing, deploying and administering smart contracts for Ethereum like blockchains. It can also be used as a learning platform.", + "github": "https://github.com/ethereum/remix-ide", + "name": "Remix", + "twitter": "https://twitter.com/EthereumRemix", + "website": "https://remix-project.org/", + "category": "IDEs", + "full_name": "Remix", + "logo": "https://dl.airtable.com/.attachments/61935b43d1f3027e9b31fec7ed5c9c59/51cea0d5/fuv2rwTA_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=f031972d97c92e4d" + }, + { + "description": "Atom is a free and open-source text and source code editor for macOS, Linux, and Microsoft Windows with support for plug-ins written in JavaScript, and embedded Git Control. Developed by GitHub, Atom is a desktop application built using web technologies.", + "github": "https://github.com/atom", + "name": "Atom", + "twitter": "https://twitter.com/atomeditor", + "website": "https://atom.io/", + "category": "IDEs", + "full_name": "Atom", + "logo": "https://dl.airtable.com/.attachments/c958ce1236a6480c2bf76a4375885088/5f146814/L7hkgWm7_200x200.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=2a9b951d654ed5cc" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/sublime-text", + "description": "Sublime Text is a shareware cross-platform source code editor. It natively supports many programming languages and markup languages. Users can expand its functionality with plugins, typically community-built and maintained under free-software licenses.", + "github": "https://github.com/SublimeText", + "name": "Sublime Text", + "twitter": "https://twitter.com/sublimehq", + "website": "https://www.sublimetext.com/", + "category": "IDEs", + "full_name": "Sublime Text", + "logo": "https://dl.airtable.com/.attachments/e668422300c17f17e0bff2913e0a1e24/56871d98/w628Yrnl_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=112d2104078bfc82" + }, + { + "description": "WebStorm is an integrated development environment for JavaScript and related technologies. Like other JetBrains IDEs, it makes your development experience more enjoyable, automating routine work and helping you handle complex tasks with ease.", + "name": "WebStorm", + "twitter": "https://twitter.com/WebStormIDE", + "website": "https://www.jetbrains.com/webstorm/", + "category": "IDEs", + "full_name": "WebStorm", + "logo": "https://dl.airtable.com/.attachments/c2159361a1a8ca8b7831baa0169fb8f7/d5af8394/webstorm_logo_300x300.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=4784ddcd0e302437" + } + ] + }, + { + "name": "Development Frameworks", + "items": [ + { + "description": "Hardhat is a development environment to compile, deploy, test, and debug your Ethereum software. It helps developers manage and automate the recurring tasks that are inherent to the process of building smart contracts and dApps, as well as easily introducing more functionality around this workflow.", + "github": "https://github.com/NomicFoundation/hardhat", + "name": "Hardhat", + "twitter": "https://twitter.com/HardhatHQ", + "website": "https://hardhat.org/", + "category": "Development Frameworks", + "full_name": "Hardhat", + "logo": "https://dl.airtable.com/.attachments/cfc74d8340715eb61df537691423b6f1/4e5c359c/XQkaoFRg_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=a4ed90b892618fcb" + }, + { + "description": "Brownie is a Python-based development and testing framework for smart contracts targeting the Ethereum Virtual Machine.\n", + "github": "https://github.com/eth-brownie/brownie", + "name": "Brownie", + "twitter": "https://twitter.com/brownieeth", + "website": "https://eth-brownie.readthedocs.io/en/stable/", + "category": "Development Frameworks", + "full_name": "Brownie", + "logo": "https://dl.airtable.com/.attachments/318972e3136200be73b1925a8115289d/b1be3e3c/lVNRIOmn_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=625952d6a8794959" + }, + { + "description": "Command line tools and smart contract libraries for Ethereum smart contract development.", + "github": "https://github.com/dapphub/dapptools", + "name": "dapp.tools", + "twitter": "https://twitter.com/dapptools", + "website": "https://dapp.tools/", + "category": "Development Frameworks", + "full_name": "dapp.tools", + "logo": "https://dl.airtable.com/.attachments/c3b0d1dfab128379f75bf5bb6ca32180/b25f454d/d1MS46O3_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=bf5887f88b3dcb91" + }, + { + "description": "A world class development environment, testing framework and asset pipeline for blockchains using the Ethereum Virtual Machine (EVM), aiming to make life as a developer easier.", + "github": "https://github.com/trufflesuite/truffle", + "name": "Truffle", + "twitter": "https://twitter.com/trufflesuite", + "website": "https://trufflesuite.com/", + "category": "Development Frameworks", + "full_name": "Truffle", + "logo": "https://dl.airtable.com/.attachments/d09ab62d3bbe929744f6047df6f69af5/a2848042/i05qk7Ey_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=3d0c236b3381eea8" + }, + { + "description": "Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.", + "github": "https://github.com/foundry-rs/foundry", + "name": "Foundry", + "website": "https://getfoundry.sh/", + "category": "Development Frameworks", + "full_name": "Foundry", + "logo": "https://dl.airtable.com/.attachments/a204e7e915b46d8a9ed368ac454cebb5/5c739e96/foundry.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=84f0781ad1c72cd2" + }, + { + "description": "Ape is a Python-based development and testing framework for smart contracts targeting the Ethereum Virtual Machine.", + "github": "https://github.com/ApeWorX", + "name": "Apeworx", + "twitter": "https://twitter.com/ApeFramework", + "website": "https://www.apeworx.io/", + "category": "Development Frameworks", + "full_name": "Apeworx", + "logo": "https://dl.airtable.com/.attachments/2c335690f186680eee2f8bebb34860c3/afc6ba31/shnlCRIg_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=6ec14ba31196649a" + } + ] + }, + { + "name": "Open-source libraries", + "items": [ + { + "crunchbase": "https://www.crunchbase.com/organization/openzeppelin", + "description": "OpenZeppelin provides security products to build, automate, and operate decentralized applications. We also protect leading organizations by performing security audits on their systems and products.", + "github": "https://github.com/OpenZeppelin/", + "name": "OpenZeppelin", + "twitter": "https://twitter.com/openzeppelin", + "website": "https://www.openzeppelin.com/", + "category": "Open-source libraries", + "full_name": "OpenZeppelin", + "logo": "https://dl.airtable.com/.attachments/71f07ad85b6c741100fedce88cd41878/36c16daa/9QINcb2f_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=51eef47f968b8300" + }, + { + "description": "Dappsys is a collection of building blocks for building smart contract systems. They are written in Solidity, but deployed objects can be linked to any language.", + "name": "Dappsys", + "twitter": "https://twitter.com/dapptools", + "website": "https://dappsys.readthedocs.io/en/latest/", + "category": "Open-source libraries", + "full_name": "Dappsys", + "logo": "https://dl.airtable.com/.attachments/37cd0f29b02ecda92bcc2150ad178208/084fb9a8/d1MS46O3_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=e931fddf90a0a259" + }, + { + "description": "HQ20/contracts is a Solidity project with contracts, libraries and examples to help you build fully-featured distributed applications for the real world.", + "github": "https://github.com/HQ20/contracts", + "name": "HQ20", + "website": "https://github.com/HQ20/contracts", + "category": "Open-source libraries", + "full_name": "HQ20", + "logo": "https://dl.airtable.com/.attachments/d136f181800f28c460d0aefe105f83c4/7d8829c1/rocking.svg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=1cf4782630bf9984" + } + ] + }, + { + "name": "Identity", + "items": [ + { + "crunchbase": "https://www.crunchbase.com/organization/consensus-systems/", + "description": "MetaMask is a software cryptocurrency wallet used to interact with the Ethereum blockchain. It allows users to access their Ethereum wallet through a browser extension or mobile app, which can then be used to interact with decentralized applications. ", + "github": "https://github.com/MetaMask", + "name": "Metamask", + "twitter": "https://twitter.com/MetaMask", + "website": "https://metamask.io/", + "category": "Identity", + "full_name": "Metamask", + "funding": "$725M", + "logo": "https://dl.airtable.com/.attachments/6ffac34e4e2a9c41cd8701ec4087d32c/3c801f4d/2Ubgzfgg_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=5bc2991f1f10701b" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/walletconnect", + "description": "WalletConnect is an open source protocol for connecting decentralised applications to mobile wallets with QR code scanning or deep linking.", + "github": "https://github.com/WalletConnect", + "name": "WalletConnect", + "twitter": "https://twitter.com/walletconnect", + "website": "https://walletconnect.com/", + "category": "Identity", + "full_name": "WalletConnect", + "funding": "$12.5M", + "logo": "https://dl.airtable.com/.attachments/9176703a24bf66dc1351f75d9dfa0bd8/c95311c1/mQFAbUOX_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=3d63d4cb91f03c82" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/spruce-systems", + "description": "Spruce is an open-source, decentralized identity company that works openly to advance these technologies in a sustainable, standards-driven way. ", + "github": "https://github.com/spruceid/", + "name": "Spruce ID", + "twitter": "https://twitter.com/spruceid", + "website": "https://www.spruceid.com/", + "category": "Identity", + "full_name": "Spruce ID", + "funding": "$41.5M", + "logo": "https://dl.airtable.com/.attachments/dc9e1fbe6e20f86f3fc56a8d81e63bcb/c21ced1f/w_g108oz_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=b44b5cd0fb778b65" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/ledger-2", + "description": "A fast paced, growing company developing security and infrastructure solutions for cryptocurrencies as well as blockchain applications for individuals and companies, by leveraging a distinctive, proprietary technology.", + "github": "https://github.com/ledger/ledger", + "name": "Ledger", + "twitter": "https://twitter.com/Ledger", + "website": "https://www.ledger.com/", + "category": "Identity", + "full_name": "Ledger", + "funding": "$468M", + "logo": "https://dl.airtable.com/.attachments/54c360ad89600f579528b971b1cc5e35/0aa75061/QQRjVYhi_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=6a1356d4027d604a" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/gnosis", + "description": "Gnosis Safe is a smart contract wallet running on Ethereum that requires a minimum number of people to approve a transaction before it can occur (M-of-N).", + "github": "https://github.com/gnosis/safe", + "name": "Gnosis Safe", + "twitter": "https://twitter.com/gnosissafe", + "website": "https://gnosis-safe.io/", + "category": "Identity", + "full_name": "Gnosis Safe", + "funding": "$12.5M", + "logo": "https://dl.airtable.com/.attachments/c975124930489dc0d4f1f0fac1f25321/9610d1d6/zbqAd7u5_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=5b08a3b1b8b6982c" + }, + { + "description": "The Ethereum Name Service (ENS) is a distributed, open, and extensible naming system based on the Ethereum blockchain.", + "github": "https://github.com/ensdomains", + "name": "ENS", + "twitter": "https://twitter.com/ensdomains", + "website": "https://ens.domains/", + "category": "Identity", + "full_name": "Ethereum Name Service", + "logo": "https://dl.airtable.com/.attachments/d558fe3cef65245f03f916c093078ca3/4ffe52cf/enstransparentbackground.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=09f8a12fafede5e8" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/brave-software", + "description": "The secure multi-chain crypto wallet. No extension required.", + "github": "https://github.com/brave/brave-browser/wiki/Brave-Wallet-developer-information", + "name": "Brave Wallet", + "twitter": "https://twitter.com/brave", + "website": "https://brave.com/wallet/", + "category": "Identity", + "full_name": "Brave Wallet", + "funding": "$42M", + "logo": "https://dl.airtable.com/.attachments/3d9581c9825b8fc1b1112677dc4c75c6/c956706d/brave-wallet-logo.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=a63a67c11eb04f8e" + }, + { + "description": "BrightID is a social identity network that allows you to prove that you're only using one account. It's the holy grail of digital identity.", + "github": "https://github.com/BrightID", + "name": "BrightID", + "twitter": "https://twitter.com/BrightIDProject", + "website": "https://www.brightid.org/", + "category": "Identity", + "full_name": "BrightID", + "logo": "https://dl.airtable.com/.attachments/73f71bbce40616a1536b22ff395789e4/43204ad8/5fdc4719cf8bf208a98162f2_brightidfinallogo-01-p-500.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=66b62596f97bd67b" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/argent", + "description": "Argent provides a smart wallet for cryptocurrencies and blockchain applications.", + "github": "https://github.com/argentlabs", + "name": "Argent", + "twitter": "https://twitter.com/argentHQ", + "website": "https://www.argent.xyz/", + "category": "Identity", + "full_name": "Argent", + "funding": "$56.2M", + "logo": "https://dl.airtable.com/.attachments/90fb6963cce865cf04dcbdcada85993c/a2e793b0/313db37e-055d-42ee-9476-a92bda64e61d_logo.svg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=b67c0e724b06f44b" + } + ] + }, + { + "name": "Storage", + "items": [ + { + "crunchbase": "https://www.crunchbase.com/organization/ipfs", + "description": "The InterPlanetary File System (IPFS) is a protocol and peer-to-peer network for storing and sharing data in a distributed file system. IPFS uses content-addressing to uniquely identify each file in a global namespace connecting all computing devices.", + "github": "https://github.com/ipfs/ipfs", + "name": "IPFS", + "twitter": "https://twitter.com/IPFS", + "website": "https://ipfs.io/", + "category": "Storage", + "full_name": "IPFS", + "logo": "https://dl.airtable.com/.attachments/52cb59934daa64212d652153d771c539/49f97e52/h4Bvj_8p_200x200.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=ad45fb33912b4c1e" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/arweave", + "description": "arweave is a global, permanent hard drive built on two novel technologies: the blockweave, a derivative of the blockchain, and proof of access, a custom incentivised proof of work algorithm. These innovations provide truly permanent data storage for the very first time and at a massive scale.", + "github": "https://github.com/ArweaveTeam/arweave", + "name": "Arweave", + "twitter": "https://twitter.com/arweaveteam", + "website": "https://www.arweave.org/", + "category": "Storage", + "full_name": "Arweave", + "funding": "$22M", + "logo": "https://dl.airtable.com/.attachments/b542eb5c23f7401b359f81f8e38ebbbe/aea80483/oRt6SiEN_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=01b13c395c2d1802" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/filecoin", + "description": "Filecoin is an open-source, public cryptocurrency and digital payment system intended to be a blockchain-based cooperative digital storage and data retrieval method.", + "github": "https://github.com/filecoin-project", + "name": "Filecoin", + "twitter": "https://twitter.com/Filecoin", + "website": "https://filecoin.io/", + "category": "Storage", + "full_name": "Filecoin", + "funding": "$258.2M", + "logo": "https://dl.airtable.com/.attachments/efb1de9efb899c25abbca8e4a5b84950/7741f8ab/qKZIEW56_200x200.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=074b5dc2b4e7ffcc" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/storj", + "description": "Storj DCS is secure cloud object storage for developers that's S3-compatible at up to 80% less cost.", + "github": "https://github.com/Storj", + "name": "Storj", + "twitter": "https://twitter.com/storj", + "website": "https://www.storj.io/", + "category": "Storage", + "full_name": "Storj", + "funding": "$35.4M", + "logo": "https://dl.airtable.com/.attachments/9792301d38d434462eb5cf6bae7432c5/0700ed17/gLxtcko7_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=e5343ca8303e158d" + }, + { + "description": "Swarm is a distributed storage platform and content distribution service, a native base layer service of the ethereum web3 stack that aims to provide a decentralized and redundant store for dapp code, user data, blockchain and state data. Swarm sets out to provide various base layer services for web3, including node-to-node messaging, media streaming, decentralised database services and scalable state-channel infrastructure for decentralised service economies.", + "github": "https://github.com/ethersphere/swarm", + "name": "Swarm", + "twitter": "https://twitter.com/ethswarm", + "website": "https://ethersphere.github.io/swarm-home/", + "category": "Storage", + "full_name": "Swarm", + "logo": "https://dl.airtable.com/.attachments/32d3fd0100e49c665c9e355fae93ac57/4e1ba532/tqI_czN8_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=240cc2afa48bbc7c" + } + ] + }, + { + "name": "Oracles", + "items": [ + { + "crunchbase": "https://www.crunchbase.com/organization/chainlink", + "description": "Chainlink decentralized oracle networks provide tamper-proof inputs, outputs, and computations to support advanced smart contracts on any blockchain.", + "github": "https://github.com/smartcontractkit/chainlink", + "name": "Chainlink", + "twitter": "https://twitter.com/chainlink", + "website": "https://chain.link/", + "category": "Oracles", + "full_name": "Chainlink", + "funding": "$32M", + "logo": "https://dl.airtable.com/.attachments/bed2a12fce7cca284a9572a51902e7f7/936bfff4/qvSHhRyC_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=3caf054faab5eb19" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/witnet-foundation", + "description": "Witnet is a next generation decentralized oracle that leverages state-of-the-art cryptographic and cryptoeconomic techniques to provide smart contracts with secure data input.", + "github": "https://github.com/witnet", + "name": "Witnet", + "twitter": "https://twitter.com/witnet_io", + "website": "https://witnet.io/", + "category": "Oracles", + "full_name": "Witnet", + "funding": "$4.1M", + "logo": "https://dl.airtable.com/.attachments/50659de11b48cddd47d20c361ecfca56/defada17/0yA2ROgG_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=17674278c8391d40" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/provable", + "description": "Provable is the leading oracle service for smart contracts and blockchain applications, serving thousands of requests every day on platforms like Ethereum, Rootstock, R3 Corda, Hyperledger Fabric and EOS.", + "github": "https://github.com/provable", + "name": "Provable", + "twitter": "https://twitter.com/provablethings", + "website": "https://provable.xyz/", + "category": "Oracles", + "full_name": "Provable", + "logo": "https://dl.airtable.com/.attachments/5eeb7024547224a3b1fb6576f98eddbb/ac37e4a0/6ijW86p-_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=60275b98657a0074" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/band-protocol", + "description": "Band Protocol is a cross-chain data oracle platform that aggregates and connects real-world data and APIs to smart contracts.", + "github": "https://github.com/bandprotocol", + "name": "Band Protocol", + "twitter": "https://twitter.com/BandProtocol", + "website": "https://bandprotocol.com/", + "category": "Oracles", + "full_name": "Band Protocol", + "funding": "$7.9M", + "logo": "https://dl.airtable.com/.attachments/e4b7b50ae1a603b676ab22a0fcac941c/f304bb0b/ohhSUimj_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=8ecf7cf74813c0b8" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/dia", + "description": "DIA (Decentralised Information Asset) is an open-source oracle platform that enables market actors to source, supply and share trustable data.", + "github": "https://github.com/comdex-official/comdex", + "name": "DIA", + "twitter": "https://twitter.com/DIAdata_org", + "website": "https://www.diadata.org/", + "category": "Oracles", + "full_name": "Decentralised Information Asset", + "funding": "$15M", + "logo": "https://dl.airtable.com/.attachments/1bbbff940ac592eced788e9e574d46d0/cda59276/ZnwsXU9c_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=c67755c13d1eba78" + } + ] + }, + { + "name": "Protocols", + "items": [ + { + "crunchbase": "https://www.crunchbase.com/organization/0x-project", + "description": "0x is an open protocol that enables the peer-to-peer exchange of assets on the Ethereum blockchain.", + "github": "https://github.com/0xProject", + "name": "0x", + "twitter": "https://twitter.com/0xProject", + "website": "https://www.0x.org/", + "category": "Protocols", + "full_name": "0x", + "funding": "$109M", + "logo": "https://dl.airtable.com/.attachments/517f6c35c9102a317cc2b88c049c33be/b36bcbc6/0x-zrx-logo.svg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=34aa35ab89e4e996" + }, + { + "description": "Lens Protocol is a composable and decentralized social graph, ready for you to build on so you can focus on creating a great experience, not scaling your users.", + "github": "https://github.com/aave/lens-protocol", + "name": "Lens Protocol", + "twitter": "https://twitter.com/lensprotocol", + "website": "https://github.com/aave/lens-protocol", + "category": "Protocols", + "full_name": "Lens Protocol", + "logo": "https://dl.airtable.com/.attachments/d0c1891235cd9fa1e95e59c4edb16431/6668279e/DtyJ_8ej_400x400.jpeg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=7f5706cd523a0d76" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/livepeer", + "description": "Livepeer is a decentralized video streaming network built on the Ethereum blockchain.", + "github": "https://github.com/livepeer", + "name": "Livepeer", + "twitter": "https://twitter.com/livepeerorg", + "website": "https://livepeer.org/", + "category": "Protocols", + "full_name": "Livepeer", + "funding": "$51M", + "logo": "https://dl.airtable.com/.attachments/8ad88c332f9a370a11b6246bb65fb07e/73f436ec/wordmark_black.jpeg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=d60d8abd100123fd" + } + ] + }, + { + "name": "Client libraries", + "items": [ + { + "description": "The ethers.js library aims to be a complete and compact library for interacting with the Ethereum Blockchain and its ecosystem.", + "github": "https://github.com/ethers-io/ethers.js/", + "name": "Ethers.js", + "twitter": "https://twitter.com/ethersproject", + "website": "https://ethers.org/", + "category": "Client libraries", + "full_name": "Ethers.js", + "logo": "https://dl.airtable.com/.attachments/634ecff00ba8d9d8c19002ff58177870/90538edd/ANmot3KY_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=fba2540efa92c6db" + }, + { + "description": "web3.js is a collection of libraries that allow you to interact with a local or remote ethereum node using HTTP, IPC or WebSocket.", + "github": "https://github.com/ethereumproject/web3.js/", + "name": "Web3.js", + "twitter": "https://twitter.com/web3_js", + "website": "https://web3js.readthedocs.io/", + "category": "Client libraries", + "full_name": "Web3.js", + "logo": "https://dl.airtable.com/.attachments/f72f285c2127adffb3923a6d97936d7c/803a685c/MTUQm073_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=d9ebdcc53b5e9b74" + }, + { + "description": "A highly optimised, light-weight JS utility for Ethereum based on web3.js, but lighter, async only and using BN.js.", + "github": "https://github.com/ethjs/ethjs", + "name": "Eth.js", + "website": "https://github.com/ethjs/ethjs", + "category": "Client libraries", + "full_name": "Eth.js", + "logo": "https://dl.airtable.com/.attachments/31939a17e9e548e4b2d8c5a5085f67f7/b105e2aa/24195050.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=d2aad5e401af3883" + } + ] + }, + { + "name": "Front-end Tools", + "items": [ + { + "crunchbase": "https://www.crunchbase.com/organization/moralis", + "description": "Moralis saves developers time and money to ship scalable & robust Dapps.", + "github": "https://github.com/MoralisWeb3", + "name": "Moralis", + "twitter": "https://twitter.com/MoralisWeb3", + "website": "https://moralis.io/", + "category": "Front-end Tools", + "full_name": "Moralis", + "funding": "$53.4M", + "logo": "https://dl.airtable.com/.attachments/5546ba027b60d867defaecac7fd95305/2effcf01/2Xz9XGau_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=4429a84e5409029b" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/the-graph", + "description": "The Graph is an indexing protocol for querying networks like Ethereum and IPFS. Anyone can build and publish open APIs, called subgraphs, making data easily accessible.", + "github": "https://github.com/graphprotocol", + "name": "The Graph", + "twitter": "https://twitter.com/graphprotocol", + "website": "https://thegraph.com/", + "category": "Front-end Tools", + "full_name": "The Graph", + "funding": "$69.6M", + "logo": "https://dl.airtable.com/.attachments/c5ce04eaa7225de0594d920a1088846e/48ddc1ca/C4RKAej-_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=b36f967e6aa4b50a" + }, + { + "description": "A collection of front-end libraries that make writing dapp user interfaces easier and more predictable.", + "github": "https://github.com/trufflesuite/drizzle", + "name": "Drizzle", + "twitter": "https://twitter.com/trufflesuite", + "website": "https://trufflesuite.com/drizzle/", + "category": "Front-end Tools", + "full_name": "Drizzle", + "logo": "https://dl.airtable.com/.attachments/365dfc9cbde258873d57a862e2cd06d5/73e1a1f4/download.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=5a28142f0aaf8446" + }, + { + "description": "Framework for rapid Dapp development.", + "github": "https://github.com/TrueFiEng/useDApp", + "name": "useDapp", + "website": "https://usedapp.io/", + "category": "Front-end Tools", + "full_name": "useDapp", + "logo": "https://dl.airtable.com/.attachments/963d71fefca6b54554a2b1823d23eaa7/73173da1/download1.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=ccbe6c0909cfc237" + } + ] + }, + { + "name": "Infrastructure", + "items": [ + { + "crunchbase": "https://www.crunchbase.com/organization/alchemy-insights", + "description": "Alchemy provides the leading blockchain development platform powering millions of users in 197 countries worldwide. Our mission is to provide developers with the fundamental building blocks they need to create the future of technology.", + "github": "https://github.com/alchemyplatform", + "name": "Alchemy", + "twitter": "https://twitter.com/AlchemyPlatform", + "website": "https://www.alchemy.com/", + "category": "Infrastructure", + "full_name": "Alchemy", + "funding": "$563.9M", + "logo": "https://dl.airtable.com/.attachments/c0beee52ae23c86aab751c0e2a632148/54f1a951/7tZzb4mt_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=6dac921b291fddcb" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/infura", + "description": "Infura's development suite provides instant, scalable API access to the Ethereum and IPFS networks.", + "github": "https://github.com/INFURA", + "name": "Infura", + "twitter": "https://twitter.com/infura_io", + "website": "https://infura.io/", + "category": "Infrastructure", + "full_name": "Infura", + "logo": "https://dl.airtable.com/.attachments/9876439b3ba819091cde4e6ae0ad2f4e/da46f09d/yo6M6Y9u_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=c0c679bdcd16eec3" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/quiknode", + "description": "QuickNode is your high-performance access to 13+ blockchains, including Ethereum, Gnosis (xDAI), Polygon, Binance Smart Chain, Avalanche, Fantom, Solana, Optimism, Arbitrum, Algorand, Celo, Terra and Bitcoin networks.", + "github": "https://github.com/quiknode-labs", + "name": "QuickNode", + "twitter": "https://twitter.com/QuickNode", + "website": "https://www.quicknode.com/", + "category": "Infrastructure", + "full_name": "QuickNode", + "funding": "$40.8M", + "logo": "https://dl.airtable.com/.attachments/08aa42e3afb4df79c4794b352d553d30/3782cbed/wN0gSogx_200x200.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=c39a3cf889b24bb3" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/ankr", + "description": "Ankr is a decentralized Web3 infrastructure provider that helps developers, decentralized applications, and stakers interact easily with an array of blockcha", + "github": "https://github.com/Ankr-network", + "name": "Ankr", + "twitter": "https://twitter.com/ankr", + "website": "https://www.ankr.com/", + "category": "Infrastructure", + "full_name": "Ankr", + "funding": "$27.3M", + "logo": "https://dl.airtable.com/.attachments/0616d30c2a3727cbf940eae73b463688/e57de345/6QjAi5dz_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=5f028bb132310f6b" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/pocket-network", + "description": "Pocket provides RPC access to Ethereum, Polygon, and a dozen more blockchain networks.", + "github": "https://github.com/pokt-network", + "name": "Pocket Network", + "twitter": "https://twitter.com/POKTnetwork", + "website": "https://www.pokt.network/", + "category": "Infrastructure", + "full_name": "Pocket Network", + "funding": "$20.1M", + "logo": "https://dl.airtable.com/.attachments/3e3f105767bec01daa920ec803da0d1a/9ecb6a29/1627073526785.jpeg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=4c2509cfca8421f7" + } + ] + }, + { + "name": "Block Explorers", + "items": [ + { + "crunchbase": "https://www.crunchbase.com/organization/etherscan", + "description": "Etherscan is a Block Explorer and Analytics Platform for Ethereum, a decentralized smart contracts platform.", + "github": "https://github.com/etherscan", + "name": "Etherscan", + "twitter": "https://twitter.com/etherscan", + "website": "https://etherscan.io/", + "category": "Block Explorers", + "full_name": "Etherscan", + "logo": "https://dl.airtable.com/.attachments/a00beb4dad094ba3d65f730add60de2e/bb0c09c0/6mDtyT6V_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=5bccf5a162767374" + }, + { + "description": "etherchain.org makes the Ethereum block chain accessible to non-technical end users.", + "github": "https://github.com/etherchain-org", + "name": "Etherchain", + "twitter": "https://twitter.com/etherchain_org", + "website": "https://etherchain.org/", + "category": "Block Explorers", + "full_name": "Etherchain", + "logo": "https://dl.airtable.com/.attachments/a7528b686baf013b7281062bdedf1bf7/a82acc92/9qg6nCBq_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=02c0bdbcdc08f0f1" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/ethplorer", + "description": "Ethereum tokens explorer, API, and analytics tool.", + "github": "https://github.com/EverexIO/Ethplorer", + "name": "Ethplorer", + "twitter": "https://twitter.com/ethplorer", + "website": "https://ethplorer.io/", + "category": "Block Explorers", + "full_name": "Ethplorer", + "logo": "https://dl.airtable.com/.attachments/1493af894cc48af4d5ee69b89ff317f1/3fc5de07/FZyMhvCm_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=4568194396ffa228" + } + ] + }, + { + "name": "Security Analysis Tools", + "items": [ + { + "crunchbase": "https://www.crunchbase.com/organization/mythx", + "description": "MythX™ by ConsenSys Software Inc™ is the premier security analysis service for Ethereum smart contracts. Our mission is to ensure development teams avoid costly errors and make Ethereum a more secure and trustworthy platform.", + "github": "https://github.com/MythX", + "name": "MythX", + "twitter": "https://twitter.com/mythx_platform", + "website": "https://mythx.io/", + "category": "Security Analysis Tools", + "full_name": "MythX", + "logo": "https://dl.airtable.com/.attachments/99e237794d0ab7dc9a4086c030d1843a/ea462082/DnvGwyaX9DX98kpQq_oNIWWrqFIW4djWe0jxm7O-bMk.webp?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=f9d1496cb45fe61f" + }, + { + "description": "Mythril is a security analysis tool for EVM bytecode. It detects security vulnerabilities in smart contracts built for Ethereum, Hedera, Quorum, Vechain, Roostock, Tron and other EVM-compatible blockchains. It uses symbolic execution, SMT solving and taint analysis to detect a variety of security vulnerabilities.", + "github": "https://github.com/ConsenSys/mythril", + "name": "Mythril", + "category": "Security Analysis Tools", + "full_name": "Mythril", + "logo": "https://dl.airtable.com/.attachments/b88519117ee9effb663d76f052977b50/9e100244/Logos2.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=9edd5618c37cfa36" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/trail-of-bits", + "description": "Trail of Bits Inc provides information security services. The Company offers security research, penetration testing, red teaming, expert witness support, and incident response services. Trail of Bits caters to commercial enterprise clients.", + "github": "https://github.com/trailofbits", + "name": "Trail of Bits", + "twitter": "https://twitter.com/trailofbits", + "website": "https://www.trailofbits.com/", + "category": "Security Analysis Tools", + "full_name": "Trail of Bits", + "logo": "https://dl.airtable.com/.attachments/ddeb28ea53732a3aa6c3021483b254d2/17486180/FbbYmQT__200x200.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=8371ef492477681f" + }, + { + "description": "Slither is a Solidity static analysis framework written in Python 3. It runs a suite of vulnerability detectors, prints visual information about contract details, and provides an API to easily write custom analyses. Slither enables developers to find vulnerabilities, enhance their code comprehension, and quickly prototype custom analyses.", + "github": "https://github.com/crytic/slither", + "name": "Slither", + "twitter": "https://twitter.com/trailofbits", + "website": "https://github.com/crytic/slither", + "category": "Security Analysis Tools", + "full_name": "Slither", + "logo": "https://dl.airtable.com/.attachments/0b214fde2131411c586fa65fc2b204e0/8a90b3ce/Microsoft.VisualStudio.Services.Icons.Default?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=c931ae413cbd224d" + }, + { + "description": "Manticore is a symbolic execution tool for analysis of smart contracts and binaries.", + "github": "https://github.com/trailofbits/manticore", + "name": "Manticore", + "website": "https://github.com/trailofbits/manticore", + "category": "Security Analysis Tools", + "full_name": "Manticore", + "logo": "https://dl.airtable.com/.attachments/71738fc453c966a81e0926cd48641b6b/fe6bf288/manticore.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=480e9906e1ab3152" + }, + { + "description": "Echidna is a Haskell program designed for fuzzing/property-based testing of Ethereum smarts contracts. It uses sophisticated grammar-based fuzzing campaigns based on a contract ABI to falsify user-defined predicates or Solidity assertions.", + "github": "https://github.com/crytic/echidna", + "name": "Echidna", + "website": "https://github.com/crytic/echidna", + "category": "Security Analysis Tools", + "full_name": "Echidna", + "logo": "https://dl.airtable.com/.attachments/4e8215f6dcc3234f19e3e72c5b872ad6/5fc0889e/Logos1.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=4ff11b43f5373d90" + }, + { + "description": "Securify 2.0 is a security scanner for Ethereum smart contracts supported by the Ethereum Foundation and ChainSecurity. The core research behind Securify was conducted at the Secure, Reliable, and Intelligent Systems Lab at ETH Zurich.", + "github": "https://github.com/eth-sri/securify2", + "name": "Securify", + "website": "https://github.com/eth-sri/securify2", + "category": "Security Analysis Tools", + "full_name": "Securify", + "logo": "https://dl.airtable.com/.attachments/2839a28287ba5653f35c5f6385bd4091/d6171be6/securify-v2-0.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=19d2d627831adc97" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/certik", + "description": "CertiK is the leading security-focused ranking platform to analyze and monitor blockchain protocols and DeFi projects.", + "github": "https://github.com/CertiKProject", + "name": "CertiK", + "twitter": "https://twitter.com/CertiKCommunity", + "website": "https://www.certik.com/", + "category": "Security Analysis Tools", + "full_name": "CertiK", + "funding": "$300.2M", + "logo": "https://dl.airtable.com/.attachments/749f846d9b897e0b6901c5c3dd24e477/d1a86310/fhw8lemyleadhzwvhxyv.webp?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=f7b079dd09a39a54" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/breadcrumbs-app", + "description": "Breadcrumbs is an open blockchain analytics platform. It offers a set of tools that empowers you to trace and monitor crypto transactions.", + "name": "Breadcrumbs", + "twitter": "https://twitter.com/AppBreadcrumbs", + "website": "https://www.breadcrumbs.app/", + "category": "Security Analysis Tools", + "full_name": "Breadcrumbs", + "funding": "$1.6M", + "logo": "https://dl.airtable.com/.attachments/ff7605dcf16b79078acb61455adf0921/99ea1e8e/t8y8unfgluskeqmjzg6e.webp?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=37151f60866a56e4" + } + ] + }, + { + "name": "Monitoring", + "items": [ + { + "crunchbase": "https://www.crunchbase.com/organization/tenderly", + "description": "Tenderly is software company that provides a platform to easily monitor your smart contracts with error tracking, real-time alerting, performance metrics, and detailed contract analytics.", + "github": "https://github.com/Tenderly", + "name": "Tenderly", + "twitter": "https://twitter.com/tenderlyapp", + "website": "https://tenderly.co/", + "category": "Monitoring", + "full_name": "Tenderly", + "funding": "$58.6M", + "logo": "https://dl.airtable.com/.attachments/ac6c38d5cd0d15aa2acc60eebe3e3f01/b198960b/B2o2QcF7_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=a5fbc3da074055a4" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/openzeppelin", + "description": "OpenZeppelin Defender provides a security operations (SecOps) platform for Ethereum with built-in best practices. Development teams implement Defender to ship faster and minimize security risks.", + "github": "https://github.com/OpenZeppelin/defender-client", + "name": "Defender", + "twitter": "https://twitter.com/openzeppelin", + "website": "https://www.openzeppelin.com/defender", + "category": "Monitoring", + "full_name": "Defender", + "logo": "https://dl.airtable.com/.attachments/774403e6c99e573d827aa19a52a9ab0c/83190c3f/defender-bw.svg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=12b1121bdf6e274b" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/blocknative", + "description": "Blocknative's suite of developer tools makes real-time mempool monitoring accessible to every builder.", + "github": "https://github.com/blocknative", + "name": "Blocknative", + "twitter": "https://twitter.com/blocknative", + "website": "https://www.blocknative.com/", + "category": "Monitoring", + "full_name": "Blocknative", + "funding": "$19M", + "logo": "https://dl.airtable.com/.attachments/0ff46feb42474370dc04d1e3668df062/71b3f521/lIbtd1gQ_400x400.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=f26e8be832c8c609" + } + ] + }, + { + "name": "Layer 2", + "items": [ + { + "crunchbase": "https://www.crunchbase.com/organization/polygontechnology", + "description": "Polygon is a decentralised Ethereum scaling platform that enables developers to build scalable user-friendly dApps with low transaction fees without ever sacrificing on security.", + "github": "https://github.com/maticnetwork", + "name": "Polygon", + "twitter": "https://twitter.com/0xPolygon", + "website": "https://polygon.technology/", + "category": "Layer 2", + "full_name": "Polygon", + "funding": "$450M", + "logo": "https://dl.airtable.com/.attachments/65ce2779bafc0a954aea8a502a6673da/f9503e20/Ep0OwpJM_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=eb19c952b4663536" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/starkware-industries-ltd", + "description": "StarkNet is a permissionless decentralized ZK-Rollup. It operates as an L2 network over Ethereum, enabling any dApp to achieve unlimited scale for its computation – without compromising Ethereum's composability and security.", + "github": "https://github.com/starknet-edu", + "name": "Starknet", + "twitter": "https://twitter.com/StarkWareLtd/", + "website": "https://starkware.co/starknet/", + "category": "Layer 2", + "full_name": "Starknet", + "funding": "$273M", + "logo": "https://dl.airtable.com/.attachments/7fbe175dc5a0b9cf4c09fa4f2bcbf903/ff9c0872/amh3acDp_200x200.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=64e9dff8c8b73d9d" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/optimism", + "description": "Optimism is a Layer 2 Optimistic Rollup network designed to utilize the strong security guarantees of Ethereum while reducing its cost and latency.", + "github": "https://github.com/ethereum-optimism", + "name": "Optimism", + "twitter": "https://twitter.com/optimismPBC", + "website": "https://www.optimism.io/", + "category": "Layer 2", + "full_name": "Optimism", + "funding": "$178M", + "logo": "https://dl.airtable.com/.attachments/5ac87251b5ce2ee106940ef8a5136eec/783e0eb3/JtpX95Rt_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=857c696816dc73a5" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/offchain-labs", + "description": "Arbitrum is a layer 2 solution designed to improve the capabilities of Ethereum smart contracts — boosting their speed and scalability, while adding in additional privacy features to boot.", + "github": "https://github.com/OffchainLabs/arbitrum", + "name": "Arbitrum", + "twitter": "https://twitter.com/arbitrum", + "website": "https://offchainlabs.com/", + "category": "Layer 2", + "full_name": "Arbitrum", + "funding": "$123M", + "logo": "https://dl.airtable.com/.attachments/8044949e34e43c6bbcac3b774850c126/bb39e101/046qIxwT_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=655cb2d5599c5d2e" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/matter-labs", + "description": "zkSync is a trustless protocol for scalable low-cost payments on Ethereum, powered by zkRollup technology. It uses zero-knowledge proofs and on-chain data availability to keep users' funds as safe as though they never left the mainnet.", + "github": "https://github.com/matter-labs/zksync", + "name": "zkSync", + "twitter": "https://twitter.com/zksync", + "website": "https://zksync.io/", + "category": "Layer 2", + "full_name": "zkSync", + "funding": "$58M", + "logo": "https://dl.airtable.com/.attachments/b19b29a86ee0b12abc85f4561f729b57/35bea12e/eH3FdBKB_200x200.jpg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=421e938256e4436e" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/gnosis", + "description": "Formerly the xDai Chain, Gnosis Chain provides stability, scalability and an extendable beacon chain framework.", + "github": "https://github.com/xdaichain", + "name": "Gnosis Chain", + "twitter": "https://twitter.com/gnosischain", + "website": "https://poa.gitbook.io/xdai/", + "category": "Layer 2", + "full_name": "Gnosis Chain", + "funding": "$12.5M", + "logo": "https://dl.airtable.com/.attachments/8fe0ec6f24e3324e8a2abfc95cdd7896/1b7197cb/Aatar_green_white.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=4a120d2d3c70a752" + } + ] + }, + { + "name": "Bridges", + "items": [ + { + "name": "Polygon Bridge", + "full_name": "Polygon Bridge", + "category": "Bridge", + "description": "The Polygon Bridge allows users to quickly transfer ERC tokens and NFTs to the Polygon sidechain", + "website": "https://wallet.polygon.technology/bridge/", + "logo": "https://dl.airtable.com/.attachments/d0a92ccff1d15e8b6cb8a5ff7267a0b5/4a1933cc/poly-bridge.4aabe80.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=8ab8cd205a26220e" + }, + { + "name": "Avalanche Bridge", + "full_name": "Avalanche Bridge", + "category": "Bridge", + "description": "The Avalanche Bridge (AB) connects directly to your MetaMask wallet for fast, cheap, & secure transfers of Ethereum assets to and from Avalanche.", + "website": "https://bridge.avax.network/", + "logo": "https://dl.airtable.com/.attachments/c306a98b0c81ad517d7cb015c3cdbacf/a2bf79f4/Screenshot2022-06-06at9.21.37AM.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=79abb9423b98393a" + }, + { + "name": "Hop Protocol", + "full_name": "Hop Protocol", + "category": "Bridge", + "description": "Hop Protocol, a cross-chain bridge designed to facilitate the quick transfer of tokens between different Ethereum layer-2 scaling solutions", + "website": "https://app.hop.exchange/", + "twitter": "https://twitter.com/HopProtocol", + "github": "https://github.com/hop-protocol", + "logo": "https://dl.airtable.com/.attachments/7600f1ef32a6c7dfd2cf27a9741587e4/f174ae9e/hop-logo-black.36655970.svg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=8293aa176be35ee2" + }, + { + "name": "Across", + "full_name": "Across", + "category": "Bridge", + "description": "Across is the fastest, cheapest and most secure cross-chain bridge.", + "website": "https://across.to/", + "twitter": "https://twitter.com/AcrossProtocol/", + "github": "https://github.com/across-protocol", + "logo": "https://dl.airtable.com/.attachments/cf582186f8fc9d6a2fa48dba3de2ae4d/ea77796a/Screenshot2022-06-06at9.33.52AM.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=e37c9b648a0d3dd2" + }, + { + "name": "cBridge", + "full_name": "cBridge", + "category": "Bridge", + "description": "cBridge is a multi-chain, cross-layer asset bridge offering instant transfer with the most number of chains, lowest fee and zero trust.", + "website": "https://cbridge.celer.network/", + "twitter": "https://twitter.com/CelerNetwork", + "github": "https://github.com/celer-network", + "logo": "https://dl.airtable.com/.attachments/518c6c4b081ff0ad1e58e766f1f8acd6/b352403d/Screenshot2022-06-06at9.56.47AM.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=d8eb18aad985be82" + }, + { + "name": "Connext", + "full_name": "Connext", + "category": "Bridge", + "description": "Connext powers fast, secure bridging between blockchains and rollups for composable, trust minimized value.", + "website": "https://bridge.connext.network/", + "twitter": "https://twitter.com/connextnetwork", + "github": "https://github.com/connext", + "crunchbase": "https://www.crunchbase.com/organization/connext-inc", + "funding": "$15.7M", + "logo": "https://dl.airtable.com/.attachments/9d342326ed6e7241017fcfcb2ed5ceeb/9d05e369/29290126.png?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=3fd6f4c5f5911420" + } + ] + }, + { + "name": "Bug Bounty", + "items": [ + { + "description": "Web3's leading bug bounty platform, protecting $100 billion in user funds", + "name": "Immunefi", + "twitter": "https://twitter.com/immunefi", + "website": "https://immunefi.com/", + "category": "Bug Bounty", + "full_name": "Immunefi", + "logo": "https://dl.airtable.com/.attachments/508d793bbbeca0bd9192981ab65b8e46/155bcea4/5YIOtk9N_400x400.jpeg?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=c5c462fefc701e3f" + }, + { + "description": "Earn up to $250,000 USD and a place on the leaderboard by finding protocol, client and Solidity bugs affecting the Ethereum network.", + "name": "Ethereum Bug Bounty", + "twitter": "https://twitter.com/ethdotorg", + "website": "https://ethereum.org/en/bug-bounty/", + "category": "Bug Bounty", + "full_name": "Ethereum Bug Bounty", + "logo": "https://dl.airtable.com/.attachments/e2b0656f9988a76b840504c433819b81/a1f07915/eth-home-icon.webp?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=eeea1c4b97c0ed22" + }, + { + "crunchbase": "https://www.crunchbase.com/organization/hackenproof", + "description": "Expert Bug Bounty Platform for Crypto Projects", + "name": "HackenProof", + "twitter": "https://twitter.com/HackenProof", + "website": "https://hackenproof.com/", + "category": "Bug Bounty", + "full_name": "HackenProof", + "funding": "$50K", + "logo": "https://dl.airtable.com/.attachments/7cc8505f91a9118d9f51e7343ea17340/76264556/swnedocg6cwghdwtxrk1.webp?ts=1654489644&userId=usr5OrXVf8rhDAngY&cs=8f7d3a7a54450ca9" + } + ] + } + ] \ No newline at end of file diff --git a/app/package.json b/app/package.json index da732f3..c7175ef 100644 --- a/app/package.json +++ b/app/package.json @@ -7,8 +7,6 @@ }, "dependencies": { "@nextui-org/react": "^1.0.0-beta.7", - "airtable": "^0.11.4", - "lodash": "^4.17.21", "next": "latest", "react": "18.1.0", "react-dom": "18.1.0" diff --git a/app/pages/_app.tsx b/app/pages/_app.tsx index 3f5c9d5..c7e1bbc 100644 --- a/app/pages/_app.tsx +++ b/app/pages/_app.tsx @@ -1,5 +1,5 @@ -import '../styles/globals.css' import type { AppProps } from 'next/app' +import '../styles/globals.css' function MyApp({ Component, pageProps }: AppProps) { return diff --git a/app/pages/_document.tsx b/app/pages/_document.tsx index dd217a5..28b6f9c 100644 --- a/app/pages/_document.tsx +++ b/app/pages/_document.tsx @@ -29,7 +29,7 @@ class MyDocument extends Document { @@ -38,7 +38,7 @@ class MyDocument extends Document { diff --git a/app/pages/index.tsx b/app/pages/index.tsx index 302fd9b..b50ed6d 100644 --- a/app/pages/index.tsx +++ b/app/pages/index.tsx @@ -1,165 +1,33 @@ import { useState } from 'react' - import Head from 'next/head' -import { Modal } from '@nextui-org/react' -//@ts-ignore -import lodash from 'lodash' import LogoCard from '../components/LogoCard' -import { getAllPages } from '../util/airtable' +import ToolModal from '../components/ToolModal' -async function fetchLandscape() { - return getAllPages('appBnNeFjIsmCH9uz', 'tblWxdcACCFP3g4Sh', { - maxRecords: 1000, - pageSize: 100, - sort: [{ field: 'orderInGroup' }], - }) -} +import data from '../data/landscape.json' -export async function getStaticProps() { - const tools = await fetchLandscape() - - return { - props: { - tools, - }, - revalidate: 60, - } -} +export default function Home() { + const categories = data -export default function Home({ tools }: { tools: Array }) { const [visible, setVisible] = useState(false) const [currentItem, setCurrentItem] = useState({ name: '', }) - const groupedTools = lodash.groupBy(tools, (tool: any) => tool.category) - //@ts-ignore - const groupNames = [...new Set(tools.map((tool: any) => tool.category))] - - const closeHandler = () => { - setVisible(false) - } - - const extractTwitterUsernameFromUrl = (twitterUrl: string) => { - try { - return twitterUrl.replace(/\/$/, '').replace('https://twitter.com/', '@') - } catch (e) { - return '' - } - } - - const cleanUrl = (websiteUrl: string) => { - try { - return websiteUrl - .replace(/\/$/, '') - .replace('https://', '') - .replace('www.', '') - } catch (e) { - return '' - } - } - - const currentItemLogoUrl = - (currentItem?.logo || []).length > 0 - ? currentItem?.logo[0]?.url - : currentItem?.logoUrl + const orgAndRepo = 'dappcamp/landscape' + const githubLink = 'https://github.com/' + orgAndRepo + const starsImage = `https://img.shields.io/github/stars/${orgAndRepo}?style=social` return (
Ethereum Developer Tooling Landscape | DappCamp - - -
- {currentItem.title} -

{currentItem.full_name || currentItem.name}

-

{currentItem.description}

-
-
- {cleanUrl(currentItem.website) && ( -

- Website{' '} - - {cleanUrl(currentItem.website)} - -

- )} -
-
- {extractTwitterUsernameFromUrl(currentItem.twitter) && ( -

- Twitter{' '} - - {extractTwitterUsernameFromUrl(currentItem.twitter)} - -

- )} -
-
- {cleanUrl(currentItem.github) && ( -

- GitHub{' '} - - {cleanUrl(currentItem.github)} - -

- )} -
-
- {cleanUrl(currentItem.crunchbase) && ( -

- - Crunchbase - {' '} - - {cleanUrl(currentItem.crunchbase)} - -

- )} -
-
- {currentItem.funding && ( -

- Funding{' '} - {currentItem.funding} -

- )} -
-
-
-
-
+
@@ -174,23 +42,20 @@ export default function Home({ tools }: { tools: Array }) {

Ethereum Developer Tooling Landscape

-

- {`This landscape represents a comprehensive list of tools that developers use when developing smart contracts on Ethereum and EVM-compatible chains. Scroll horizontally and vertically to view the whole landscape.`} +

+ {`This landscape represents a comprehensive list of tools that developers use when developing smart contracts on Ethereum and EVM-compatible chains.`} +
+ {`Scroll horizontally and vertically to view the whole landscape. Click on any tool to view additional details.`}

-
- DappCamp Logo +
-
+
}) { height: 'max-content', }} > - {groupNames.map((group, index) => ( + {categories.map((category, index) => (
-

{group}

+

{category.name}

- {groupedTools[group].map((item: any, index: number) => ( + {category.items.map((item: any, index: number) => ( { diff --git a/app/util/airtable/index.js b/app/util/airtable/index.js deleted file mode 100644 index 92e86d3..0000000 --- a/app/util/airtable/index.js +++ /dev/null @@ -1,46 +0,0 @@ -import Airtable from "airtable"; - -const airtable = new Airtable({ - apiKey: process.env.AIRTABLE_API_KEY, -}) - -export async function getFirstPage(baseId, tableId, selectConfig) { - const base = airtable.base(baseId); - - return new Promise((resolve, reject) => { - base(tableId) - .select(selectConfig) - .firstPage(function (err, records) { - if (err) { - console.error(err); - return; - } - debugger; - resolve(records.map((record) => record.fields)); - }); - }); -} - -export async function getAllPages(baseId, tableId, selectConfig) { - const base = airtable.base(baseId); - - let records = []; - return new Promise((resolve, reject) => { - base(tableId) - .select(selectConfig) - .eachPage( - function page(recs, fetchNextPage) { - recs.forEach(function (record) { - records.push(record); - }); - fetchNextPage(); - }, - function done(err) { - if (err) { - reject([]); - } - return resolve(records.map((record) => record.fields)); - } - ); - }); -} \ No newline at end of file diff --git a/app/yarn.lock b/app/yarn.lock index b17ddbc..208371c 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -560,11 +560,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.35.tgz#635b7586086d51fb40de0a2ec9d1014a5283ba4a" integrity sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg== -"@types/node@>=8.0.0 <15": - version "14.18.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.18.tgz#5c9503030df484ccffcbb935ea9a9e1d6fad1a20" - integrity sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig== - "@types/prop-types@*": version "15.7.5" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" @@ -591,18 +586,6 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -abortcontroller-polyfill@^1.4.0: - version "1.7.3" - resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz#1b5b487bd6436b5b764fd52a612509702c3144b5" - integrity sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q== - acorn-node@^1.8.2: version "1.8.2" resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" @@ -622,17 +605,6 @@ acorn@^7.0.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -airtable@^0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/airtable/-/airtable-0.11.4.tgz#1f8bef44c82a185f05655fc5e9c9563b1ee775ec" - integrity sha512-y8sEi/sMEdgtgvv0V8AhJyFQB9za+6qGIxllt60Ey5ELBgu+bNEc1hjY2aqzp9C38p0ORfaeRS5RSFWlcq11Aw== - dependencies: - "@types/node" ">=8.0.0 <15" - abort-controller "^3.0.0" - abortcontroller-polyfill "^1.4.0" - lodash "^4.17.21" - node-fetch "^2.6.7" - anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" @@ -767,11 +739,6 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - fast-glob@^3.2.11: version "3.2.11" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" @@ -884,11 +851,6 @@ lilconfig@^2.0.5: resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - loose-envify@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -942,13 +904,6 @@ next@latest: "@next/swc-win32-ia32-msvc" "12.1.6" "@next/swc-win32-x64-msvc" "12.1.6" -node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - node-releases@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" @@ -1151,11 +1106,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - tslib@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" @@ -1171,19 +1121,6 @@ util-deprecate@^1.0.2: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - xtend@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"