Getting Started
  • What You Need for This Course
Intro / Refresher on GraphQL
  • Queries, Using GraphiQL, GraphQL compared to REST
  • GraphQL Type System / Schema, Object vs. Scalar Types, Arguments
  • Mutations for Creating, Updating, Deleting Data in GraphQL
  • Dynamic Values in Queries / Mutations with GraphQL Variables
Intro to Graphene / GraphQL in Python
  • Hello World in Graphene
  • Syntax in Graphene / Snakecase vs Camelcase
  • Object Types, Arguments in Queries
  • Mutations / Default Values
  • Variables in Queries / Mutations
  • Self and Info Values
Building a GraphQL Backend with Django / Graphene
  • Creating Base Django Project
  • Making Tracks App / Modeling Track Data
  • Adding Track Data / Creating Schema with Graphene-Django
  • Integrating GraphiQL for Interact with App Data
  • Adding Mutations / Creating New Tracks
  • Creating New Users
  • Querying Users by ID
  • User Authentication with Django-GraphQL-JWT
  • Authorization Headers to Get Current Auth User
  • Connecting Users with Tracks
  • Updating Tracks
  • Deleting Tracks
  • Adding Likes Model / Creating Likes
  • Querying Likes / Querying Tracks with Associated Likes
  • Error Handling with GraphQLError
  • Adding Full Text Search to our Tracks
Developing a React Client App for the Backend
  • Adding our React Client App
  • Exploring the React Source Code
  • Setting up Apollo Client / Executing Queries with React Apollo
  • Enabling django-cors-headers for Connecting to our Backend
  • Creating our Register Form
  • Executing GraphQL Operations Client-Side with Apollo Dev Tools
  • Storing Form State with useState
  • Executing Mutations with Mutation Component / Register User Mutation
  • Finishing Register (Success Dialog, Toggling Auth Components, Transitions)
  • Custom Error Component / Improved Error Handling
  • Build out Login Form / Execute Login Mutation for JWT
  • Using Apollo Client State to Manage Auth State
  • Adding JWT to our Authorization Header with Apollo Client
  • Adding Routing with React Router 4
  • Styling our Header
  • Signing Out Users with Signout Button
  • Creating Loading Component
  • Displaying Tracks with Track List
  • Building CreateTrack Button / Dialog
  • Improving CreateTrack Dialog
  • Audio Uploads / Creating New Tracks
  • RefetchQueries to Update UI After Mutation
  • Uncontrolled vs Controlled Components / Setting File Upload Limit
  • Add Ability to Play / Download Uploaded Audio Files
  • Add Search Tracks Component / Functionality
  • Updating Track List According to Search Results
  • Updating Tracks
  • Using React Context / useContext to Avoid Props Drilling
  • Deleting Tracks
  • Creating Likes / Liking Tracks
  • Disabling Multiple Likes Per Track
  • Understanding the Apollo Cache / Update vs. RefetchQueries
  • Updating our Cache upon Creating Tracks
  • Updating Cache upon Deleting Tracks
  • Modifying Fetching Behavior of Queries with Fetch-Policy
  • Building Users' Profile Page
  • Finishing our App