GraphQL: Zero to Awesome
GraphQL is changing the way we work by allowing us to build rich APIs quickly that are easy to extend. If you haven't checked it out, what are you waiting for? We've produced a series of videos and open source repositories to help get you up to speed quickly.
With a focus on modern technology and real world application, this course is a complete start-to-finish guide to building a real-time GraphQL forum using Node.js or Elixir, then implementing a client for it using Vue, Flutter, React Native, and Elm.
Together we will build a complete full stack online forum in either Elixir or TypeScript, with multiple web and mobile clients. Users can create categories, threads and post with markdown support. The GraphQL backend also supports subscriptions, so we can see updates to a thread in real-time.
We will build the business logic layer backed by a database, design a GraphQL server on top of it, and consume the API from various client applications.
This course is designed to showcase GraphQL's versatility and to dramatically improve your coding skills while introducing you to new technologies. You not only will learn GraphQL but also Elixir, Node.js / TypeScript, Flutter, React Native, Elm, React and Vue.
The course is designed to developers from mid-junior to senior. We take special care in explaining and describing in detail the core concepts of each tool and every important term used. This course covers a breadth of technologies - feel free to mix and match what you need, or use it as an excuse to learn something new!
Here's the complete summary of technologies covered in this course:
Elixir is a dynamic, functional language designed for building scalable and maintainable applications.
Flutter allows you to build beautiful native apps on iOS and Android from a single codebase. It's built atop the Dart language.
Vue is a progressive framework for building user interfaces.
The Apollo GraphQL platform is an implementation of GraphQL that helps you manage data from the cloud to your UI.
GraphQL is a query language for strongly typed APIs. It is a declarative language used to fetch data with queries, make changes to it with mutations, and learn about data that’s changing in real-time with subscriptions.
That’s a boring description though. A more succinct and exciting way to say the same thing is: with GraphQL, you just describe the data you want, and you get it.
What does it mean for an API to be strongly typed? It means that a given field returns an explicitly-specified type of data, and a GraphQL server is incapable of returning data that doesn’t match the specification. Any attempt to do so results in an error.
With GraphQL, when you’re building a client, you can be guaranteed either to receive an error, or to receive data that matches the specification. This helps you write clients with confidence.
Each lesson focuses on a single aspect of building the project, like modeling the data, building a GraphQL server in Elixir, or building a mobile client for it in Flutter.
What’s this GraphQL thing and where does it fit in?
A brief look at libraries and tools to help you build GraphQL applications
An overview of the data model we’ll be using, and an exploration of it via GraphQL Playground
Building an Elixir data layer for our Forum with Ecto
Setting up a Phoenix app with Absinthe to serve our data layer over GraphQL
Using TypeScript and ApolloServer to build a GraphQL API
Using Vue with TypeScript, Stylus, Pug, and Vuex to build a client for a graphql-powered forum
Creating a cross-platform graphql-powered forum app with React Native
Using elm-graphql and elm-ui to rapidly build a webapp for our GraphQL Forum.
Using graphql-flutter to rapidly build a real-time forum client
The code in the applications was produced by:
Our content library is pretty great, here are a few lessons we think you might like.
Some other people were willing to publicly state that they like us!
Smooth Terminal has easily been one of the most helpful resources on my journey to better understand Elixir and the Phoenix web framework.
With any language there are so many details to learn. What functions are built-in? How should I structure my code? What tools are available for improving my workflow? It’s rare to find one source that can answer so many of these questions, but Smooth Terminal does this and more.
Smooth Terminal is by far the best resource for learning Elm anywhere, and among the very best online learning platforms, period.