Headless Drupal

We want Drupal to be the CMS of choice for client-side MVC frameworks.

We want an API for renderable structure and context-aware template-driven JSON representations of pages.

The intention of this working group is to discuss how Drupal core should change for the ability for many different presentation layers to interact with Drupal, especially client-side frameworks, not just Drupal's own theme system.

We are working on drafting a manifesto on GitHub.

For some background, see Notes and Discussion from DrupalCon Austin.


Our todo list to get to robust RESTful client interaction support

  1. Document the current REST API
    • Maybe use something like Apiary
  2. Verify that we have PATCH support and that we can make individual field updates
  3. Implement OPTIONS support
  4. Create a benchmark implementation on a popular framework like Angular or Backbone
  5. Support retrieval of specific content entity views over REST
  6. Support retrieval of specific content entity edit forms and fields with widgets over REST
  7. Support linking and mapping of associated templates when retrieving of specific content entity views over REST
  8. Develop a cache-busting file name fingerprinting strategy so that templates and other resources retrieved from entity links can be versioned

weeger's picture

Wjs for Drupal

Hi Guys,

Wjs is a little lazy loader in PHP and Javascript which have adapters modules for Drupal 6 and 7 (currently waiting approval).

Read more
chankongching's picture

2015 Drupal中国营提议:Auto-Scaling Drupal as Web BaaS

drupal generates a considerable load on the web server and can quickly become resource constrained there, having multiple web servers also increases the the redundancy of your deployment. it is always a system engineering perspective to take care the platform of drupal, i have seen a site with minimum memory to be ran is 4G, at the same time it is still slow. Handling the platform well that delivering your web service could enhance end-user experience, and at the same time saving costs.

Read more
-enzo-'s picture

Yo Marionette-Drupal

I want to share with you the project Yeoman Generator for Marionette and Drupal

Marionette Drupal is an opinionated yeoman generator for a Drupal7/8 backend with RESTful, using Backbone MarionetteJS, and Jasmine Behavior-Driven Test.

Current version: 0.1.7 and is in continue development.

Read more
-enzo-'s picture

Headless Drupal without PUT is possible?

Hi folks

I am writing a Headless Drupal application for Drupal 8 and I found this discussion Putting off PUT https://groups.drupal.org/node/284948

I'm trying to create a patch to enable PUT for entities in order to enable to create a client side node add/update from Backbone https://www.drupal.org/node/2399813

Someone here has more knowledge about this situation or have a contingence plan?

Kind regards,

amitaibu's picture

Yo Hedley!

Hedley is an opinionated yeoman generator for a Drupal7 backend with RESTful, and Angular app, and behat tests.

It's a great starting point for any fully decoupled app, as it's encapsulating a lot of the best practices we have developed in Gizra.

Dan_Rogers's picture

Headless app demo

Howdy all, going to be giving a talk on headless drupal at drupal camp Baltimore in a few days, as well as going over a ionic/angular/cordova demo app I built. If anyone has time on their hands and wants to check it out before hand, please let me know if anything jumps out as being wildly inaccurate!

The (somewhat) final app, which also houses all my speaking points can be viewed here: http://162.209.90.221/headless

Github repo here: https://github.com/rogerseyebyte/EBSheadlessDrupal

Cheers,

Dan

-enzo-'s picture

Entity Rest Extra module for Drupal 8

Hi folks

I publish a custom module for Drupal 8 https://github.com/enzolutions/entity_rest_extra/

This module enable two new Rest resources to enable to get admin information about Drupal 8 to be used by external implementation using Headless Drupal.

This idea was suggested as a patch to Drupal 8 Core more information at https://www.drupal.org/node/2355291#comment-9241689

All resources require authentication with an user with permission "Administer content types"

  1. Get Entity bundles

End Point: http://example.com/bundles/{entity}

Read more
victorkane's picture

Headless roundup and DrupalCon Latin America 2015 proposed session

Hi everyone.

First of all, I've made a DrupalCon Amsterdam 2014 headless roundup in which I list all the major events, report on two of the most important and then raise some questions and concerns. Comments are very welcome. I've been using this architecture on various projects over the last few months and the subject interests me greatly.

Read more
-enzo-'s picture

How to enable CORS requests against Drupal 8

Hey folks

I want to contribute an article about one option we have to enable CORS against Drupal 8 websites in current status http://enzolutions.com/articles/2014/09/08/how-to-enable-cors-requests-a...

The implementation I did is a solution meanwhile the ticket "Enable CORS for GET requests" https://www.drupal.org/node/1869548 is resolved

Feedbacks are more than welcome.

eatings's picture

'Decoupled Front End and the Future' from Drupalcon Amsterdam

For those wanting to watch or read slides from the talk I gave at SFDUG in August, the recorded session from Amsterdam is now available.

Alternatively, you can just grab the slides.

Apologies for how quickly it all moves; I didn't quite realize how fast I was talking at the time.

rteijeiro's picture

CRUD using Backbone.js and Drupal 8

Here is the second part of my findings related to decoupling Drupal 8 frontend using Backbone.js

http://blog.loadimpact.com/2014/09/30/first-steps-with-crud-using-backbo...

I'm still trying to figure out how to create and update content. I'm almost there :)

Feedback is welcome.

mrfelton's picture

Automated API documentation and exploration using Apiary or Apigee

Hi,

We are looking at using Drupal 8 as a central data hub and data management portal / crm-type system, and then exposing that data for consumption and modification via RESTful web services. As the API would form a very core part of our system its essential that it is robust, comprehensive, and well documented. I'm interested to know wether any work has been done on integrating tools like Apiary or Apigee with Drupal 8 based web services.

Read more
dwanta's picture

Bunny Talk - daemon drupal

I've been working on something related, I called it the Bunny Talk Protocol, named after the module I started writing a few years back.

The protocol allows access to drupal, either retrieving pages or specific elements, using the same token security and access permissions in drupal. For instance you can retrieve a JSON page representation and display it, or call a specific function passing parms, either retreiving JSON or updating data, just as if it were local.

Read more
RobKoberg's picture

AngularJS best practices

Check out: http://toddmotto.com/opinionated-angular-js-styleguide-for-teams/
and
http://toddmotto.com/minimal-angular-module-syntax-approach-using-an-iife/

In the examples posted, I have been seeing angular bad practices. We should be following the best practices in blog posts so as to not lead people down the wrong path.

gettysburger's picture

Western Maryland Drupal Users Group Meetup on September 11, 2014

Start: 
2014-09-11 19:00 - 21:00 UTC
Organizers: 

With "Headless" Drupal all the rage, we are very excited to have as our speaker this month, David Dan, who will demonstrate his latest successes with "Real-Time Apps with Drupal 8 and Angular." David is doing some new and exciting things with Drupal that we are sure you have not seen anywhere else.

Read more
RobKoberg's picture

drupal_goto() is evil: how to handle?

I am dealing with the password reset form and the one time login link and getting a CORS error since drupal is trying to redirect on the server. I can usually handle form redirects but drupal_goto is a problem. How do you handle it in a headless environment with an HTML client on a different server?

I wonder if this group should maintain a current drupal with an empty drupal_goto function?

eatings's picture

Headless Drupal Doubleheader at SF DUG

Start: 
2014-08-18 18:00 - 20:00 America/Los_Angeles
Organizers: 

Josh Koenig and I are talking Headless Drupal tonight at SFDUG, at the Pantheon office (717 California, San Francisco). I'll be talking about the sitebuilding and usage implications of Headless approaches, and Josh will be demoing his work-in-progress D8+Angular experiments. We'll do our best to record this.

Admission is free, food and drinks will be provided.

RobKoberg's picture

Angular and Drupal: Proxying angular for development

A few weeks ago, I read a blog post about using angular in drupal. It mentioned to rebuild the app each time you make a change. That would drive me mad.

If you are using angular on the same server as drupal (that is, in a subdirectory of the docroot), you can proxy your grunt served angular app.

To proxy the angular app do a normal $ grunt serve to have the app running. In a apache vhost, you can place:

DocumentRoot "/path/to/drupal/docroot"
ServerName local.dev

ProxyRequests Off

Order deny,allow
Allow from all

Read more
joshk's picture

Proposed Goal: Many Implementations of a Common Demo

My biggest concern is that this group ends up bikeshedding and/or attempting to boil the ocean and solve a million theoretical problems. My biggest hope is that we deliver a killer app for front-end developers looking to build their implementation. If we can do that, it will force us to do a lot of other smart things, and enable millions of others to put their innovation "on top" of ours.

To that end, I'd like to propose a goal that's pragmatic, provides value, and will help keep the discussion and work focused.

Read more
c4rl's picture

What's in a name: "Headless" vs "Decoupled"

Naming things! Our favorite pasttime.

Wondering based on some recent conversation on what people think of the word "Headless" vs "Decoupled."

Any objections should the latter replace the former?

Subscribe with RSS Syndicate content