Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Build Dynamic Applications with GraphQL
Rating: 4.4 out of 5(14 ratings)
106 students

Build Dynamic Applications with GraphQL

A rapid guild to building web apps with GraphQL
Last updated 6/2019
English

What you'll learn

  • Build complete, effective web apps that interact with a backend via GraphQL queries.
  • Construct a schema for your project on GraphQL.
  • Create your own server for your application in GraphQL.
  • Learn tooling to troubleshoot issues that may occur while using your own or any other GraphQL server.
  • Use Apollo Cache effectively to avoid unnecessary round-trips and provide a smooth experience for your end users.
  • Create your own GraphQL backend on any cloud—with minimal effort.
  • Easily turn any data you have into real-time applications—without using third-party services or cumbersome manual polling.

Course content

2 sections49 lectures8h 43m total length
  • The Course Overview6:24

    This video gives an overview of the entire course.

  • Comparing GraphQL to REST: Trello Rest API16:47

    In this video, we will create a web application, the communication via REST is not optimal. GraphQL is a modern approach without some limitations REST has.

    • Quick look into REST API of Trello and problems

    • Discover GraphQL fundamentals

    • See advantages of GraphQL

  • Starting a Project on Graphcool3:56

    In this video, we will learn how the Graph cool will provides a cloud service for a full featured hosted managed database with graphql interface.

    • Discover features of provided service

    • Create account and login

    • Create our project

  • Building GraphQL Schema for the project7:20

    In this video, we will Start from the scratch and set up a GraphQL schema.

    • Add Types to Schema: Board, List, Card type

    • Add relations between Types

    • Add sample data into the database

  • Working with GraphQL Queries and Types8:23

    In this video, we will learn, how to work with GraphQL operations, the built–inplayground could be used.

    • Query for boards, lists, details

    • Modify data with running mutations

    • Checkout built–in documentation explorer

  • Using the Built-in GraphQL for Analyzing and Verifying the Schema12:27

    In this video, to get our own server with our own GraphQL schema we can use cloud-based service “apollo–launchpad”.

    • Discover Apollo–launchpad and create a new pad

    • Add the schema of our board and run some GraphQL queries inbuilt–in GraphiQL

    • Learn about GraphQL and implement resolvers

  • Adding Some Mocked Data in Your Application5:27

    In this video, instead of working with real data, we do rapid prototyping with fake data.

    • Activate auto–mocking with simple defaults values

    • Customize the generated fake data

  • Using Real Trello Data with a REST API10:18

    In this video, we will learn how GraphQL service can load data from many different sources. We can access other REST services for the Board data.

    • Send REST calls to api.trello.com via node-fetch library

    • Extend resolvers for fetching board/ lists/card and run queries

    • Fetch the public data of a specific trellomember

  • Running Our Own Server Locally8:28

    In this video, to implement a GraphQL server we need to integrate our existing schema into a express.js server, for serving the http responses. There exist different libraries for that job. For better understanding, we will check them out and compare their features and how easy they can be used.

    • Run our server based on apollo-server-express

    • Run our server based on express-graphql

    • Run our server based on graphql-yoga

  • Local GraphQL Server with Database14:09

    In this video, we will understand how while using the data from Trello per REST calls it still has the disadvantages of REST. We create server to get our own local full-feature realtimeGraphQL database.

    • Discover graphcool/ prisma: its architecture and its tooling

    • Setup the data model for running the local server

    • Start and run the server

  • Setting Up a React Application8:48

    In this video, we will learn how to bootstrap our React project for the Board web application.

    • Download and install node.js runtime

    • Create basic project structure with create-react-app

    • Open IDE/editor, configure coding style and linting

  • Creating the UI Components12:39

    In this video, we will learn how to create the main building blocks for the web page, for the Component hierarchy.

    • Make a Board the new main application page

    • Create a List and Card component, add to the board

    • Separate state/data from our components

  • Integrating Apollo Framework/Apollo Provider15:26

    In this video, we will learn how to wrap our main application Component with Apollo client library. For simplicity we will use the mocked schema with fake data. Then add and run the GraphQL query.

    • Discover the neededparts of Apollo client library

    • Add the Apollo client with mocked schema link

    • Define and add theGraphQL query to fill the Board with data

  • Implementing the GraphQL Fragments9:56

    In this video, we will learn how each UI component represent a specific type of our GraphQL schema. Fragments help to separate these parts in a GraphQL query.

    • Introduce the “fragment concept” per GraphiQL/playground

    • Split the GraphQL query into fragments for each UI component

    • Separate/move the fragments to their UI components

  • Connecting to Graphcool Cloud-Based Storage Backend14:04

    In this video, we will learn how to connect to any GraphQL server we adapt the linking of the Apollo client configuration. Additionally, let’s add query variables.

    • Use the endpoint URL from the GraphQL-playground, add Apollo-link-http

    • Adapt the GraphQL wrapping of our Board component with variable component

    • Select a specific Board by id

  • Exploring the UI for Adding New Cards and New Lists8:15

    Until now we only showed staticData. In this video we will learn how to modify data we need toadapt some current and add extraelements to input texts and toTrigger actions.

    • Add semanticlibrary, improve CSSstyling to enable fullscreen and scrolling oflong task lists

    • Add button for a‘new list’ at end oflists

    • Add button for a‘new card’ at end ofeach list

  • Connecting to Server, Calling the Mutations for Adding Cards15:32

    We already know GraphQLmutations, In this video we will learn how we canintegrate calling them into the UIclient powered by Apollo.

    • Checkout basicmutations and how toembed with Apollo

    • Design mutationwith parameters inour playground

    • Customize forembedding as propsinto our Reactcomponents

  • How the UI Gets Updated: Handle Mutations on the Client20:50

    Apollo client has a powerful clientside cache and can update theReact UI automatically, In this video we will learn howcan that be triggered andControlled.Find out how to have an optimisticUI.

    • Discover options fortrigger anyupdate query

    • Find out how anoptimistic UI can beimplemented to cutturnaround times

  • Implementing a UI for Editing Cards and Connecting to the Server14:54

    In this video, we will learn for editing the cards, we will havea modal dialog, which will havenew UI logic, and send its changesto the GraphQL server on closing.

    • Implement editablecards, make editor UI

    • Send update toserver

    • Update UI on serverresponse, + errordialog

  • Implementing a UI for Moving Cards and Connecting to the Server17:47

    In this video, we will learn for a kanban board we need to beAble to move cards. We need toadd this to the UI and trigger theright mutations on the server.

    • Add reactant libraryand adapt the UI,prepare

    • Implementcan drop check

    • Trigger the mutationfor adding/removingthe Card

  • Subscriptions: Setting Up and Using in Playground8:55

    GraphQL specification containssubscriptions.In this video we will learn how to use them. Ourprisma server has it enabledout-of-the-box, so we can try them out.

    • Open the serverplayground anddiscoversubscriptions inthe SchemaExplorer

    • Analyze asubscription forCards and Lists

    • Checkout the notification persubscription after Editing aCard

  • Client-Side Connection via Web-Sockets6:54

    In this video, we will learn that Apollo Link needs to be configured toallow http and websockets connection.

    • Add Apollolibraries forws-connection

    • Configure ws link

    • Switching between both links

  • Updating an Existing Card8:21

    In this video, we will learn that When the Board has beenchanged/edited, we want to get itinstantly updated in any anotherbrowser session.

    • Add aBoard-change-subscription

    • Connectsubscription toreact component

    • Discover changes in Apollocache

  • Advanced Subscription22:03

    In this video, we will learn when a Card or a List has been added,then its container needs to be updated. Also when moving a card, how cananother client be updated?

    • Add aList-subscriptionfor adding cardsor moving Cards

    • Add Cardsubscription forEditing a card

    • Adapt delete-all-lists mutation

  • Updating the Mechanism and Strategy for Concurrent Changes14:34

    In this video, we will learn what happens when a Card has beenedited simultaneously in differentclients. Who wins? How can we avoidlosing entered data? Can we givefeedback to a user while editing a Card?We need to check offline/orasynchronous changes on client/server.

    • Add aversion-field toour Card fortrackingconcurrentchanges

    • Add indicator foredited Card intoedit-dialog

    • Add checks and handling ofconflicts whensaving the edited Cardconcurrently

  • Extending the Server to Enable Authentication and User Management19:56

    Access to our GraphQL server needs limitation, currently everybody can change anything. In this video we will add a dedicated GraphQL server with only the mutations and queries we need. For user account Mgmt we can use our DB to hold the login/passwords.

    • We create a newprisma advancedproject with fullfeatured server

    • Discovering thenew project, itsparts andstructure

    • Merge our existingdata model andproject database withnew one

  • Add Sign-in, Log In/Out17:51

    In this video, we will learn how besides a login/logoff form on the clientside, we need User management on theserver, where users accounts withpasswords are stored. We will use thesame DB.

    • Add forms forlogin/ sign-in andadd routing to thispages

    • Add a navbarshowing thelogged-in user

    • Manage auth token on client and in server communication

  • User’s Boards and More Authorisation25:44

    Lets take a look at how the start page will contain the list of auser’s boards.Then he can select and open a specificboard.A user needs to create a board also.

    • Add board relationto user-data modeland server side,add mutation tocreate a new board

    • Replace startpage withlist-of-boards,add route andpage for specificboard

    • Enable all neededmutations to securedserver forauthenticated user

  • Track and Show Author13:54

    In this video, we will see how each collaboration platform stores and shows who did any change on the board.After authentication we always know whois logged-in and can track that information.

    • Extend graphqldata-model

    • Store the user oneach change

    • Extend the UI to showthe avatar of the lastauthor

  • Troubleshooting and Error Handling24:58

    In this video, we will learn how while developing, we should findand fix bugs quickly. Therefore weneed to get some insights.Error handling is essential andshould always give us full controland fast feedback.Graphql Error handling…Server error -> Client side.

    • Explore the tools and practices

    • Need to have debug logs or even debug our server

    • Add more feedback tothe user on errors,improved errormessage handling

  • Tuning11:18

    In this video, we understand how does it always make sense, to loadthe whole board at the beginning?What are the advantages ofsplitting the queries into smallerrequests.

    • Add queryfor list-of-boards on theserver

    • Split coolboard component to only hold the ids of thelists

    • Adapt other parts,final discussion

Requirements

  • Basic knowledge of creating a web application with React is mandatory.

Description

Are you a frontend developer looking for a simpler way to interact with the server side? Look no further, as this Course is perfect for you!

GraphQL is a data-fetching API developed by Facebook. It powers millions of devices and most components of the Facebook and Instagram website. In this course, you will get an introduction into GraphQL as a bridge to React client application to communicate with servers as the missing data-fetching or query language. You will then learn to add features to your board such as adding or editing a task, implement the shared whiteboard functionality by populating the changes into other sessions and much more. Moving further, build a job board application using Apollo Client to React. Create a chat application and dive deep into its advanced topics such as Authentication/Authorization and Real-time Subscriptions. In the last application, we will look at how you can use Apollo client in combination with REST APIs.

By the end of the course, you will know how to create real-world GraphQL effectively and apply those skills at your job, efficient in using GraphQL for API development.

Contents and Overview

This training program includes 2 complete courses, carefully chosen to give you the most comprehensive training possible.

The first course, Hands-on Application Building with GraphQL you will learn how to build your own Trello-like web application using GraphQL. The course starts by teaching you GraphQL basics and comparing it with REST; you will then learn to run queries and specify types in its schema system. The course then shows you how to build a Graphql server and a client UI and connect this Apollo-based client to the server. You will then learn to add features to your board such as adding or editing a task. You will then see how to implement the shared whiteboard functionality by populating the changes into other sessions and how to solve the conflicts in this real-world scenario with concurrent changes from different users. The course then shows you how to add authentication to your application to prevent unwanted access to it and user-centric web service. Finally, you will learn troubleshooting typical problems that may occur while running your app, and how to fine-tune the schema and communication of client-server. By the end of the course, you will be able to build your own applications using GraphQL.

The second course, GraphQL Projects you will learn GraphQL design principles and what makes it different from REST while creating real-world projects. You will build a job board application using Apollo Client to React and know how to use it. Create a chat application and dive deep into its advanced topics such as Authentication/Authorization and Real-time Subscriptions. In the last application, we will look at how you can use Apollo client in combination with REST APIs. By the end of the course, you will know how to create real-world GraphQL effectively and apply those skills at your job.

About the Authors:

  • Robert Hostlowsky (@rhosts) has been gaining experience in various roles in software development. He currently works at codecentric AG as a senior consultant and as a developer and technical coach, following the goals of high quality and efficiency. Since 2012 He has been an enthusiastic supporter of the software crafts movement. For more than 2 years he has been working with GraphQL. As a speaker at various conferences and meetups, he has presented this topic to more than 500 people.

  • Maxim Filimonov is a full-stack software engineer with over a decade of experience in various industries. He has been part of large enterprises and world-renowned consultancies, and a core team member of multiple startups. For the last 2.5 years Maxim has been focusing on mentoring other developers as part of the Thinkful Inc. online coding bootcamp and his own company: Reify Academy. Maxim has been using GraphQL on various projects for the last 1.5 years and have also helped several of his students implement GraphQL projects. He holds a Master of Computer Science degree from Bauman Moscow State Technical University and has spoken about GraphQL at several meetups in Australia. Outside his work, his main passion is personal development, mindfulness, and travel. You can find him meditating/dancing all over the World.

Who this course is for:

  • This course is for intermediate to experienced React developers, programmers keen to building applications in a relatively fast and easy way.