The AppSync Masterclass premium package
Learn how to build performant and scalable GraphQL APIs by building a Twitter clone using AppSync, Lambda, DynamoDB, Cognito, Vue.js and Amplify.
How do GraphQL APIs work? How to define a GraphQL schema.
How are GraphQL APIs different from REST? The pros & cons of each.
What is AppSync? How does it compare to API Gateway?
How to test AppSync APIs both locally and remotely with end-to-end tests.
How to secure AppSync APIs with the right auth method and prevent unauthorized access.
Data modelling techniques for DynamoDB.
Hands-on experience with popular AWS services such as AppSync, Lambda and DynamoDB.
Hands-on experience building something non-trivial with the popular Vue.js framework.
How to build an effective caching strategy to optimize performance, cost and scalability.
Best practices for logging and monitoring so you can spot and fix issues in production quickly.
What is GraphQL?
FREE PREVIEWWhat is AWS AppSync?
FREE PREVIEWAppSync vs API Gateway
FREE PREVIEWAppSync vs running GraphQL in Lambda
What is AWS Amplify? [coming soon]
FREE PREVIEWQuiz
FREE PREVIEWSet up the backend project
FREE PREVIEWDesigning the GraphQL schema
Configure Cognito User Pool
Save user profile on PostConfirmation
What should we test?
Add integration test for confirmUserSignup
Add acceptance test for confirmUserSignup
Implement getMyProfile query
Add unit test for getMyProfile query
Add acceptance test for getMyProfile query
Capture AppSync's GraphQLUrl in .env
Implement editMyProfile mutation
Add tests for editMyProfile mutation
Implement getImageUploadUrl query
Add unit test for getImageUploadUrl query
Add acceptance test for getImageUploadUrl query
Implement tweet mutation
Add integration test for tweet mutation
Add acceptance test for tweet mutation
Implement getTweets query
Add unit tests for getTweets query
Add acceptance test for getTweets query
Implement getMyTimeline query
Add tests for getMyTimeline query
Use context.info to remove unnecessary DynamoDB calls
How are you finding the AppSync Masterclass so far?
Implement like mutation
Implement Tweet.liked nested resolver
Rewrite tests with GraphQL fragments
Add tests for like mutation
Implement unlike mutation
Add tests for unlike mutation
Implement getLikes query
Add tests for getLikes query
Implement Profile.tweets nested resolver
Implement retweet mutation
Implement Retweet nested resolvers
Add integration tests for retweet mutation
Add acceptance tests for retweet mutation
Implement unretweet mutation
Add integration tests for unretweet mutation
Add acceptance tests for unretweet mutation
Implement reply mutation
Add integration tests for reply mutation
Implement Reply nested resolvers
Add unit tests for Reply.inReplyToUsers VTL
Add acceptance tests for reply mutation
Implement follow mutation
Implement Profile.following and Profile.followedBy
Implement getProfile query
Add tests for follow mutation
Distribute tweets to followers
Add integration tests for the distribute-tweets function
Add acceptance tests for the distribute-tweets function
Add tweets to timeline when following someone
Add integration tests for distribute-tweets-to-follower function
Add acceptance tests for distribute-tweets-to-follower function
Implement unfollow mutation
Add acceptance tests for unfollow mutation
Implement getFollowers query
Compare the two ways of hydrating results
Add unit tests for hydrateFollowers.request VTL template
Add acceptance tests for getFollowers query
Implement getFollowing query
CI/CD pipeline intro
Configure CI/CD pipeline with Github Actions
How to promote change through different stages
Wrap up
Setup: create new Vue.js project
Setup: configure TailwindCss
Setup: configure font-awesome
Setup: integrate backend
Router: setup router
Router: add public pages
Router: setup router guard for authenticated pages
Vuex: setup multi-module store
Vuex: add authentication module
Vuex: add store access to UI components
Landing page: setup and styling with Tailwind
Landing page: add signup modal and step logic
Landing page: add signup Vuex module and migrate local signup logic to Vuex
Landing page: add escape directive to close signup modal window
Landing page: add signup step 1, create account
Landing page: add signup step 2, customise
Login page: add user login with Amplify [coming soon]
Configure CI/CD pipeline with Amplify [coming soon]
Home page: setup and styling with Tailwind [coming soon]
Home page: loading profile data [coming soon]
Home page: posting a new tweet [coming soon]
Home page: rendering the timeline [coming soon]
Home page: adding Reply, Retweet, Like and Unlike [coming soon]
Profile page: setup and styling with Tailwind [coming soon]
Profile page: rendering profile details [coming soon]
Profile page: rendering profile timeline [coming soon]
Profile page: edit profile details [coming soon]
Profile page: following/unfollowing a user [coming soon]
UI: add infinite scrolling [coming soon]
UI: add loading indicator [coming soon]
Welcome back!
Why not Elasticsearch?
Sign up to Algolia
Sync users and tweets to Algolia
Securely handle Algolia API key
Add search to GraphQL schema
Implement search query
Add tests for search query
Add getHashTag to GraphQL schema
Implement getHashTag query
Add tests for getHashTag query
What are AppSync subscriptions? [coming soon]
Add subscription for retweets [coming soon]
Add subscription for likes [coming soon]
Add subscription for mentions [coming soon]
Support Direct Messages in the GraphQL schema [coming soon]
Implement sendDirectMessage mutation [coming soon]
Implement listConversations query [coming soon]
Implement getDirectMessages query [coming soon]
Understanding AppSync caching [coming soon]
Configure per-resolver caching [coming soon]
How to support 2-way pagination? [coming soon]
Add two-way pagination support for timeline [coming soon]
More details to come
Configure Kinesis Firehose [coming soon]
Configure Cognito Identity Pool [coming soon]
Configure IAM role to allow frontend to publish events to Firehose [coming soon]
Record server-side analytics events to Firehose [coming soon]
Configure Athena table [coming soon]
Add getAnalytics query to GraphQL schema [coming soon]
Implement getAnalytics query [coming soon]
More details to come
Understanding the AppSync logging options [coming soon]
Enable resolver logs [coming soon]
X-Ray
Set up dashboards in CloudWatch [coming soon]
Set up CloudWatch alerts [coming soon]
Load testing the AppSync API [coming soon]
Implement sampling for resolver logs [coming soon]
How to configure custom domain names for AppSync API [coming soon]
Considerations for scaling an AppSync API [coming soon]
Versioning strategies for AppSync APIs [coming soon]
How to model multi-tenant applications
How to model hierarchical data access patterns