Has a cool chart, but even better the same content in text:
Accessible version of flowchart
This is an accessible and described version of the flowchart images earlier in this blog post. First, let us list the available architectural choices:
- Coupled. Use Drupal as is without additional JavaScript (and as a content repository for other consumers).
- Progressively decoupled. Use Drupal for initial rendering with JavaScript on top (and as a content repository for other consumers).
- Fully decoupled static site. Use Drupal as a data source for a static site generator and, if needed, deploy to a JAMstack hosting platform.
- Fully decoupled app. Use Drupal as a content repository accessed by other consumers (if JavaScript, use Node.js for server-side rendering).
Second, ask the question “What do you intend to build?” and choose among the answers “One experience” or “Multiple experiences”.
If you are building one experience, ask the question “Is it a website or web application?” and choose among the answers “Yes, a single website or web application” or “No, Drupal as a repository for non-web applications only”.
If you are building multiple experiences instead, ask the question “Is it a website or web application?” with the answers “Yes, Drupal as website and repository” or “No, Drupal as a repository for non-web applications only”.
If your answer to the previous question was “No”, then you should build a fully decoupled application , and your decision is complete. If your answer to the previous question was “Yes”, then ask the question “Are there things the project cannot live without?”
Both editorial and developer needs are things that projects cannot live without, and here are the questions you need to ask about your project:
Editorial needs
- Do editors need to manipulate page content and layout without a developer?
- Do editors need in-context tools like in-place editing, contextual links, and toolbar?
- Do editors need to preview unpublished content without custom development?
- Do editors need content to be accessible by default like in Drupal’s HTML?
Developer needs
- Do developers need to have control over visual presentation instead of editors?
- Do developers need server-side rendering or Node.js build features?
- Do developers need JSON from APIs and to write JavaScript for the front end?
- Do developers need data security driven by a publicly inaccessible CMS?
If, after asking all of these questions about things your project cannot live without, your answers show that your requirements reflect a mix of both editorial and developer needs, you should consider a progressively decoupled implementation, and your decision is complete.
If your answers to the questions about things your project cannot live without show that your requirements reflect purely developer needs, then ask the question “Is it a static website or a dynamic web application?” and choose among the answers “Static” or “Dynamic.” If your answer to the previous question was “Static”, you should build a fully decoupled static site , and your decision is complete. If your answer to the previous question was “Dynamic”, you should build a fully decoupled app , and your decision is complete.
If your answers to the questions about things your project cannot live without show that your requirements reflect purely editorial needs, then ask two questions. Ask the first question, “Are there parts of the page that need JavaScript-driven interactions?” and choose among the answers “Yes” or “No.” If your answer to the first question was “Yes”, then you should consider a progressively decoupled implementation, and your decision is complete. If your answer to the first question was “No”, then you should build a coupled Drupal site, and your decision is complete.
Then, ask the second question, “Do you need to access multiple data sources via API?” and choose among the answers “Yes” or “No.” If your answer to the second question was “Yes”, then you should consider a progressively decoupled implementation, and your decision is complete. If your answer to the second question was “No”, then you should build a coupled Drupal site, and your decision is complete.