Nader Dabit
Nader Dabit
Nader is an author, open source developer, and Developer Relations Engineer working in the blockchain space with Edge & Node and The Graph Protocol.
Building GraphQL APIs on top of Ethereum with The Graph
GraphQL Galaxy 2021GraphQL Galaxy 2021
48 min
Building GraphQL APIs on top of Ethereum with The Graph
Workshop Free
The Graph is an indexing protocol for querying networks like Ethereum, IPFS, and other blockchains. Anyone can build and publish open APIs, called subgraphs, making data easily accessible.
In this workshop you’ll learn how to build a subgraph that indexes NFT blockchain data from the Foundation smart contract. We’ll deploy the API, and learn how to perform queries to retrieve data using various types of data access patterns, implementing filters and sorting.
By the end of the workshop, you should understand how to build and deploy performant APIs to The Graph to index data from any smart contract deployed to Ethereum.


Building GraphQL APIs on Ethereum
GraphQL Galaxy 2021GraphQL Galaxy 2021
8 min
Building GraphQL APIs on Ethereum
Blockchains are databases with a unique set of properties. Unlike most databases which are optimized for both read and write operations, blockchains are optimized for write operations, typically focused on optimizing and scaling transaction cost, transaction volume, and transaction speed.
In this talk, I'll dive into the web3 space, and show how developers can leverage The Graph Protocol to build performant, scalable, and decentralized GraphQL APIs and dapps on decentralized networks like Ethereum and IPS.


Building Dapps with React
React Advanced Conference 2021React Advanced Conference 2021
30 min
Building Dapps with React
Decentralized apps (dApps) are continuing to gain momentum in the industry. These developers are also now some of the highest paid in the entire trade. Building decentralized apps is a paradigm shift that requires a different way of thinking than apps built with traditional centralized infrastructure, tooling, and services – taking into consideration things like game theory, decentralized serverless infrastructure, and cryptoeconomics. As a React developer, I initially had a hard time understanding this entirely new (to me) ecosystem, how everything fit together, and the mental model needed to understand and be a productive full stack developer in this space (and why I would consider it in the first place). In this talk, I'll give a comprehensive overview of the space, how you can get started building these types of applications, and the entire tech stack broken apart then put back together to show how everything works.


Web3 Workshop - Building Your First Dapp
React Advanced Conference 2021React Advanced Conference 2021
145 min
Web3 Workshop - Building Your First Dapp
Workshop Free
In this workshop, you'll learn how to build your first full stack dapp on the Ethereum blockchain, reading and writing data to the network, and connecting a front end application to the contract you've deployed. By the end of the workshop, you'll understand how to set up a full stack development environment, run a local node, and interact with any smart contract using React, HardHat, and Ethers.js.


Building a Highly Scalable Cloud API Gateway
GraphQL Galaxy 2020GraphQL Galaxy 2020
31 min
Building a Highly Scalable Cloud API Gateway
One of the benefits of GraphQL is that it enables a single entry point into any number of back end service or databases. More and more companies are adopting cloud technologies – leading to more jobs, more money, and more opportunities in cloud computing. When GraphQL is integrated with a cloud back end, enabling secure and direct access to dozens of databases and managed services, the limitations are endless. The problem is often that building out these implementations from scratch, and getting them right, is hard. In this talk, I’ll show how you can build cloud-based GraphQL back ends connecting to multiple databases (SQL and NoSQL), serverless functions, machine learning services, and microservices using TypeScript, AppSync, and AWS CDK – and do so in fewer lines of code than you’d expect. We’ll also look at how subscriptions, security, caching, and authentication are all handled, enabling you to build APIs that can simultaneously connect to tens of millions of clients at once to offer true real-time applications at scale. By the end of the talk, you should feel comfortable knowing that you can become a cloud engineer using an existing GraphQL skillset.


Transforming GraphQL – Infrastructure as Code for Front End Developers
JSNation Live 2020JSNation Live 2020
27 min
Transforming GraphQL – Infrastructure as Code for Front End Developers
In this talk I’ll show how we can use a combination of GraphQL SDL along with a new DSL (GraphQL Transform) created the Amplify team to build out a full stack cloud application directly from your GraphQL schema. Using this GraphQL DSL, we’ll walk through how to model a Database, authorization rules, relationships, and custom access patterns. We’ll look at how to rapidly prototype an example application, and view some demos including a voting app capable of handling over 100,000 operations per second.


Building Real-time Serverless GraphQL APIs on AWS with TypeScript and CDK
React Summit 2020React Summit 2020
25 min
Building Real-time Serverless GraphQL APIs on AWS with TypeScript and CDK
CDK (Cloud development kit) enables developers to build cloud infrastructure using popular programming languages like Python, Typescript, or JavaScript. CDK is a next-level abstraction in infrastructure as code, allowing developers who were traditionally unfamiliar with cloud computing to build scalable APIs and web services using their existing skillset, and do so in only a few lines of code.
In this talk, you’ll learn how to use the TypeScript flavor of CDK to build a hyper-scalable real-time API with GraphQL, Lambda, DynamoDB, and AWS AppSync . At the end of the talk, I’ll live code an API from scratch in just a couple of minutes and then test out queries, mutations, and subscriptions.
By the end of the talk, you should have a good understanding of GraphQL, AppSync, and CDK and be ready to build an API in your next project using TypeScript and CDK.


Panel Discussion: The Modern Way of Making Websites in React
React Summit Remote Edition 2021React Summit Remote Edition 2021
33 min
Panel Discussion: The Modern Way of Making Websites in React
Video
So, let's get started. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I'm gonna go ahead and start the video. I have a good example for this. I have a good example for this. My current project, I'm working on Spotify embeds for our email and for our landing pages. And the way I usually approach creating this component is to just div it out. So I just make divs within divs and divs and divs. And the way I usually approach creating this component is to just div it out. So I just make divs within divs and divs and divs. And then I end up seeing, oh, I have a header, I have a subtitle, I need a Spotify logo, I need a play button, I need an image. And then I end up seeing, oh, I have a header, I have a subtitle, I need a Spotify logo, I need a play button, I need an image. And so once those keywords start popping out to me, I realize that those are gonna be smaller components. So I think for me, for advice is, I don't know that it needs to be smaller components until it's one big component. And then being able to like map it out big, being able to pull them out small into different files, I think help with the structure of what you actually need within your component, if that makes sense. Yeah, absolutely. I'm just giving that little bit of space in case anyone wants to jump in because without it being in person, you can't make the eye contact, you, you. So there's always that little bit of awkward pause, but I wanna make sure I'm not stepping on any toes or sidelining any great additions there. But Nader, I actually have a question for you. How do you kind of decide whether or not you're like, with a compound kind of component, how do you decide if you're going to be baking in other components, or if you're just kind of leaving a space for children components to be passed as a prop? Like, what kind of a judgment call do you make there? I mean, I guess, kind of just always keeping the idea of like extensibility and scalability. And if this, if there's any chance that they're going to use this by itself and make it to where that it's not going to be affected by having a parent. I don't know, like everything that could be standalone should be enabled to be maybe standalone and that sort of thing. I know that like at AWS, we were building and supporting a UI library that kind of allowed people to just spin up like authentication flows and image pickers and stuff using React components and just like maybe one line of code. And some of those things were kind of like relating to that. So for instance, for authentication flows, you could like spin up the entire flow with a single component, or you could kind of like nest within those components, individual components to kind of like configure things the way that you wanted it, but we made it work either way. So you could use these components standalone, you could nest them together. And yeah, it seemed to work out pretty well, pretty well that way, I guess. Awesome. Cool. I know we are running a little short on time. So I want to make sure we kind of hit all our main things. So I kind of want to move on to dynamic content and logic, just as kind of a broad topic. But, excuse me, do you have any like best practices for bringing data into your components? And Sadek, I know that you think about this a lot in terms of, yeah, just in terms of how to get data into those components, ways to make that still reusable and dynamic if needed. I mean, yeah, it's a big challenge. I know components could mean a lot of things. And often what we deal with, as I told several times already, we deal with websites, right? And a component could be part of any page, basically. So as I said, like maybe the most important thing is like to have a way to componentize the query, right? But you don't want to do like 10 queries or 20 queries if you have 20 components. So you need to kind of get one shot all the content and then break it into different things. So we have a concept for that. But you know, you can do it also with GraphQL. It's a very good way also to break the query into smaller parts. But then you can, you know, form a bigger query. But the important thing is like it's important to think in components even when you're talking about data, okay? And then, you know, there are different kinds of components. Like you can have a page itself could be a component, right? The whole page is a component, is a page component. But then each section of it is a component. And then the small buttons and things that you show inside that kind of macro or section component or section are as well. So you need, so it's often is, so we try to make like, okay, best practices. We see what matters. It's a matter of at which stop we should stop breaking things into smaller parts, right? So I think that for us, at least for our experience, there has been a section level is the middle ground, okay? So let's break the data into the smaller sections. And then that's it. You know, each section will manage its own data and its own components. Because it seems to be in websites, this is how it goes. So it depends on the logic on the app or what you're doing, right? But it seems like sections are more or less independent. And you can take that kind of make that kind of assumption and say, like, okay, we break them into these kind of macro things. And then everything else we'll get from this data. So this is what we do often, right? But the important thing is like you have, as I said, the model of the data should be next to the component. Because otherwise it will be a mess. If you do a big query and then you will throw that data and hope that the component will find their data, that could break. That's so fragile. That can break so easily. So that's why even when you're modeling your data, you say, like, okay, I'm modeling that component, that section, instead of like thinking about the page as a whole. I don't know if that's clear, but that's at least what we understood from our clients. There's a couple of tools that are useful as well for like caching and cache and validation. React Query and Use SWR are ones that I've used before. And it took me a while to kind of understand the use case for them, mainly because they automatically continue to refresh your data, even if you don't tell it to. So one suggestion is even if you use one of those tools to help take care of like your querying, your cache, your cache and validation, you might take away those things from updating automatically if you have a situation where you know when that data needs to be updated. So you're not making extra requests and getting data that doesn't need to come down. But those sorts of, those two packages specifically add or take away a lot of the boilerplate for doing like use effects and fetch calls and that kind of stuff. They take away a lot of that and then just expose your data to you in a way that works really well across components. And it's funny that I saw in, for instance, in several framers, including Next, for instance, that you have this kind of distinction between static data and dynamic data, which comes very handy in this kind of case, because also the way you manage data is not the same. Like in a website, mostly static. You don't need things to be dynamic. And that's a waste of CPU cycles, right, or whatever it is, our network or a lot of other things. Whereas for other things that should be dynamic, then it should be dynamic and you decide that, okay, this component should be dynamic. And I guess it's a good way also of dealing with this problem. Yeah, awesome. James, I'm actually curious about the benefits of Auth0's hook-based library compared to what I feel like we used to have a lot more of was like you would send the entire form as a component and I would like import a form. I don't know if Auth0 did it, but I see a lot of libraries moving away from here's our input field, here's our button component, and you use that, but now you're just sending us the logic. What's the benefit there? Yeah, so I love our React SDK and then more specifically, recently, our new Next.js SDK is fantastic. What it does, like you said, is you use the Auth0 provider, you wrap your application, which means you then have access to the use user hook in any different component that you want. And anybody that's done anything with users in the past, you probably want information about the user in the nav bar so you can conditionally display log in, log out buttons or their name. On a profile page, you need information about the user display there. So you end up needing user things in lots of different places. So with our use user hook, going back to the use case of hooks that we talked about a few minutes ago, in any component that you need information about the user, you just use that hook and have access to it and then display it. And a couple of other things that it does, it gives you the user, but you may not have a user, right? So the user may not be logged in. So it gives you a loading state as it's doing that validation to tell whether or not the user is logged in. So that in applications, oftentimes you'll see a little flash when the application loads, you might see log in and then it switches to log out because the application took a second to realize that the user is logged in. So you can actually handle that with the loading property is loading, I think that comes back from that use user hook in addition to the actual user itself. So a lot of the conditionals become like, if is not loading and user then display some sort of user information or the opposite of that for like a log in button versus log out button. But just having access to that hook and using it in any component that you need to get the information that you need about the user is super, super nice. Awesome. So to kind of close out, I think we're coming up on time, but I kind of want to quickly get to maintaining those components. And Erin, if you wouldn't kind of mind talking just about testing, why it's important and like what, which kinds of tests you would recommend in terms of if someone had to prioritize, and oftentimes we do, with which tests we are going to be implementing. What's kind of your advice to people out there? Yeah, I have a love hate relationship with testing. I want to love it. And I know how valuable it is. But it's just such a process. And test like TDD is such a thing. And I think it's great, but I haven't got to that level yet. Maybe one day, but component wise, I think being able to test React testing library is what I'm most familiar with. And to be testing at a smaller component level, and then growing up from there, I think, makes you more secure in these core, like primitive components, and to be able to use them throughout your app. So being able to have tests there are super valuable. I saw a quote or a tweet some couple weeks ago, I think it was. And it was, you should treat your tests like a contract. So if someone else comes in and messes up your test, it's not your fault. Smart. Smart. I love that. Well, thank you so much. I took a lot from that. I learned a lot. Thank you so much to Aaron, James, Sadek, Nader. Really appreciate you all being here. Yeah, I think that's pretty much it. Thanks for moderating. You did a great job. Well, thank you. I appreciate it. This is great. Yeah. And thank you for being here at React Summit, everyone. This is quite the event. So thank you so much.
Turning the Cloud Inside Out
React Summit Remote Edition 2021React Summit Remote Edition 2021
36 min
Turning the Cloud Inside Out
GraphQL is being used in some really interesting ways in parts of the developer ecosystem that you may be surprised to hear about, including Ethereum as well as for building comprehensive graphs from various third party APIs. In this talk, I'll show how to use a similar approach to build a cloud programming interface into AWS with GraphQL and why using this approach makes sense coming from a front end developer looking to leverage their existing skillset.