About tutorials

Tutorials are pointers to other documentation resources. They are an aggregation of all the community documentation regarding decoupled architectures. You will find here a wide variety of documentation topics, from the JSON API server to the OAuth2 authentication, schema generation, and hand picked blog posts. If you want to suggest adding a new tutorial to this unstructured list, please open an issue on the GitHub issue queue.

Miscelaneous

Decoupled Drupal Hard Problems: Routing
We know how to create custom paths in Drupal, but in a decoupled scenario things can get trickier.
4 Benefits of decoupled architecture for enterprise digital marketers
A non-developer focused article on decoupled architecture from Mediacurrent's Shellie Hutchens.
The 3 C's + the 1 D of Drupal: Why Decoupled Matters
Decoupled has been in place for a few years, but the Open Source and Drupal community are really beginning to rally around it, as evidenced by more than 100 professionals gathering in NYC last weekend at 30 Rock.
Should you Decouple?
One of the major topics of discussion in the Drupal community has been decoupled (or headless) Drupal. Depending on who you ask, it’s either the best way to build break-through user experiences, or nothing short of a pandemic. But what exactly is a decoupled architecture?
The Hidden Costs of Decoupling
Decoupled Drupal has been well understood at a technical level for many years now. While the implementation details vary, most Drupal teams can handle working on decoupled projects. However, we’ve heard the following from many of our clients
Decoupled static music site using Drupal + Pushtape Cassette
Looks like a fun way to play with decoupled Drupal and music.
Decoupled Drupal Hard Problems: Schemas
The Schemata module is our best approach so far in order to provide schemas for our API resources. Unfortunately, this solution is often not good enough. How can we improve this situation?
Decoupled Drupal Hard Problems: Image Styles
As part of the API-First Drupal initiative, and the Contenta CMS community effort, we have come up with a solution for using Drupal image styles in a decoupled setup.
Using Drupal 8 contact forms via REST
A solution to a commonly requested feature in decoupled sites.
Re-learning accessibility for a decoupled front end
Tobias Williams reminds us that when decoupling Drupal, we need to thinking more about accessibility. A good refresher.
Decoupling in drupal 8 based on a proven model
Matt Davis of Mediacurrent introduces us to a module that provides the ability to progressively decouple blocks in Drupal 8.
Between the Cracks of Decoupled (Drupal) Architecture
In this article Campbell Vertesi provides a very insightful look at the issues that can arise when you add the complexity of a decoupled architecture.
Progressively Decoupled Drupal Approaches
This blog post features some compelling approaches which reflect a wide spectrum of possible ways to implement Drupal in a progressively decoupled fashion without abandoning the things that make Drupal great on the front end.
Contenta Makes Your Content Happy
Contenta is a Drupal distribution that gives you modern API capabilities out-of-the box with JSON API, which amongst other features allows you to fetch nested resources in one request. It’s ready to feed content to your JavaScript powered website, phone app, TV, or even the mythical fridge application.

JSON API

Decoupled Drupal and Ember
This is the first in a series of articles that will document lessons learned while exploring using Ember as a decoupled client with Drupal.
React and Drupal 8 with JSON API 2/3
If you're looking at experimenting with decoupled Drupal be sure and read this post. JSON API is a great way to expose you content to a decoupled frontend app.
Nested Filters
Nested filters are useful when you want to find content based on the values of the attributes in the related entities. They take the filters to a new level.
Embedded Resources
This is the most important feature of JSON API. Avoid multiple requests to Drupal by choosing what related entities to embed in your response.
Sparse Fieldsets
If you are getting too much data back from the JSON API server, then you can benefit greatly from using sparse fieldsets.
Filters for Collections
Add constraints to the items you get back from your collections. You can execute any Entity Query as a JSON API filter, but you will need to learn the syntax.
Collections
Collections are the best way to get a listing of entities for a particular resource. They are the alternative to Views in the decoupled world.
Working with Relationships
Relationships in JSON API allow you to reference related pieces of content. This video describes how to interact with relationships in JSON API
The JSON API output
Understand all of the parts in the output of a JSON API response: resource object, attributes, relationships and metadata.
Request a Node
Request a single node by UUID using the JSON API module. This tutorial explains the basics of JSON API requests.
Relation Endpoints
JSON API comes with two extra endpoints to make it easier to deal with relationship. The related and the relationship endpoints will help with your relationship operations.
Sorting Responses
Sort the results of a collection. It is also useful to find the first or last elements based on a sort criteria.
Translation Support
You can access natively the different translations of a content entity using JSON API.
Removing Records
When you need to remove content from Drupal using JSON API you can use the DELETE method.
Updating Records
The PATCH method can be used to alter existing entities in the Drupal backend. Write operations are typically available only to authenticated users.
Creating New Records
Learn to use the POST method if you need to create new records using JSON API. Write operations are typically available only to authenticated users.

Subrequests

Subrequests Specification
Specification for the Subrequests project.
Incredible Decoupled Performance with Subrequests
In my previous post, Modern Decoupling is More Performant, we discussed how saving HTTP round-trips has a very positive impact on performance. In particular, we demonstrated how the JSON API module could help your application by returning multiple entities in a single request. Doing so eliminates the need for making an individual request per entity.

OAuth2

Implicit Grant
Authenticate requests using the implicit grant.
Authorization Code Grant
Authenticate requests using the authorization code grant.
Client Credentials Grant
Authenticate requests using the client credentials grant.
Refresh Token Grant
Generate a new valid token when it expires by refreshing it.
OAuth 2 Scopes and Drupal Roles
OAuth2 grants are represented as Drupal roles. Learn how those work.
Password Grant
Authenticate requests using the password grant.
Installation and set up
Learn how to install and configure the Simple OAuth module.
Introduction to OAuth2
Quick review and understanding of OAuth2.

GraphQL

Drupal and Graphql with React and Apollo
This blog post shows how you can easily use Drupal 8, React, GraphQL, and Apollo to build an app that displays a list of articles.