SlideShare a Scribd company logo
© 2002-2018 Jahia© 2002-2018 Jahia
Learn how to go
headless with Jahia
DX
Serge Huber, CTO &
Co-founder of Jahia
shuber@jahia.com
© 2002-2018
Jahia
© 2002-2018
Jahia
Introduction
20 years Web Dev
experience
Coder at heart
(since I’m 7)
Very interested in
User experiences
Co-founder & CTO
of Jahia
Apache Committer
(Jackrabbit, Unomi)
Co-chair OASIS
Context Server TC
© 2002-2018 Jahia© 2002-2018 Jahia
What is headless ?
● Jahia is a full-blown CMS that includes:
○ Content definitions
○ Content editing
○ Content API
○ HTML Page delivery (including caching)
● Headless CMS = CMS without the HTML page delivery.
© 2002-2018 Jahia© 2002-2018 Jahia
When do you need it ?
● When you don’t want to use a CMS’ default rendering system
● When you need to integrate a CMS’ content with another system
(CMS, delivery server)
● When you’re building a mobile or desktop app
© 2002-2018 Jahia© 2002-2018 Jahia
What can you do with it ?
● Single page applications
● Custom website with dynamic components
● Mobile applications (hybrid or native)
● Desktop apps (hybrid or native)
© 2002-2018 Jahia© 2002-2018 Jahia
GetAway App
● Example single-page
application built using:
○ ReactJS
○ NPM / NodeJS
○ Apollo GraphQL Client
● SPA Showcase on top of Jahia
DX
● Uses the new GraphQL API
● Doesn’t require DX to run
● Runs on any web server (even
static)
© 2002-2018 Jahia© 2002-2018 Jahia
GetAway App - Under the hood
Jahia DX Server
DX Security
Filter
GetAway DX
Module
GetAway ReactJS App
React Components
Apollo GraphQL
client
DX GraphQL API
JCR content
- Content definitions
- Set permissions for
GraphQL API
- GraphQL extensions
Google Places API
Wikipedia API
© 2002-2018 Jahia© 2002-2018 Jahia
Content Manager - Quick demo
● A headless backend UI !
● Create / manage content for headless
applications
● Built using React and DX GraphQL API !
● Integrates with Marketing Factory & site
settings
● Design is not finalized, please be nice !
SNEAK PREVIEW
© 2002-2018 Jahia© 2002-2018 Jahia
Content Manager - Under the
hood
Jahia DX Server
DX Security
Filter
DX GraphQL API
Jahia Content & Media Manager (in browser)
React Components
Apollo GraphQL
client
GWT
Components
GWT Backend
Redux Store
© 2002-2018 Jahia© 2002-2018 Jahia
Content Manager - Pluggable !
● Left menu is pluggable !
● DX modules can extend it
● Already used to integrate
Marketing Factory and (some)
site settings into the Content
Manager
● May be extended using pure
Javascript or Java !
© 2002-2018 Jahia© 2002-2018 Jahia
Why React ?
● Most used front-end development framework in the world !
● Based on reusable components
● Can integrate with many “state” libraries such as Redux or Apollo
GraphQL Client
● Highly compatible & fast
● Compose components to build more complex ones
© 2002-2018 Jahia© 2002-2018 Jahia
React Material
● React components
implementing Google’s
Material Design
● Easy to integrate
● Responsive components
● Includes layouts and form
components
● Supports theming
© 2002-2018 Jahia© 2002-2018 Jahia
GraphQL
● An modern alternative
to REST APIs
● Exposes object types
and fields (aka
relationships)
● Uses a defined (but
mutable) schema
● Get just the data you
need
© 2002-2018 Jahia© 2002-2018 Jahia
What is it ?
● A way to retrieve objects and related objects
connected through relationships (called
fields). E.g: get a person and its friends
● A schema that can be used to introspect
existing GraphQL APIs (as well as help self-
document)
● Complex schemas may be exposed through a
single URL endpoint
● An optimized way of retrieving data from
servers
● Can be used as a gateway to other APIs (REST,
GraphQL, …)
© 2002-2018 Jahia© 2002-2018 Jahia
What is it not ?
● It is NOT a table data query language with clauses like SQL
● An URL scheme (like REST)
● An “architecture style” (like REST)
● Payload is not undefined (JSON response only)
SELECT * FROM tableName
WHERE columnName = ‘value’;
© 2002-2018 Jahia© 2002-2018 Jahia
GraphQL vs REST
● Multiple REST queries
vs single GraphQL
query
● Only needed fields in
GraphQL response
● GraphQL Query
validation before
execution
● Types can evolve over
time
● REST can be multiple
endpoints
● GraphQL has type
schema
Schema source: https://medium.com/chute-engineering/graphql-in-the-age-of-rest-apis-b10f2bf09bba
© 2002-2018 Jahia© 2002-2018 Jahia
Apollo GraphQL Client
● Powerful GraphQL client library available on lots of platforms
(including native mobile !)
● Includes advanced features such as browser-side caching and batching
● Production ready
© 2002-2018 Jahia© 2002-2018 Jahia
Authorization
By default all GraphQL calls are “filtered”, even for
content that is available to guest user
Authorizations must be configured to be able to access
content through the GraphQL API
React
Components
Apollo GraphQL
client
Jahia DX Server
DX Security
Filter
DX GraphQL API
© 2002-2018 Jahia© 2002-2018 Jahia
GraphiQL
Javascript Tool to:
- Browse GraphQL schema and
documentation
- Test GraphQL queries and
mutations
Features:
- Auto-completion
- Prettify
- Auto-save of queries and
mutations in browser local
storage
© 2002-2018 Jahia© 2002-2018 Jahia
GraphiQL - Demo queries
QUERY 1 - GET ROOT NODE
{
jcr {
nodeByPath(path: "/") {
path
properties(language: "en") {
name
value
}
}
}
}
QUERY 2 - GET ROOT USER
query getRootUser($language: String) {
jcr {
nodeByPath(path: "/users/root") {
path
properties(language: $language) {
name
value
}
}
}
}
QUERY VARIABLES
{
"language": "en"
}
© 2002-2018 Jahia© 2002-2018 Jahia
GraphiQL - Demo mutations
MUTATION
mutation modifyRootUser($propName: String!, $propValue: String) {
jcr {
mutateNode(pathOrId: "/users/root") {
mutateProperty(name: $propName) {
setValue(value: $propValue)
}
}
}
}
QUERY VARIABLES
{
"propName": "j:organization",
"propValue": "Jahia Solutions"
}
© 2002-2018 Jahia© 2002-2018 Jahia
Extending DX GraphQL API
Any module can extend the DX GraphQL API with its own types and fields !
You can even add fields to existing types (such as JCR nodes) !
public class DXGraphQLMFProvider implements
DXGraphQLExtensionsProvider {
@Override
public Collection<Class<?>> getExtensions() {
return
Arrays.<Class<?>>asList(JCRNodeExtensions.class);
}
}
@GraphQLTypeExtension(GqlJcrNode.class)
public class JCRNodeExtensions {
private GqlJcrNode node;
public JCRNodeExtensions(GqlJcrNode node) {
this.node = node;
}
@GraphQLField
public PersonalizedResult getMarketingFactory(@GraphQLName("profileId") @GraphQLDescription("Unomi profile id") final
String profileId,
@GraphQLName("sessionId") @GraphQLDescription("Unomi session id") final
String sessionId, DataFetchingEnvironment environment) {
final Optional<HttpServletRequest> request = ((GraphQLContext) environment.getContext()).getRequest();
if (request.isPresent()) {
return new PersonalizedResult(node, new MyHttpServletRequestWrapper(request.get(), profileId, sessionId));
}
return null;
}
© 2002-2018 Jahia© 2002-2018 Jahia
Q & A
© 2002-2018 Jahia© 2002-2018 Jahia
Up next !
Join me for my live
React App coding
session after the
break !
© 2002-2018 Jahia

More Related Content

What's hot

DEVOXX UK 2018 - GraphQL as an alternative approach to REST
DEVOXX UK 2018 - GraphQL as an alternative approach to RESTDEVOXX UK 2018 - GraphQL as an alternative approach to REST
DEVOXX UK 2018 - GraphQL as an alternative approach to REST
luisw19
 
Hadoop User Group Ireland (HUG) Ireland - Eddie Baggot Presentation April 2016
Hadoop User Group Ireland (HUG) Ireland - Eddie Baggot Presentation April 2016Hadoop User Group Ireland (HUG) Ireland - Eddie Baggot Presentation April 2016
Hadoop User Group Ireland (HUG) Ireland - Eddie Baggot Presentation April 2016
John Mulhall
 
Richfaces Proto Type
Richfaces Proto TypeRichfaces Proto Type
Richfaces Proto Type
ravireddy76
 
Oracle developer classes in mumbai
Oracle developer classes in mumbaiOracle developer classes in mumbai
Oracle developer classes in mumbai
Vibrant Technologies & Computers
 
Doc store
Doc storeDoc store
Doc store
Mysql User Camp
 
Icefaces Proto Type
Icefaces Proto TypeIcefaces Proto Type
Icefaces Proto Type
ravireddy76
 
Shift Remote: WEB - GraphQL and React – Quick Start - Dubravko Bogovic (Infobip)
Shift Remote: WEB - GraphQL and React – Quick Start - Dubravko Bogovic (Infobip)Shift Remote: WEB - GraphQL and React – Quick Start - Dubravko Bogovic (Infobip)
Shift Remote: WEB - GraphQL and React – Quick Start - Dubravko Bogovic (Infobip)
Shift Conference
 
GraphQL Advanced
GraphQL AdvancedGraphQL Advanced
GraphQL Advanced
LeanIX GmbH
 

What's hot (10)

DEVOXX UK 2018 - GraphQL as an alternative approach to REST
DEVOXX UK 2018 - GraphQL as an alternative approach to RESTDEVOXX UK 2018 - GraphQL as an alternative approach to REST
DEVOXX UK 2018 - GraphQL as an alternative approach to REST
 
HTML 5
HTML 5HTML 5
HTML 5
 
04 oxygen
04 oxygen04 oxygen
04 oxygen
 
Hadoop User Group Ireland (HUG) Ireland - Eddie Baggot Presentation April 2016
Hadoop User Group Ireland (HUG) Ireland - Eddie Baggot Presentation April 2016Hadoop User Group Ireland (HUG) Ireland - Eddie Baggot Presentation April 2016
Hadoop User Group Ireland (HUG) Ireland - Eddie Baggot Presentation April 2016
 
Richfaces Proto Type
Richfaces Proto TypeRichfaces Proto Type
Richfaces Proto Type
 
Oracle developer classes in mumbai
Oracle developer classes in mumbaiOracle developer classes in mumbai
Oracle developer classes in mumbai
 
Doc store
Doc storeDoc store
Doc store
 
Icefaces Proto Type
Icefaces Proto TypeIcefaces Proto Type
Icefaces Proto Type
 
Shift Remote: WEB - GraphQL and React – Quick Start - Dubravko Bogovic (Infobip)
Shift Remote: WEB - GraphQL and React – Quick Start - Dubravko Bogovic (Infobip)Shift Remote: WEB - GraphQL and React – Quick Start - Dubravko Bogovic (Infobip)
Shift Remote: WEB - GraphQL and React – Quick Start - Dubravko Bogovic (Infobip)
 
GraphQL Advanced
GraphQL AdvancedGraphQL Advanced
GraphQL Advanced
 

Similar to Learn how to go headless with Jahia DX by Serge Huber

GraphQL @ Manc.JS (March 2018)
GraphQL @ Manc.JS (March 2018)GraphQL @ Manc.JS (March 2018)
GraphQL @ Manc.JS (March 2018)
Chris Grice
 
GraphQL API Crafts presentation
GraphQL API Crafts presentationGraphQL API Crafts presentation
GraphQL API Crafts presentation
Sudheer J
 
GraphQL across the stack: How everything fits together
GraphQL across the stack: How everything fits togetherGraphQL across the stack: How everything fits together
GraphQL across the stack: How everything fits together
Sashko Stubailo
 
Iteria lowcode 2022-01-10
Iteria lowcode 2022-01-10Iteria lowcode 2022-01-10
Iteria lowcode 2022-01-10
Jozef Slezak
 
JAMstack
JAMstackJAMstack
JAMstack
Tomasz Bak
 
DITA Glass
DITA GlassDITA Glass
DITA Glass
georgebina
 
Getting Started with Spring for GraphQL
Getting Started with Spring for GraphQLGetting Started with Spring for GraphQL
Getting Started with Spring for GraphQL
VMware Tanzu
 
Graphql usage
Graphql usageGraphql usage
Graphql usage
Valentin Buryakov
 
GraphQL in an Age of REST
GraphQL in an Age of RESTGraphQL in an Age of REST
GraphQL in an Age of REST
Yos Riady
 
GraphQL Bangkok Meetup 6.0
GraphQL Bangkok Meetup 6.0GraphQL Bangkok Meetup 6.0
GraphQL Bangkok Meetup 6.0
Tobias Meixner
 
Tutorial: Building a GraphQL API in PHP
Tutorial: Building a GraphQL API in PHPTutorial: Building a GraphQL API in PHP
Tutorial: Building a GraphQL API in PHP
Andrew Rota
 
GraphQL + relay
GraphQL + relayGraphQL + relay
GraphQL + relay
Cédric GILLET
 
Oracle APEX Introduction (release 18.1)
Oracle APEX Introduction (release 18.1)Oracle APEX Introduction (release 18.1)
Oracle APEX Introduction (release 18.1)
Michael Hichwa
 
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...
Jahia Solutions Group
 
Your API on Steroids
Your API on Steroids Your API on Steroids
Your API on Steroids
QAware GmbH
 
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
Olivier DASINI
 
Next.js with drupal, the good parts
Next.js with drupal, the good partsNext.js with drupal, the good parts
Next.js with drupal, the good parts
Taller Negócio Digitais
 
APEX – jak vytvořit jednoduše aplikaci
APEX – jak vytvořit jednoduše aplikaciAPEX – jak vytvořit jednoduše aplikaci
APEX – jak vytvořit jednoduše aplikaci
MarketingArrowECS_CZ
 
Marco Liberati - Graph analytics
Marco Liberati - Graph analyticsMarco Liberati - Graph analytics
Marco Liberati - Graph analytics
Codemotion
 
GraphQL ♥︎ GraphDB
GraphQL ♥︎ GraphDBGraphQL ♥︎ GraphDB
GraphQL ♥︎ GraphDB
GraphRM
 

Similar to Learn how to go headless with Jahia DX by Serge Huber (20)

GraphQL @ Manc.JS (March 2018)
GraphQL @ Manc.JS (March 2018)GraphQL @ Manc.JS (March 2018)
GraphQL @ Manc.JS (March 2018)
 
GraphQL API Crafts presentation
GraphQL API Crafts presentationGraphQL API Crafts presentation
GraphQL API Crafts presentation
 
GraphQL across the stack: How everything fits together
GraphQL across the stack: How everything fits togetherGraphQL across the stack: How everything fits together
GraphQL across the stack: How everything fits together
 
Iteria lowcode 2022-01-10
Iteria lowcode 2022-01-10Iteria lowcode 2022-01-10
Iteria lowcode 2022-01-10
 
JAMstack
JAMstackJAMstack
JAMstack
 
DITA Glass
DITA GlassDITA Glass
DITA Glass
 
Getting Started with Spring for GraphQL
Getting Started with Spring for GraphQLGetting Started with Spring for GraphQL
Getting Started with Spring for GraphQL
 
Graphql usage
Graphql usageGraphql usage
Graphql usage
 
GraphQL in an Age of REST
GraphQL in an Age of RESTGraphQL in an Age of REST
GraphQL in an Age of REST
 
GraphQL Bangkok Meetup 6.0
GraphQL Bangkok Meetup 6.0GraphQL Bangkok Meetup 6.0
GraphQL Bangkok Meetup 6.0
 
Tutorial: Building a GraphQL API in PHP
Tutorial: Building a GraphQL API in PHPTutorial: Building a GraphQL API in PHP
Tutorial: Building a GraphQL API in PHP
 
GraphQL + relay
GraphQL + relayGraphQL + relay
GraphQL + relay
 
Oracle APEX Introduction (release 18.1)
Oracle APEX Introduction (release 18.1)Oracle APEX Introduction (release 18.1)
Oracle APEX Introduction (release 18.1)
 
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...
 
Your API on Steroids
Your API on Steroids Your API on Steroids
Your API on Steroids
 
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
 
Next.js with drupal, the good parts
Next.js with drupal, the good partsNext.js with drupal, the good parts
Next.js with drupal, the good parts
 
APEX – jak vytvořit jednoduše aplikaci
APEX – jak vytvořit jednoduše aplikaciAPEX – jak vytvořit jednoduše aplikaci
APEX – jak vytvořit jednoduše aplikaci
 
Marco Liberati - Graph analytics
Marco Liberati - Graph analyticsMarco Liberati - Graph analytics
Marco Liberati - Graph analytics
 
GraphQL ♥︎ GraphDB
GraphQL ♥︎ GraphDBGraphQL ♥︎ GraphDB
GraphQL ♥︎ GraphDB
 

More from Jahia Solutions Group

The Road ahead: What we see as the future of digital. By Elie Auvray
The Road ahead: What we see as the future of digital. By Elie AuvrayThe Road ahead: What we see as the future of digital. By Elie Auvray
The Road ahead: What we see as the future of digital. By Elie Auvray
Jahia Solutions Group
 
Monitoring and Data-Driven Decision Making with Daniel Maher
Monitoring and Data-Driven Decision Making with Daniel MaherMonitoring and Data-Driven Decision Making with Daniel Maher
Monitoring and Data-Driven Decision Making with Daniel Maher
Jahia Solutions Group
 
The ultimate search of the perfect customer experience By Brian Solis
The ultimate search of the perfect customer experience By Brian SolisThe ultimate search of the perfect customer experience By Brian Solis
The ultimate search of the perfect customer experience By Brian Solis
Jahia Solutions Group
 
Data for Dummies by Dan Katz, CDO at Safran
Data for Dummies by Dan Katz, CDO at SafranData for Dummies by Dan Katz, CDO at Safran
Data for Dummies by Dan Katz, CDO at Safran
Jahia Solutions Group
 
Content and commerce: The perfect combo. By Catherine Barba
Content and commerce: The perfect combo. By Catherine BarbaContent and commerce: The perfect combo. By Catherine Barba
Content and commerce: The perfect combo. By Catherine Barba
Jahia Solutions Group
 
The power of great customer experience in today’s world. Olivier Mourrieras &...
The power of great customer experience in today’s world. Olivier Mourrieras &...The power of great customer experience in today’s world. Olivier Mourrieras &...
The power of great customer experience in today’s world. Olivier Mourrieras &...
Jahia Solutions Group
 
Making Digital simpler. Occam’s Razor, Horses, Zebras, and Evolution
Making Digital simpler. Occam’s Razor, Horses, Zebras, and EvolutionMaking Digital simpler. Occam’s Razor, Horses, Zebras, and Evolution
Making Digital simpler. Occam’s Razor, Horses, Zebras, and Evolution
Jahia Solutions Group
 
Elasticsearch powered EDP by Cedric Mailleux
Elasticsearch powered EDP by Cedric MailleuxElasticsearch powered EDP by Cedric Mailleux
Elasticsearch powered EDP by Cedric Mailleux
Jahia Solutions Group
 
Jahia Cloud Offerings by Julian Maurel & Abass Safoutou
Jahia Cloud Offerings by Julian Maurel & Abass SafoutouJahia Cloud Offerings by Julian Maurel & Abass Safoutou
Jahia Cloud Offerings by Julian Maurel & Abass Safoutou
Jahia Solutions Group
 
Making the life of patients easier in the healthcare sector thanks to digital...
Making the life of patients easier in the healthcare sector thanks to digital...Making the life of patients easier in the healthcare sector thanks to digital...
Making the life of patients easier in the healthcare sector thanks to digital...
Jahia Solutions Group
 
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...
Jahia Solutions Group
 
Strategy for content with local and global sites by Romain Gauthier
Strategy for content with local and global sites by Romain GauthierStrategy for content with local and global sites by Romain Gauthier
Strategy for content with local and global sites by Romain Gauthier
Jahia Solutions Group
 
Apache Unomi presentation and update. By Serge Huber, CTO Jahia
Apache Unomi presentation and update. By Serge Huber, CTO JahiaApache Unomi presentation and update. By Serge Huber, CTO Jahia
Apache Unomi presentation and update. By Serge Huber, CTO Jahia
Jahia Solutions Group
 
Personalisation and Headless in a business context by Lars Petersen
Personalisation and Headless in a business context by Lars PetersenPersonalisation and Headless in a business context by Lars Petersen
Personalisation and Headless in a business context by Lars Petersen
Jahia Solutions Group
 
Digital Revolution from Silo to Platform by Gilles Babinet
Digital Revolution from Silo to Platform by Gilles BabinetDigital Revolution from Silo to Platform by Gilles Babinet
Digital Revolution from Silo to Platform by Gilles Babinet
Jahia Solutions Group
 
A customer journey with AI by Xavier Vaccari, Softeam Group
A customer journey with AI by Xavier Vaccari, Softeam GroupA customer journey with AI by Xavier Vaccari, Softeam Group
A customer journey with AI by Xavier Vaccari, Softeam Group
Jahia Solutions Group
 
Using CX to unlock Total Experience by David Balko, Tribal
Using CX to unlock Total Experience by David Balko, TribalUsing CX to unlock Total Experience by David Balko, Tribal
Using CX to unlock Total Experience by David Balko, Tribal
Jahia Solutions Group
 
AI-monitor & Marketing Factory, customer case study by Valerie Voci
AI-monitor & Marketing Factory, customer case study by Valerie VociAI-monitor & Marketing Factory, customer case study by Valerie Voci
AI-monitor & Marketing Factory, customer case study by Valerie Voci
Jahia Solutions Group
 
Take back the control of your customer data with Apache Unomi - Developers Me...
Take back the control of your customer data with Apache Unomi - Developers Me...Take back the control of your customer data with Apache Unomi - Developers Me...
Take back the control of your customer data with Apache Unomi - Developers Me...
Jahia Solutions Group
 
Mobile First et AMP - Developers Meetup - May 2017
Mobile First et AMP - Developers Meetup - May 2017Mobile First et AMP - Developers Meetup - May 2017
Mobile First et AMP - Developers Meetup - May 2017
Jahia Solutions Group
 

More from Jahia Solutions Group (20)

The Road ahead: What we see as the future of digital. By Elie Auvray
The Road ahead: What we see as the future of digital. By Elie AuvrayThe Road ahead: What we see as the future of digital. By Elie Auvray
The Road ahead: What we see as the future of digital. By Elie Auvray
 
Monitoring and Data-Driven Decision Making with Daniel Maher
Monitoring and Data-Driven Decision Making with Daniel MaherMonitoring and Data-Driven Decision Making with Daniel Maher
Monitoring and Data-Driven Decision Making with Daniel Maher
 
The ultimate search of the perfect customer experience By Brian Solis
The ultimate search of the perfect customer experience By Brian SolisThe ultimate search of the perfect customer experience By Brian Solis
The ultimate search of the perfect customer experience By Brian Solis
 
Data for Dummies by Dan Katz, CDO at Safran
Data for Dummies by Dan Katz, CDO at SafranData for Dummies by Dan Katz, CDO at Safran
Data for Dummies by Dan Katz, CDO at Safran
 
Content and commerce: The perfect combo. By Catherine Barba
Content and commerce: The perfect combo. By Catherine BarbaContent and commerce: The perfect combo. By Catherine Barba
Content and commerce: The perfect combo. By Catherine Barba
 
The power of great customer experience in today’s world. Olivier Mourrieras &...
The power of great customer experience in today’s world. Olivier Mourrieras &...The power of great customer experience in today’s world. Olivier Mourrieras &...
The power of great customer experience in today’s world. Olivier Mourrieras &...
 
Making Digital simpler. Occam’s Razor, Horses, Zebras, and Evolution
Making Digital simpler. Occam’s Razor, Horses, Zebras, and EvolutionMaking Digital simpler. Occam’s Razor, Horses, Zebras, and Evolution
Making Digital simpler. Occam’s Razor, Horses, Zebras, and Evolution
 
Elasticsearch powered EDP by Cedric Mailleux
Elasticsearch powered EDP by Cedric MailleuxElasticsearch powered EDP by Cedric Mailleux
Elasticsearch powered EDP by Cedric Mailleux
 
Jahia Cloud Offerings by Julian Maurel & Abass Safoutou
Jahia Cloud Offerings by Julian Maurel & Abass SafoutouJahia Cloud Offerings by Julian Maurel & Abass Safoutou
Jahia Cloud Offerings by Julian Maurel & Abass Safoutou
 
Making the life of patients easier in the healthcare sector thanks to digital...
Making the life of patients easier in the healthcare sector thanks to digital...Making the life of patients easier in the healthcare sector thanks to digital...
Making the life of patients easier in the healthcare sector thanks to digital...
 
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...
 
Strategy for content with local and global sites by Romain Gauthier
Strategy for content with local and global sites by Romain GauthierStrategy for content with local and global sites by Romain Gauthier
Strategy for content with local and global sites by Romain Gauthier
 
Apache Unomi presentation and update. By Serge Huber, CTO Jahia
Apache Unomi presentation and update. By Serge Huber, CTO JahiaApache Unomi presentation and update. By Serge Huber, CTO Jahia
Apache Unomi presentation and update. By Serge Huber, CTO Jahia
 
Personalisation and Headless in a business context by Lars Petersen
Personalisation and Headless in a business context by Lars PetersenPersonalisation and Headless in a business context by Lars Petersen
Personalisation and Headless in a business context by Lars Petersen
 
Digital Revolution from Silo to Platform by Gilles Babinet
Digital Revolution from Silo to Platform by Gilles BabinetDigital Revolution from Silo to Platform by Gilles Babinet
Digital Revolution from Silo to Platform by Gilles Babinet
 
A customer journey with AI by Xavier Vaccari, Softeam Group
A customer journey with AI by Xavier Vaccari, Softeam GroupA customer journey with AI by Xavier Vaccari, Softeam Group
A customer journey with AI by Xavier Vaccari, Softeam Group
 
Using CX to unlock Total Experience by David Balko, Tribal
Using CX to unlock Total Experience by David Balko, TribalUsing CX to unlock Total Experience by David Balko, Tribal
Using CX to unlock Total Experience by David Balko, Tribal
 
AI-monitor & Marketing Factory, customer case study by Valerie Voci
AI-monitor & Marketing Factory, customer case study by Valerie VociAI-monitor & Marketing Factory, customer case study by Valerie Voci
AI-monitor & Marketing Factory, customer case study by Valerie Voci
 
Take back the control of your customer data with Apache Unomi - Developers Me...
Take back the control of your customer data with Apache Unomi - Developers Me...Take back the control of your customer data with Apache Unomi - Developers Me...
Take back the control of your customer data with Apache Unomi - Developers Me...
 
Mobile First et AMP - Developers Meetup - May 2017
Mobile First et AMP - Developers Meetup - May 2017Mobile First et AMP - Developers Meetup - May 2017
Mobile First et AMP - Developers Meetup - May 2017
 

Recently uploaded

Set off and carry forward of losses and assessment of individuals.pptx
Set off and carry forward of losses and assessment of individuals.pptxSet off and carry forward of losses and assessment of individuals.pptx
Set off and carry forward of losses and assessment of individuals.pptx
HARSHITHV26
 
Premium MEAN Stack Development Solutions for Modern Businesses
Premium MEAN Stack Development Solutions for Modern BusinessesPremium MEAN Stack Development Solutions for Modern Businesses
Premium MEAN Stack Development Solutions for Modern Businesses
SynapseIndia
 
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.docBài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc
daothibichhang1
 
Top mailing list providers in the USA.pptx
Top mailing list providers in the USA.pptxTop mailing list providers in the USA.pptx
Top mailing list providers in the USA.pptx
JeremyPeirce1
 
Organizational Change Leadership Agile Tour Geneve 2024
Organizational Change Leadership Agile Tour Geneve 2024Organizational Change Leadership Agile Tour Geneve 2024
Organizational Change Leadership Agile Tour Geneve 2024
Kirill Klimov
 
Building Your Employer Brand with Social Media
Building Your Employer Brand with Social MediaBuilding Your Employer Brand with Social Media
Building Your Employer Brand with Social Media
LuanWise
 
LA HUG - Video Testimonials with Chynna Morgan - June 2024
LA HUG - Video Testimonials with Chynna Morgan - June 2024LA HUG - Video Testimonials with Chynna Morgan - June 2024
LA HUG - Video Testimonials with Chynna Morgan - June 2024
Lital Barkan
 
Mastering B2B Payments Webinar from BlueSnap
Mastering B2B Payments Webinar from BlueSnapMastering B2B Payments Webinar from BlueSnap
Mastering B2B Payments Webinar from BlueSnap
Norma Mushkat Gaffin
 
Hamster Kombat' Telegram Game Surpasses 100 Million Players—Token Release Sch...
Hamster Kombat' Telegram Game Surpasses 100 Million Players—Token Release Sch...Hamster Kombat' Telegram Game Surpasses 100 Million Players—Token Release Sch...
Hamster Kombat' Telegram Game Surpasses 100 Million Players—Token Release Sch...
SOFTTECHHUB
 
Digital Transformation and IT Strategy Toolkit and Templates
Digital Transformation and IT Strategy Toolkit and TemplatesDigital Transformation and IT Strategy Toolkit and Templates
Digital Transformation and IT Strategy Toolkit and Templates
Aurelien Domont, MBA
 
The Influence of Marketing Strategy and Market Competition on Business Perfor...
The Influence of Marketing Strategy and Market Competition on Business Perfor...The Influence of Marketing Strategy and Market Competition on Business Perfor...
The Influence of Marketing Strategy and Market Competition on Business Perfor...
Adam Smith
 
Helen Lubchak: Тренди в управлінні проєктами та miltech (UA)
Helen Lubchak: Тренди в управлінні проєктами та miltech (UA)Helen Lubchak: Тренди в управлінні проєктами та miltech (UA)
Helen Lubchak: Тренди в управлінні проєктами та miltech (UA)
Lviv Startup Club
 
amptalk_RecruitingDeck_english_2024.06.05
amptalk_RecruitingDeck_english_2024.06.05amptalk_RecruitingDeck_english_2024.06.05
amptalk_RecruitingDeck_english_2024.06.05
marketing317746
 
Project File Report BBA 6th semester.pdf
Project File Report BBA 6th semester.pdfProject File Report BBA 6th semester.pdf
Project File Report BBA 6th semester.pdf
RajPriye
 
Company Valuation webinar series - Tuesday, 4 June 2024
Company Valuation webinar series - Tuesday, 4 June 2024Company Valuation webinar series - Tuesday, 4 June 2024
Company Valuation webinar series - Tuesday, 4 June 2024
FelixPerez547899
 
Observation Lab PowerPoint Assignment for TEM 431
Observation Lab PowerPoint Assignment for TEM 431Observation Lab PowerPoint Assignment for TEM 431
Observation Lab PowerPoint Assignment for TEM 431
ecamare2
 
Evgen Osmak: Methods of key project parameters estimation: from the shaman-in...
Evgen Osmak: Methods of key project parameters estimation: from the shaman-in...Evgen Osmak: Methods of key project parameters estimation: from the shaman-in...
Evgen Osmak: Methods of key project parameters estimation: from the shaman-in...
Lviv Startup Club
 
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc.pdf
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc.pdfBài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc.pdf
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc.pdf
daothibichhang1
 
Buy Verified PayPal Account | Buy Google 5 Star Reviews
Buy Verified PayPal Account | Buy Google 5 Star ReviewsBuy Verified PayPal Account | Buy Google 5 Star Reviews
Buy Verified PayPal Account | Buy Google 5 Star Reviews
usawebmarket
 
ModelingMarketingStrategiesMKS.CollumbiaUniversitypdf
ModelingMarketingStrategiesMKS.CollumbiaUniversitypdfModelingMarketingStrategiesMKS.CollumbiaUniversitypdf
ModelingMarketingStrategiesMKS.CollumbiaUniversitypdf
fisherameliaisabella
 

Recently uploaded (20)

Set off and carry forward of losses and assessment of individuals.pptx
Set off and carry forward of losses and assessment of individuals.pptxSet off and carry forward of losses and assessment of individuals.pptx
Set off and carry forward of losses and assessment of individuals.pptx
 
Premium MEAN Stack Development Solutions for Modern Businesses
Premium MEAN Stack Development Solutions for Modern BusinessesPremium MEAN Stack Development Solutions for Modern Businesses
Premium MEAN Stack Development Solutions for Modern Businesses
 
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.docBài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc
 
Top mailing list providers in the USA.pptx
Top mailing list providers in the USA.pptxTop mailing list providers in the USA.pptx
Top mailing list providers in the USA.pptx
 
Organizational Change Leadership Agile Tour Geneve 2024
Organizational Change Leadership Agile Tour Geneve 2024Organizational Change Leadership Agile Tour Geneve 2024
Organizational Change Leadership Agile Tour Geneve 2024
 
Building Your Employer Brand with Social Media
Building Your Employer Brand with Social MediaBuilding Your Employer Brand with Social Media
Building Your Employer Brand with Social Media
 
LA HUG - Video Testimonials with Chynna Morgan - June 2024
LA HUG - Video Testimonials with Chynna Morgan - June 2024LA HUG - Video Testimonials with Chynna Morgan - June 2024
LA HUG - Video Testimonials with Chynna Morgan - June 2024
 
Mastering B2B Payments Webinar from BlueSnap
Mastering B2B Payments Webinar from BlueSnapMastering B2B Payments Webinar from BlueSnap
Mastering B2B Payments Webinar from BlueSnap
 
Hamster Kombat' Telegram Game Surpasses 100 Million Players—Token Release Sch...
Hamster Kombat' Telegram Game Surpasses 100 Million Players—Token Release Sch...Hamster Kombat' Telegram Game Surpasses 100 Million Players—Token Release Sch...
Hamster Kombat' Telegram Game Surpasses 100 Million Players—Token Release Sch...
 
Digital Transformation and IT Strategy Toolkit and Templates
Digital Transformation and IT Strategy Toolkit and TemplatesDigital Transformation and IT Strategy Toolkit and Templates
Digital Transformation and IT Strategy Toolkit and Templates
 
The Influence of Marketing Strategy and Market Competition on Business Perfor...
The Influence of Marketing Strategy and Market Competition on Business Perfor...The Influence of Marketing Strategy and Market Competition on Business Perfor...
The Influence of Marketing Strategy and Market Competition on Business Perfor...
 
Helen Lubchak: Тренди в управлінні проєктами та miltech (UA)
Helen Lubchak: Тренди в управлінні проєктами та miltech (UA)Helen Lubchak: Тренди в управлінні проєктами та miltech (UA)
Helen Lubchak: Тренди в управлінні проєктами та miltech (UA)
 
amptalk_RecruitingDeck_english_2024.06.05
amptalk_RecruitingDeck_english_2024.06.05amptalk_RecruitingDeck_english_2024.06.05
amptalk_RecruitingDeck_english_2024.06.05
 
Project File Report BBA 6th semester.pdf
Project File Report BBA 6th semester.pdfProject File Report BBA 6th semester.pdf
Project File Report BBA 6th semester.pdf
 
Company Valuation webinar series - Tuesday, 4 June 2024
Company Valuation webinar series - Tuesday, 4 June 2024Company Valuation webinar series - Tuesday, 4 June 2024
Company Valuation webinar series - Tuesday, 4 June 2024
 
Observation Lab PowerPoint Assignment for TEM 431
Observation Lab PowerPoint Assignment for TEM 431Observation Lab PowerPoint Assignment for TEM 431
Observation Lab PowerPoint Assignment for TEM 431
 
Evgen Osmak: Methods of key project parameters estimation: from the shaman-in...
Evgen Osmak: Methods of key project parameters estimation: from the shaman-in...Evgen Osmak: Methods of key project parameters estimation: from the shaman-in...
Evgen Osmak: Methods of key project parameters estimation: from the shaman-in...
 
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc.pdf
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc.pdfBài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc.pdf
Bài tập - Tiếng anh 11 Global Success UNIT 1 - Bản HS.doc.pdf
 
Buy Verified PayPal Account | Buy Google 5 Star Reviews
Buy Verified PayPal Account | Buy Google 5 Star ReviewsBuy Verified PayPal Account | Buy Google 5 Star Reviews
Buy Verified PayPal Account | Buy Google 5 Star Reviews
 
ModelingMarketingStrategiesMKS.CollumbiaUniversitypdf
ModelingMarketingStrategiesMKS.CollumbiaUniversitypdfModelingMarketingStrategiesMKS.CollumbiaUniversitypdf
ModelingMarketingStrategiesMKS.CollumbiaUniversitypdf
 

Learn how to go headless with Jahia DX by Serge Huber

  • 1. © 2002-2018 Jahia© 2002-2018 Jahia Learn how to go headless with Jahia DX Serge Huber, CTO & Co-founder of Jahia shuber@jahia.com
  • 2. © 2002-2018 Jahia © 2002-2018 Jahia Introduction 20 years Web Dev experience Coder at heart (since I’m 7) Very interested in User experiences Co-founder & CTO of Jahia Apache Committer (Jackrabbit, Unomi) Co-chair OASIS Context Server TC
  • 3. © 2002-2018 Jahia© 2002-2018 Jahia What is headless ? ● Jahia is a full-blown CMS that includes: ○ Content definitions ○ Content editing ○ Content API ○ HTML Page delivery (including caching) ● Headless CMS = CMS without the HTML page delivery.
  • 4. © 2002-2018 Jahia© 2002-2018 Jahia When do you need it ? ● When you don’t want to use a CMS’ default rendering system ● When you need to integrate a CMS’ content with another system (CMS, delivery server) ● When you’re building a mobile or desktop app
  • 5. © 2002-2018 Jahia© 2002-2018 Jahia What can you do with it ? ● Single page applications ● Custom website with dynamic components ● Mobile applications (hybrid or native) ● Desktop apps (hybrid or native)
  • 6. © 2002-2018 Jahia© 2002-2018 Jahia GetAway App ● Example single-page application built using: ○ ReactJS ○ NPM / NodeJS ○ Apollo GraphQL Client ● SPA Showcase on top of Jahia DX ● Uses the new GraphQL API ● Doesn’t require DX to run ● Runs on any web server (even static)
  • 7. © 2002-2018 Jahia© 2002-2018 Jahia GetAway App - Under the hood Jahia DX Server DX Security Filter GetAway DX Module GetAway ReactJS App React Components Apollo GraphQL client DX GraphQL API JCR content - Content definitions - Set permissions for GraphQL API - GraphQL extensions Google Places API Wikipedia API
  • 8. © 2002-2018 Jahia© 2002-2018 Jahia Content Manager - Quick demo ● A headless backend UI ! ● Create / manage content for headless applications ● Built using React and DX GraphQL API ! ● Integrates with Marketing Factory & site settings ● Design is not finalized, please be nice ! SNEAK PREVIEW
  • 9. © 2002-2018 Jahia© 2002-2018 Jahia Content Manager - Under the hood Jahia DX Server DX Security Filter DX GraphQL API Jahia Content & Media Manager (in browser) React Components Apollo GraphQL client GWT Components GWT Backend Redux Store
  • 10. © 2002-2018 Jahia© 2002-2018 Jahia Content Manager - Pluggable ! ● Left menu is pluggable ! ● DX modules can extend it ● Already used to integrate Marketing Factory and (some) site settings into the Content Manager ● May be extended using pure Javascript or Java !
  • 11. © 2002-2018 Jahia© 2002-2018 Jahia Why React ? ● Most used front-end development framework in the world ! ● Based on reusable components ● Can integrate with many “state” libraries such as Redux or Apollo GraphQL Client ● Highly compatible & fast ● Compose components to build more complex ones
  • 12. © 2002-2018 Jahia© 2002-2018 Jahia React Material ● React components implementing Google’s Material Design ● Easy to integrate ● Responsive components ● Includes layouts and form components ● Supports theming
  • 13. © 2002-2018 Jahia© 2002-2018 Jahia GraphQL ● An modern alternative to REST APIs ● Exposes object types and fields (aka relationships) ● Uses a defined (but mutable) schema ● Get just the data you need
  • 14. © 2002-2018 Jahia© 2002-2018 Jahia What is it ? ● A way to retrieve objects and related objects connected through relationships (called fields). E.g: get a person and its friends ● A schema that can be used to introspect existing GraphQL APIs (as well as help self- document) ● Complex schemas may be exposed through a single URL endpoint ● An optimized way of retrieving data from servers ● Can be used as a gateway to other APIs (REST, GraphQL, …)
  • 15. © 2002-2018 Jahia© 2002-2018 Jahia What is it not ? ● It is NOT a table data query language with clauses like SQL ● An URL scheme (like REST) ● An “architecture style” (like REST) ● Payload is not undefined (JSON response only) SELECT * FROM tableName WHERE columnName = ‘value’;
  • 16. © 2002-2018 Jahia© 2002-2018 Jahia GraphQL vs REST ● Multiple REST queries vs single GraphQL query ● Only needed fields in GraphQL response ● GraphQL Query validation before execution ● Types can evolve over time ● REST can be multiple endpoints ● GraphQL has type schema Schema source: https://medium.com/chute-engineering/graphql-in-the-age-of-rest-apis-b10f2bf09bba
  • 17. © 2002-2018 Jahia© 2002-2018 Jahia Apollo GraphQL Client ● Powerful GraphQL client library available on lots of platforms (including native mobile !) ● Includes advanced features such as browser-side caching and batching ● Production ready
  • 18. © 2002-2018 Jahia© 2002-2018 Jahia Authorization By default all GraphQL calls are “filtered”, even for content that is available to guest user Authorizations must be configured to be able to access content through the GraphQL API React Components Apollo GraphQL client Jahia DX Server DX Security Filter DX GraphQL API
  • 19. © 2002-2018 Jahia© 2002-2018 Jahia GraphiQL Javascript Tool to: - Browse GraphQL schema and documentation - Test GraphQL queries and mutations Features: - Auto-completion - Prettify - Auto-save of queries and mutations in browser local storage
  • 20. © 2002-2018 Jahia© 2002-2018 Jahia GraphiQL - Demo queries QUERY 1 - GET ROOT NODE { jcr { nodeByPath(path: "/") { path properties(language: "en") { name value } } } } QUERY 2 - GET ROOT USER query getRootUser($language: String) { jcr { nodeByPath(path: "/users/root") { path properties(language: $language) { name value } } } } QUERY VARIABLES { "language": "en" }
  • 21. © 2002-2018 Jahia© 2002-2018 Jahia GraphiQL - Demo mutations MUTATION mutation modifyRootUser($propName: String!, $propValue: String) { jcr { mutateNode(pathOrId: "/users/root") { mutateProperty(name: $propName) { setValue(value: $propValue) } } } } QUERY VARIABLES { "propName": "j:organization", "propValue": "Jahia Solutions" }
  • 22. © 2002-2018 Jahia© 2002-2018 Jahia Extending DX GraphQL API Any module can extend the DX GraphQL API with its own types and fields ! You can even add fields to existing types (such as JCR nodes) ! public class DXGraphQLMFProvider implements DXGraphQLExtensionsProvider { @Override public Collection<Class<?>> getExtensions() { return Arrays.<Class<?>>asList(JCRNodeExtensions.class); } } @GraphQLTypeExtension(GqlJcrNode.class) public class JCRNodeExtensions { private GqlJcrNode node; public JCRNodeExtensions(GqlJcrNode node) { this.node = node; } @GraphQLField public PersonalizedResult getMarketingFactory(@GraphQLName("profileId") @GraphQLDescription("Unomi profile id") final String profileId, @GraphQLName("sessionId") @GraphQLDescription("Unomi session id") final String sessionId, DataFetchingEnvironment environment) { final Optional<HttpServletRequest> request = ((GraphQLContext) environment.getContext()).getRequest(); if (request.isPresent()) { return new PersonalizedResult(node, new MyHttpServletRequestWrapper(request.get(), profileId, sessionId)); } return null; }
  • 23. © 2002-2018 Jahia© 2002-2018 Jahia Q & A
  • 24. © 2002-2018 Jahia© 2002-2018 Jahia Up next ! Join me for my live React App coding session after the break !