SlideShare uma empresa Scribd logo
1 de 26
H I G H L Y M O D U L A R S I T E
S T R U C T U R E W I T H M A G N O L I A
CASE STUDY
@KAIVOSUKELTAJA
N I K O S A L M I N E N
Web Developer since 1999
JavaScript / Java / PHP / C++
Lead Front-end developer on the project
WHEN YOU WANT TO CREATE WORLD CLASS
DIGITAL SERVICES FOR YOUR CLIENTS.
C O N T A C T
tel. +358 40 544 0497
tommi.sipila@houston-inc.com
Tommi Sipilä
Account manager
tel. +358 40 544 3972
tomi.ruotimo@houston-inc.com
Tomi Ruotimo
CEO
LARGE INTERNATIONAL TELECOM COMPANY
T H E C L I E N T
Active in 10+ countries
B2B and B2C
Mobile and Fixed Broadband
Services
20M+ customers
10B+ EUR revenue
PORTAL PLATFORM RENEWAL
T H E P R O J E C T
Gradual migration to Magnolia 5.4
From custom legacy CMS and Magnolia 4.5
Learning project for both customer and vendors
P R O J E C T S C A L E
Multiple teams in three countries
Hundreds of pages
11 integrations to external systems
1 Dev, 1 Preprod, 4 Prod servers for main site
8 additional servers for other sites
3M+ monthly visitors across sites
CONCURRENCY
C H A L L E N G E S
How can we work together with
several teams in multiple
countries?
VARIETY
How can we support a different
visual layout for nearly every
page?
How can we move fast without
breaking too many things?
ROBUSTNESS
LIGHT MODULES!
/ppr-prototype
/magnolia-modules
/first-ui-module
/dialogs
/templates
/webresources
/second-ui-module
/dialogs
/templates
/webresources
/gulp
/node_modules
/src
/assets
/fonts
/icons
/images
/base
/config
/dialogs
/templates
/vendor
main.sass
/tests
/dialogs
/components
availability-search.yaml
big-five.yaml
blog-author.yaml
....
/pages
base.yaml
/templates
/areas
/components
/availability-search
/big-five
big-five.ftl
big-five.js
big-five.sass
big-five.yaml
/blog-author
....
/functions
/globalAvailability
/macros
/pages
CONCURRENCY
DEV TEAM
PERSONAL
CODE
REPOS
GITHUB
JENKINS
LIGHT MODULE
PERSONAL
CODE REPOS
PERSONAL
CODE REPOS
…
…
FANTASIA
1. Fantasia / Oma valinta 4:llä täytteellä / 58,36 %
2. Americano (ananas, aurajuusto, kinkku) / 3,30 %
3. Julia (ananas, aurajuusto, katkarapu, kinkku) / 2,90 %
4. Dillinger (jauheliha, kinkku, salami, sipuli) / 2,40 %
5. Bolognese (jauheliha) / 2,00 %
6. Opera special (kinkku, salami, tonnikala) / 2,00 %
7. Romeo (ananas, aurajuusto, katkarapu, salami) / 1,80 %
8. Barbeque (ananas, kana, pekoni, sipuli, barbequekastike) / 1,90 %
9. Empire Special (katkarapu, kinkku, salami, tuplajuusto, valkosipuli) / 1,90 %
10.Smetana Pizza (fetajuusto, jalapeno, kebabliha, valkosipuli, smetana) /1,50 %
HOW MANY DIFFERENT PAGE
TEMPLATES DO WE WANT?
V A R I E T Y
Nearly every page looks completely different
We currently have 65 components (and counting)
We currently have 9 page templates
…of which 2 are in active use
…of which one is the front page
HOW TO DEAL WITH THE HIGH AMOUNT OF
MOVING PARTS?
R O B U S T N E S S
65 components
Most of them have JavaScript functionality
Around 5 components used per page
Tens of JavaScript components unnecessarily initialized
JavaScript components need data from JCR
JavaScript components need to communicate with each
other
LIGHTWEIGHT JAVASCRIPT LIBRARY
FOR COMPONENT JS FUNCTIONALITY
P P R L I B R A R Y
Loads and runs component JS only when needed
using RequireJS
Allows pub/sub communication between
components
Simplifies passing data from .ftl to JavaScript
Allows reloading components on state changes
W H A T D O E S I T D O ?
INITIALIZE
DETECT COMPONENTS
LOAD DEPENDENCIES
BUILD COMPONENTS
FTL
JAVASCRIPT
FTL USING JSON
JSON MACRO
SET UP HANDLER
CALL HANDLER
GLOBAL HANDLER
RELOADABLE
COMPONENT
SOURCE CONTROL
B E N E F I T S F R O M U S I N G L I G H T M O D U L E S
Easier merging
Code reviews
Branches
Blame & Bisect
TESTING
Karma and Mocha
Granularity helps unit testing
Run tests and enforce coding
style standards on every save
Isolated logic in components
Load and run only what’s
needed
High modularity
DECOUPLING
Q&A
KIITOS!
Niko Salminen
@kaivosukeltaja
tel. +358 40 831 1293
niko.salminen@houston-inc.com

Mais conteúdo relacionado

Semelhante a Case study: Highly modular site structure with Magnolia

TenCube pitch deck 2010
TenCube pitch deck 2010TenCube pitch deck 2010
TenCube pitch deck 2010Tech in Asia
 
Twilio Signal 2016 Keynote
Twilio Signal 2016 Keynote Twilio Signal 2016 Keynote
Twilio Signal 2016 Keynote Twilio Inc
 
VUCA - Planning for the essentially unplannable in a disruptive world
VUCA - Planning for the essentially unplannable in a disruptive worldVUCA - Planning for the essentially unplannable in a disruptive world
VUCA - Planning for the essentially unplannable in a disruptive worldJoakim Lindbom
 
Of innovation and impatience - Future Decoded 2015
Of innovation and impatience - Future Decoded 2015Of innovation and impatience - Future Decoded 2015
Of innovation and impatience - Future Decoded 2015Christian Heilmann
 
Webrtc workshop from Alan Quayle
Webrtc workshop from Alan QuayleWebrtc workshop from Alan Quayle
Webrtc workshop from Alan QuayleAlan Quayle
 
TADSummit EMEA Americas Welcome and Programmable Communications Review
TADSummit EMEA Americas Welcome and Programmable Communications ReviewTADSummit EMEA Americas Welcome and Programmable Communications Review
TADSummit EMEA Americas Welcome and Programmable Communications ReviewAlan Quayle
 
Progressive Web Apps - Intro and State of Market in Australia
Progressive Web Apps - Intro and State of Market in AustraliaProgressive Web Apps - Intro and State of Market in Australia
Progressive Web Apps - Intro and State of Market in AustraliaErudite
 
Infinite bom august 5, 2011
Infinite bom august 5, 2011Infinite bom august 5, 2011
Infinite bom august 5, 2011lambdana82
 
By The Numbers: CPaaS, UCaaS, CCaaS Landscapes and Market Sizing
By The Numbers: CPaaS, UCaaS, CCaaS Landscapes and Market SizingBy The Numbers: CPaaS, UCaaS, CCaaS Landscapes and Market Sizing
By The Numbers: CPaaS, UCaaS, CCaaS Landscapes and Market SizingAlan Quayle
 
Simcon3 2020, Are We There Yet? Alan Quayle
Simcon3 2020, Are We There Yet? Alan QuayleSimcon3 2020, Are We There Yet? Alan Quayle
Simcon3 2020, Are We There Yet? Alan QuayleAlan Quayle
 
Selenium Automation Like You’ve Never Seen!
Selenium Automation Like You’ve Never Seen!Selenium Automation Like You’ve Never Seen!
Selenium Automation Like You’ve Never Seen!Perfecto by Perforce
 
SAP_Latest_Intro_presentation
SAP_Latest_Intro_presentationSAP_Latest_Intro_presentation
SAP_Latest_Intro_presentationBala Murugan
 
MeasureWorks - Prepare your mobile User Experience for fast conversion
MeasureWorks - Prepare your mobile User Experience for fast conversionMeasureWorks - Prepare your mobile User Experience for fast conversion
MeasureWorks - Prepare your mobile User Experience for fast conversionMeasureWorks
 
KoeElecTeaser-2p-EN-USD-Jun-2016
KoeElecTeaser-2p-EN-USD-Jun-2016KoeElecTeaser-2p-EN-USD-Jun-2016
KoeElecTeaser-2p-EN-USD-Jun-2016Bruno Koegler
 
Luca Cioletti The Past, The Present And The Future Of Mobile Apps Ecosystem
Luca Cioletti The Past, The Present And The Future Of Mobile Apps EcosystemLuca Cioletti The Past, The Present And The Future Of Mobile Apps Ecosystem
Luca Cioletti The Past, The Present And The Future Of Mobile Apps EcosystemGian-Luca Cioletti
 
Using New Technology to Create a Better Consumer Experience - Presentation by...
Using New Technology to Create a Better Consumer Experience - Presentation by...Using New Technology to Create a Better Consumer Experience - Presentation by...
Using New Technology to Create a Better Consumer Experience - Presentation by...Property Portal Watch
 
Give Mobile Users What They Want - Mobile Video Ads (Outstream Video on Smaato)
Give Mobile Users What They Want - Mobile Video Ads (Outstream Video on Smaato)Give Mobile Users What They Want - Mobile Video Ads (Outstream Video on Smaato)
Give Mobile Users What They Want - Mobile Video Ads (Outstream Video on Smaato)Eric Arline
 

Semelhante a Case study: Highly modular site structure with Magnolia (20)

TenCube pitch deck 2010
TenCube pitch deck 2010TenCube pitch deck 2010
TenCube pitch deck 2010
 
Twilio Signal 2016 Keynote
Twilio Signal 2016 Keynote Twilio Signal 2016 Keynote
Twilio Signal 2016 Keynote
 
VUCA - Planning for the essentially unplannable in a disruptive world
VUCA - Planning for the essentially unplannable in a disruptive worldVUCA - Planning for the essentially unplannable in a disruptive world
VUCA - Planning for the essentially unplannable in a disruptive world
 
Of innovation and impatience - Future Decoded 2015
Of innovation and impatience - Future Decoded 2015Of innovation and impatience - Future Decoded 2015
Of innovation and impatience - Future Decoded 2015
 
Webrtc workshop from Alan Quayle
Webrtc workshop from Alan QuayleWebrtc workshop from Alan Quayle
Webrtc workshop from Alan Quayle
 
TADSummit EMEA Americas Welcome and Programmable Communications Review
TADSummit EMEA Americas Welcome and Programmable Communications ReviewTADSummit EMEA Americas Welcome and Programmable Communications Review
TADSummit EMEA Americas Welcome and Programmable Communications Review
 
Progressive Web Apps - Intro and State of Market in Australia
Progressive Web Apps - Intro and State of Market in AustraliaProgressive Web Apps - Intro and State of Market in Australia
Progressive Web Apps - Intro and State of Market in Australia
 
Forum Nokia Developer Services
Forum Nokia Developer ServicesForum Nokia Developer Services
Forum Nokia Developer Services
 
Infinite bom august 5, 2011
Infinite bom august 5, 2011Infinite bom august 5, 2011
Infinite bom august 5, 2011
 
By The Numbers: CPaaS, UCaaS, CCaaS Landscapes and Market Sizing
By The Numbers: CPaaS, UCaaS, CCaaS Landscapes and Market SizingBy The Numbers: CPaaS, UCaaS, CCaaS Landscapes and Market Sizing
By The Numbers: CPaaS, UCaaS, CCaaS Landscapes and Market Sizing
 
Simcon3 2020, Are We There Yet? Alan Quayle
Simcon3 2020, Are We There Yet? Alan QuayleSimcon3 2020, Are We There Yet? Alan Quayle
Simcon3 2020, Are We There Yet? Alan Quayle
 
Selenium Automation Like You’ve Never Seen!
Selenium Automation Like You’ve Never Seen!Selenium Automation Like You’ve Never Seen!
Selenium Automation Like You’ve Never Seen!
 
Mobile CMS by Tekora (english)
Mobile CMS by Tekora (english)Mobile CMS by Tekora (english)
Mobile CMS by Tekora (english)
 
Start developing for TVs
Start developing for TVsStart developing for TVs
Start developing for TVs
 
SAP_Latest_Intro_presentation
SAP_Latest_Intro_presentationSAP_Latest_Intro_presentation
SAP_Latest_Intro_presentation
 
MeasureWorks - Prepare your mobile User Experience for fast conversion
MeasureWorks - Prepare your mobile User Experience for fast conversionMeasureWorks - Prepare your mobile User Experience for fast conversion
MeasureWorks - Prepare your mobile User Experience for fast conversion
 
KoeElecTeaser-2p-EN-USD-Jun-2016
KoeElecTeaser-2p-EN-USD-Jun-2016KoeElecTeaser-2p-EN-USD-Jun-2016
KoeElecTeaser-2p-EN-USD-Jun-2016
 
Luca Cioletti The Past, The Present And The Future Of Mobile Apps Ecosystem
Luca Cioletti The Past, The Present And The Future Of Mobile Apps EcosystemLuca Cioletti The Past, The Present And The Future Of Mobile Apps Ecosystem
Luca Cioletti The Past, The Present And The Future Of Mobile Apps Ecosystem
 
Using New Technology to Create a Better Consumer Experience - Presentation by...
Using New Technology to Create a Better Consumer Experience - Presentation by...Using New Technology to Create a Better Consumer Experience - Presentation by...
Using New Technology to Create a Better Consumer Experience - Presentation by...
 
Give Mobile Users What They Want - Mobile Video Ads (Outstream Video on Smaato)
Give Mobile Users What They Want - Mobile Video Ads (Outstream Video on Smaato)Give Mobile Users What They Want - Mobile Video Ads (Outstream Video on Smaato)
Give Mobile Users What They Want - Mobile Video Ads (Outstream Video on Smaato)
 

Último

Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 

Último (20)

Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 

Case study: Highly modular site structure with Magnolia

Notas do Editor

  1. Reader’s notes go here.
  2. I work for a company called Houston. We do all kinds of software development but this was our first Magnolia project. We work mainly for Finnish customers but if you need to contract a few good developers I’m sure Tomi and Tommi would love to hear from you.
  3. Our client gives our reference permissions only rarely, and unfortunately we didn’t get one so I’ll just call them “The Client” in this presentation. They are a big telecom company with over 20 million customers and a revenue bit north of 10 billion euros.
  4. The project was basically a migration project, but also a complete redesign. We took pages from the old custom CMS and a support section running on Magnolia 4.5. We redesigned them completely and built them on the bleeding edge 5.4 Magnolia. We had no prior experience on Magnolia but were really lucky to have a most understanding customer. “Let’s learn this together.”
  5. Here’s a rough outline of our frontend project’s folder structure.
  6. So, does this setup help with our first problem, concurrency? Here’s how our front end infrastructure is set up. Blah, blah, blah. Note the external teams in swimlanes. Set up for the pizza slide before change: “Let’s change the subject for a bit.”
  7. Who likes pizza? What is the best pizza?
  8. The best pizza is the one where you get to choose the toppings. We in Finland call that kind of pizza “Fantasy”. Americano (pineapple, blue cheese, ham) is way behind. There are over 20 pizzas in any restaurant but everybody orders Fantasia. Cause people love variety. *change*
  9. Same goes with designers. They don’t like templates. Ironically, that means we need tons of templates. …or do we? After building a few page templates and
  10. We basically have a header, footer and all Fantasia in between.
  11. The library is initialized on page load. It then detects all JavaScript enabled components on the page. It loads the JavaScript for those components and any dependencies they may have. Finally, it calls the build() -function on them.
  12. Let’s look at the code real quick. Here’s the FTL of a very simple component called “Big five”. Note the data-component attribute. That’s what the library will look for.
  13. Lines 1 - 4: RequireJS boilerplate - module name and dependencies. Note we have the module name in snake case here, that’s handled by the library. Lines 10-11: PPR boilerplate for extending the base component Line 16: Override the build function Lines 17 - 20: Delegate all clicks to the first link within the component (hack) Line 22: Return true if initialization was successful and we want to keep the component running
  14. This is the .ftl of a custom area We have a macro that passes all the component’s properties to its JavaScript through a data attribute
  15. If you’re curious, here’s the code for the component to JSON converter. I’ll pause for a second to let you take notes. It’s all on one line because line breaks will break data attributes.
  16. Each component has their own event queue, and there’s also a global queue that all components can post and listen to.
  17. E2E tests use selenium - that’s not light module specific