GraphQL
Workshop

You've been seeing trail markers for a while now.

No matter how many alternate routes you take, or how many workarounds you finagle… you can’t avoid the terrain ahead of you. It’s time to learn GraphQL.

Why? Because REST APIs have their place in programming — but if you want to create the fastest, most flexible apps, you need a query language and runtime that supports other use cases.

REST is best… until it’s not.

If your app’s users are standard-issue impatient human beings, they don’t just expect your app to be useful. They also expect it to be FAST. Like, bear-snatching-salmon-out-of-a-river fast.

That means you can’t afford to use REST APIs that pull unnecessary data. And you definitely can’t afford to fetch the wrong data, or parse it incorrectly (hello, broken front end).

Stop me if you’ve experienced these issues with REST APIs...

  • You put too much data in your API response — creating a longer wait time before the app was usable

  • You tried sending lots of smaller requests instead — and promptly fell victim to network slowdowns (or had to wade deeper into client-side code to wrangle data)

  • You had to pull data from multiple endpoints — and they stopped playing nicely together

  • Your REST data came back in an unexpected format — which broke the front end and made your app effectively useless

And that’s just the tip of the RESTberg.

Relational data only gets more complex from here!

As the relationships between data become more complex, the design decisions you have to make ALSO get trickier.

Plus, not every user has the fully loaded Mac, the latest phone, or the fastest Internet speeds. And with REST, your app is only as good as its weakest user link.

If your application involves relational data, overfetching and underfetching problems can become MUCH more noticeable to the end user.

Not to mention that bugs love REST 🐛

Because REST isn't strongly typed, you might end up running into bugs when data shows up in an unexpected format. Might as well call it the PEST API, amirite??

Sure, you can write docs to help yourself and other devs use the REST API — but that requires you to find the time (and willpower) to actually do that.

If you really want to create the best version of your app, you need another option in your back pocket.

a raft

GraphQL gives you predictable, fast, stable results

Apart from ordering at a restaurant, wishing on a magic lamp, or extracting heartfelt apologies from a partner who’s wronged you, there aren't many times in life when you can say, “Here’s what I want” and know it’s exactly what you'll get.

GraphQL allows you to write a single query that brings you results that would take multiple requests when using REST.

You can also leverage GraphQL tooling to see exactly what data is available, and plan your queries accordingly.

You can even add new fields and types to your GraphQL API without impacting existing queries! Simply deprecate and hide fields that are no longer important. This means that you can continuously update your apps while keeping your server code clean and maintainable.


I tried learning the basics of GraphQL through online tutorials but quickly got frustrated because often, the tutorial would visit fundamental concepts too quickly and examples were too long and dry. Eve's workshop excels in providing the student with small manageable projects that hone in on fundamental ideas. Her projects are creative and fun to work on!

Satoshi Iwako, Front-End Developer, Udacity

“Sounds great, Eve, but I don’t exactly have time to teach myself GraphQL”

GraphQL sounds great in theory, right?

But if you’re reading this page, I’m guessing you don’t have hours to sift through tutorials and experiment on your own.

And like other flexible specs, GraphQL can feel a bit like a double-edged sword.

Because there are no "official" ways for doing things in GraphQL, you get to enjoy a level of flexibility that’s rare in the software world (and in its people. We’re a stiff-necked bunch).

At the same time, this flexibility means you’re never sure if you're “doing it right”.

Plus, you’ve got to…

  • Learn and apply a whole new vocabulary
  • Design a schema that meets the requirements of your business
  • Decide how to handle auth, file uploads, pagination, and work with live data

In other words: You know the destination, but the path to get there looks pretty bumpy.

Instead of stumbling through, follow me!


I never realized that workshops are my jam until taking a GraphQL Workshop with Eve. Her experience, top knowledge, humor, and teaching styles is the complete package for learning GraphQL. With organized lessons and clear explanations, I learned so much more than I could on my own. I didn’t want to leave the workshop!

Erin Fox, Software Engineer, ConvertKit

a camping gear

Join me for a fun, project-based way to get your GraphQL bearings

Together, we’ll build a real-world GraphQL app from start to finish.

Over the course of six modules, you’ll design, build, iterate, and scale the fictional Camp Lambda Activity Manager app. Think of it as the CLAMStack. Minus the smell.

This real-world app keeps track of counselors, cabins, camp activities, and all of the relationships between them. So when Susie steals Logan’s lanyard, or Dakota pushes Madison into the lake, you’ll know which of their counselors to tell.

Learning is easier when you’re building something specific, but don’t worry! Everything you do and learn in this workshop will be directly applicable to the apps you work on now and in the future.


Who’s this workshop for?

This GraphQL workshop is a great fit for programmers who:

  • Work on JavaScript front ends: Use GraphQL to make requests to the backend without waiting for someone else to build support
  • Build backends: And want to help front end devs help themselves
  • Create mobile applications: Simultaneously support multiple client versions, or diverge Android and iOS versions
  • Work on embedded systems: Got Elixir applications making requests for data? GraphQL can help
  • Have gotten stuck or bored with other GraphQL tutorials

With a little practice, even nonprogrammers can learn to use GraphQL to pull the data they need — without bothering the coders. Smell that? That’s the sweet perfume of fewer Slack notifications.


Learning GraphQL can seem overwhelming with the expanse of resources available on the internet but not knowing where to start. Eve’s book “Learning GraphQL” was the first time I was introduced to her teaching style. I attended her technical workshops at PayPal and loved how she explained complex topics and broke them down succinctly with relatable examples of skiing and life in Tahoe. She has an infectious energy and makes it fun to attend workshops. I highly recommend her learning materials.

Shruti Kapoor, Senior Software Engineer, PayPal
Eve Porcello

Howdy, scout! 👋 I'm Eve Porcello, and I'll be your guide through the GraphQL wilderness.

I'm a software engineer, co-author of the Learning React and Learning GraphQL O'reilly Media books, and frequent highly-rated conference speaker. *buffs nails*

I've trained thousands of developers around the world in React and GraphQL. My teaching style is focused and accessible, but never stuffy. This workshop is the culmination of all those trainings, plus questions and feedback from devs like you.

I promise that not only will learning GraphQL with me be easy... it might just be fun.

(To me, GraphQL is 🎶 simply the best! Better than all the REST 🎶 OK, sorry for getting that stuck in your head.)

6 modules to earn your GraphQL badge

The GraphQL Query Language

The GraphQL Query Language

Whether it's your GraphQL implementation or someone else's, you need to know the Query Language. In this module you'll learn how to see what data is available to you, query it, and change it.

  • Queries, Mutations, and Subscriptions
  • Input types, unions, interfaces
  • Fragments
  • Introspection
Schema Definition Language

Schema Definition Language

The schema is the blueprint for a GraphQL API. It's vital that the schema you design meets the needs of your business. After this module, you'll be ready to apply what you've learned to your own app!

  • Creating custom objects & scalar types
  • Creating list & enumeration types
  • Composing root types
  • Designing mutations
  • Implementing paging support
Apollo Server

Apollo Server

Once you have a schema, it's time to build the server that supports it. Apollo creates some of the most popular and powerful GraphQL tools in the industry.

  • Mocking a server
  • Writing resolvers & using arguments
  • Filtering & paging data
  • Nesting fields
  • Working with Context
Using GraphQL Clients

Using GraphQL Clients

You've built a server, now it's time to get the data into your app. Camp Lambda is built with React, but you'll also see examples of how a variety of clients can interact with your server.

  • Sending client queries
  • Using React Hooks to interact with your API
  • Apollo Client DevTools
  • Batching requests
  • Working with the inMemoryCache
  • Lazy loading data
  • Examples of React Native and Vue clients
Building GraphQL Apps

Building GraphQL Apps

As you know, getting data into your app doesn't mean the job is done. In this module, you'll learn how to implement the important features that are expected from today's applications.

  • Customizing server security
  • Authentication with OAuth
  • Live updating with GraphQL Subscriptions
  • Handle file uploads on client & server
  • Develop complex error handling strategies
  • Testing queries & endpoints
  • Deploying GraphQL applications to the cloud
GraphQL at Scale

GraphQL at Scale

By this point of the workshop you've built and deployed a GraphQL application. But there's more to learn and do! In this final module, you'll learn how to build your own microservices with Apollo Federation, working with cloud services, and more!

  • Apollo Federation
  • Managing your schema as you grow
  • Using Codegen and TypeScript
  • Cloud services like Hasura, Prisma, and AppSync