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

Using Drupal 8 contact forms via REST
A solution to a commonly requested feature in decoupled sites.
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.
4 Benefits of decoupled architecture for enterprise digital marketers
A non-developer focused article on decoupled architecture from Mediacurrent's Shellie Hutchens.
Decoupled static music site using Drupal + Pushtape Cassette
Looks like a fun way to play with decoupled Drupal and music.
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.
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.
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.
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.
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?
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.
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: Routing
We know how to create custom paths in Drupal, but in a decoupled scenario things can get trickier.
Single-sign on (SSO)
Contenta can be a SSO authentication server for your applications regardless what technologies you used to build them.
Contenta Docker: Initial Install
Contenta provides a Docker project to get you up and running with Contenta super easy. In this screencast, we run through the install of Contenta via Docker Compose.
Contenta Docker: Adding a Consumer
Building off of the Contenta Docker project, we are going to add a Polymer frontend application to comunicate with our decoupled backend.
How to install Contenta headless Drupal on a Digital Ocean droplet
Installing it is generally a straightforward process, but the documentation does assume a level of Drupal knowledge that I don’t possess.
JSON-RPC to decouple everything else
During the week of DrupalCon we discussed some limitations decoupling Drupal. We concluded that we need a reliable, flexible and secure way for Drupal developers to decouple everything else.
Gatsby JS: A Powerful Front End Tool for Decoupled Devs
Want to learn about GatsbyJS? What is it? How can it help you and your team? Is it a framework? Is it a static site generator? GatsbyJS is an exciting way of thinking about building sites for the modern web.
Lando + Contenta CMS + Nuxt
Set up a headless Drupal architecture in Lando
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.
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

Subrequests

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.
Subrequests Specification
Specification for the Subrequests project.

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.
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.
Request a Node
Request a single node by UUID using the JSON API module. This tutorial explains the basics of JSON API requests.
The JSON API output
Understand all of the parts in the output of a JSON API response: resource object, attributes, relationships and metadata.
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
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.
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.
Sparse Fieldsets
If you are getting too much data back from the JSON API server, then you can benefit greatly from using sparse fieldsets.
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.
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.
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.
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.
Removing Records
When you need to remove content from Drupal using JSON API you can use the DELETE method.
Translation Support
You can access natively the different translations of a content entity using JSON API.

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.
Contenta Docker: GraphQL and Apollo
In addition to REST, Contenta includes an instance of GraphQL. In this screencast, we'll use the apollo-client web component to pull data into our Polymer frontend application.

OAuth2

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