Why I'm building a GraphQL course for Flutter developers
Tags: flutter, graphql, mobile, fauna
Published: 2021-04-09 04:13:34

I recently made the decision to create a course that teaches developers how to leverage GraphQL in their Flutter applications.

The idea for the course emerged during my recent experience working on a Flutter project that primarily used REST APIs but could have benefited greatly from embracing GraphQL.

# Is REST really easy?
The most common argument I hear from developers who want to use REST over GraphQL is that "REST is easy" and "GraphQL is complicated."

In my experience REST only appears easier on the surface. In other words...

**The API is just the tip of the iceberg**
![REST Iceberg](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qrbvyb60xwjzn5n3hy51.png)

While the REST API may be easy to _get started with_, it leaves you with a number of additional problems to solve on your own:

- Caching
- Type safety
- Optimistic updates
- N + 1 (or making many API calls to get the data you need)
- Over-fetching
- Data aggregation

These are all solvable with REST but require additional code you need to write and maintain.

With GraphQL you can leave it to the GraphQL server and smart client libraries like [graphql_flutter](https://pub.dev/packages/graphql_flutter) or [ferry](https://ferrygraphql.com/) to solve all of this for you.

So by investing some time up front getting started with GraphQL and all it has to offer, you can do more with less.

## A GraphQL API is only a few clicks away

Some of the perception that "GraphQL is complicated" stems from complicated server implementations. Having built a few custom [Apollo Server](https://www.apollographql.com/docs/apollo-server) APIs, I agree that the backend of GraphQL can be complicated.

Thankfully, there are easier ways to get started with a fast, scalable GraphQL API. My choice backend these days is [Fauna](https://fauna.com/), with this description from their site:

> Fauna is a flexible, developer-friendly, transactional database available as a secure, cloud API with native GraphQL. Never again worry about database provisioning, maintenance, scaling, sharding, replication, or correctness.

Without writing _any_ code, you can have a GraphQL API up and running in just a few minutes.

I have paired [Next.js + Fauna GraphQL](/nextjs-and-fauna-graphql-in-5-minutes) in multiple projects with amazing results in productivity, performance, and scale. I am excited to bring these same benefits to other Flutter developers with their applications.

## Flutter is powerful and fun

A while back, I spent about a month evaluating [Flutter vs. React Native](/flutter-vs-react-native). Since then it's been all Flutter all the time and **I love it**.

Sure, Flutter isn't perfect but no development toolkit is. The reason why I love Flutter is because it lowered the entry barrier enough for me (previously and still a web developer) to step into mobile app development.

[Flutter is similar enough to React](/is-flutter-similar-to-react) that I can reapply my existing skills in all kinds of new ways and that's pretty exciting.

## Flutter + GraphQL = Excellent developer experience

One thing Flutter developers love and continue to want is a great developer experience. Flutter offers a great developer experience and I believe pairing Flutter with GraphQL makes the experience even better.

**Want updates on this course?** [Follow me on Twitter](https://twitter.com/seanconnollydev) I will keep you posted on its progress.