Stripe con 2021 UI stack

Stripe con 2021 UI stack
Silverstripe CMS UI Stack
Stripecon 2021
About me
Principal developer
Silverstripe Ltd
Core Committer on
Silverstripe CMS project
Overview ● A brief history of the Silverstripe
CMS 4 UI
● Embracing the weirdness
Disclaimer
This is NOT a WebPack, React, Redux,
GraphQL crash course.
A brief history of the
Silverstripe CMS 4 UI
Let’s go back to March 2018 ...
Stripe con 2021 UI stack
Stripe con 2021 UI stack
Stripe con 2021 UI stack
Retrospective
●
Stripe con 2021 UI stack
Silverstripe CMS UI was mismatch of legacy technologies
● JQuery
● Entwine
● SS templates
● undocumented REST API
Speaking of kinks
● Webpack + Babel
● React
● Redux
● Redux/Forms
● GraphQL
● Bootstrap/Reactstrap
● SASS/CSS
The shiny new thing
Fast forward 3½ years ...
● Legacy stack is still around
● Our modern stack is dated
Meet the new stack, same as the old stack
Small wins
● Elemental Area
● CMS Page history
● New features trump refactoring old code
● Repeated some of the same mistake
● More urgent priorities came along
What went wrong?
● Shock
● Denial
● Anger
● Bargaining
● Depression
● Testing
● Acceptance
7 stages of UI stack development grief
● Complete CMS UI refactor is not going to happen
● The Silverstripe CMS UI stack is weird
Coming to terms with reality
Embracing the weirdness
● Shipping a front end client inside a modular PHP application
● Customising JS is hard
Where the weirdness comes from
The UI stack
Modern Stack Legacy Stack
Dependency Yarn Manually managed + yarn
Build system Webpack+babel
Rendering React JQuery/Entwine
SS template
State management Redux Nothing
UI Library Bootstrap/Reactstrap Bootstrap + JQuery UI
Data communication Apollo+fetch JQuery
Data layer GraphQL+REST REST
CI Jest / Enzyme Nothing
silverstripe/admin
● LeftAndMain bits
● Core UI components
● Common helpers
● Shared libraries
Every other module
● Feature specific
components
● Feature specific
libraries
● Relies on admin
Sharing is
caring
The magical tale of
@silverstripe/webpack-config
and the expose-loader
Sharing is
caring
Registering resources with the
Injector
Sharing is
caring
Accessing resources with
registered with the Injector
Demo time
●  composer install --prefer-source 
● Remove packages first
● Do for silverstripe/admin as well
●  yarn install 
● On admin as well
●  yarn pattern-library 
● On admin only
●  yarn dev 
●  yarn watch 
●  yarn test 
●  yarn build 
Cheat sheet
What did we learn today?
● Don’t read the doc!
● Read Adrian’s blog post on how to create React Form Field
○ https://blog.jar.nz/posts/new-field-in-silverstripe
● Fork our module template
○ https://github.com/silverstripe/silverstripe-module
● Require maxime-rainville/recipe-react
○ https://github.com/maxime-rainville/recipe-react
What’s next?
Thank you!
1 of 31

Recommended

Silverstripe CMS 4.9.0 release and beyound by
Silverstripe CMS 4.9.0 release and beyoundSilverstripe CMS 4.9.0 release and beyound
Silverstripe CMS 4.9.0 release and beyoundMaximeRainville1
100 views23 slides
React vs angular (mobile first battle) by
React vs angular (mobile first battle)React vs angular (mobile first battle)
React vs angular (mobile first battle)Michael Haberman
591 views41 slides
Isolated React Js components by
Isolated React Js componentsIsolated React Js components
Isolated React Js componentsAbe García
367 views12 slides
Angular 2 vs React by
Angular 2 vs ReactAngular 2 vs React
Angular 2 vs ReactIran Reyes Fleitas
2.6K views29 slides
Angular 2 vs React. What to chose in 2017? by
Angular 2 vs React. What to chose in 2017?Angular 2 vs React. What to chose in 2017?
Angular 2 vs React. What to chose in 2017?TechMagic
2.9K views17 slides
ReactJS or Angular by
ReactJS or AngularReactJS or Angular
ReactJS or Angularboyney123
5.7K views16 slides

More Related Content

What's hot

React in production (react global summit 2021) by
React in production (react global summit 2021)React in production (react global summit 2021)
React in production (react global summit 2021)Souvik Basu
375 views27 slides
Server Side React for WordPress by Muhammad Muhsin @ The JavaScript for WordP... by
Server Side React for WordPress by Muhammad Muhsin @ The JavaScript for WordP...Server Side React for WordPress by Muhammad Muhsin @ The JavaScript for WordP...
Server Side React for WordPress by Muhammad Muhsin @ The JavaScript for WordP...rtCamp
3.2K views30 slides
Lagom framework by
Lagom frameworkLagom framework
Lagom framework명주 김
2.8K views25 slides
JHipster, modern web application development made easy by
JHipster, modern web application development made easyJHipster, modern web application development made easy
JHipster, modern web application development made easyRaphaël Brugier
1.3K views20 slides
React native - React(ive) Way To Build Native Mobile Apps by
React native - React(ive) Way To Build Native Mobile AppsReact native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile AppsJimit Shah
754 views15 slides
Tabtale story: Building a publishing and monitoring mobile games architecture... by
Tabtale story: Building a publishing and monitoring mobile games architecture...Tabtale story: Building a publishing and monitoring mobile games architecture...
Tabtale story: Building a publishing and monitoring mobile games architecture...Tikal Knowledge
1.5K views26 slides

What's hot(20)

React in production (react global summit 2021) by Souvik Basu
React in production (react global summit 2021)React in production (react global summit 2021)
React in production (react global summit 2021)
Souvik Basu375 views
Server Side React for WordPress by Muhammad Muhsin @ The JavaScript for WordP... by rtCamp
Server Side React for WordPress by Muhammad Muhsin @ The JavaScript for WordP...Server Side React for WordPress by Muhammad Muhsin @ The JavaScript for WordP...
Server Side React for WordPress by Muhammad Muhsin @ The JavaScript for WordP...
rtCamp 3.2K views
Lagom framework by 명주 김
Lagom frameworkLagom framework
Lagom framework
명주 김2.8K views
JHipster, modern web application development made easy by Raphaël Brugier
JHipster, modern web application development made easyJHipster, modern web application development made easy
JHipster, modern web application development made easy
Raphaël Brugier1.3K views
React native - React(ive) Way To Build Native Mobile Apps by Jimit Shah
React native - React(ive) Way To Build Native Mobile AppsReact native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile Apps
Jimit Shah754 views
Tabtale story: Building a publishing and monitoring mobile games architecture... by Tikal Knowledge
Tabtale story: Building a publishing and monitoring mobile games architecture...Tabtale story: Building a publishing and monitoring mobile games architecture...
Tabtale story: Building a publishing and monitoring mobile games architecture...
Tikal Knowledge1.5K views
Introduction to React Native by dvcrn
Introduction to React NativeIntroduction to React Native
Introduction to React Native
dvcrn514 views
Node & Express as Workflow Tools by FITC
Node & Express as Workflow ToolsNode & Express as Workflow Tools
Node & Express as Workflow Tools
FITC1.7K views
React vs angular by 500Tech
React vs angularReact vs angular
React vs angular
500Tech1K views
React.js - and how it changed our thinking about UI by Marcin Grzywaczewski
React.js - and how it changed our thinking about UIReact.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UI
VueJS Best Practices by Fatih Acet
VueJS Best PracticesVueJS Best Practices
VueJS Best Practices
Fatih Acet3.5K views
Reactjs workshop by Ahmed rebai
Reactjs workshop Reactjs workshop
Reactjs workshop
Ahmed rebai738 views
001. Introduction about React by Binh Quan Duc
001. Introduction about React001. Introduction about React
001. Introduction about React
Binh Quan Duc283 views
React server side rendering performance by Nick Dreckshage
React server side rendering performanceReact server side rendering performance
React server side rendering performance
Nick Dreckshage9.2K views
Angular CLI : HelloWorld by nikspatel007
Angular CLI : HelloWorldAngular CLI : HelloWorld
Angular CLI : HelloWorld
nikspatel007251 views
Reactjs workshop (1) by Ahmed rebai
Reactjs workshop (1)Reactjs workshop (1)
Reactjs workshop (1)
Ahmed rebai150 views
WordPress as a Headless CMS - Bronson Quick by WordCamp Sydney
WordPress as a Headless CMS - Bronson QuickWordPress as a Headless CMS - Bronson Quick
WordPress as a Headless CMS - Bronson Quick
WordCamp Sydney5.2K views

Similar to Stripe con 2021 UI stack

Angular (v2 and up) - Morning to understand - Linagora by
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraLINAGORA
480 views59 slides
React js Online Training by
React js Online TrainingReact js Online Training
React js Online TrainingLearntek1
169 views21 slides
React-Js-Online-Training-9028522.ppsx by
React-Js-Online-Training-9028522.ppsxReact-Js-Online-Training-9028522.ppsx
React-Js-Online-Training-9028522.ppsxKulbir4
23 views22 slides
Dust.js by
Dust.jsDust.js
Dust.jsYevgeniy Brikman
48.1K views82 slides
Nuxeo and JavaScript by
Nuxeo and JavaScriptNuxeo and JavaScript
Nuxeo and JavaScriptNuxeo
2.1K views14 slides
Challenges of angular in production (Tasos Bekos) - GreeceJS #17 by
Challenges of angular in production (Tasos Bekos) - GreeceJS #17Challenges of angular in production (Tasos Bekos) - GreeceJS #17
Challenges of angular in production (Tasos Bekos) - GreeceJS #17GreeceJS
784 views27 slides

Similar to Stripe con 2021 UI stack(20)

Angular (v2 and up) - Morning to understand - Linagora by LINAGORA
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
LINAGORA480 views
React js Online Training by Learntek1
React js Online TrainingReact js Online Training
React js Online Training
Learntek1169 views
React-Js-Online-Training-9028522.ppsx by Kulbir4
React-Js-Online-Training-9028522.ppsxReact-Js-Online-Training-9028522.ppsx
React-Js-Online-Training-9028522.ppsx
Kulbir423 views
Nuxeo and JavaScript by Nuxeo
Nuxeo and JavaScriptNuxeo and JavaScript
Nuxeo and JavaScript
Nuxeo2.1K views
Challenges of angular in production (Tasos Bekos) - GreeceJS #17 by GreeceJS
Challenges of angular in production (Tasos Bekos) - GreeceJS #17Challenges of angular in production (Tasos Bekos) - GreeceJS #17
Challenges of angular in production (Tasos Bekos) - GreeceJS #17
GreeceJS784 views
Making sense of the front-end, for PHP developers by Lewiz
Making sense of the front-end, for PHP developersMaking sense of the front-end, for PHP developers
Making sense of the front-end, for PHP developers
Lewiz 85 views
Web Development with Delphi and React - ITDevCon 2016 by Marco Breveglieri
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016
Marco Breveglieri5.5K views
Road to sbt 1.0: Paved with server (2015 Amsterdam) by Eugene Yokota
Road to sbt 1.0: Paved with server (2015 Amsterdam)Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)
Eugene Yokota2.8K views
Single Page Applications - Desert Code Camp 2012 by Adam Mokan
Single Page Applications - Desert Code Camp 2012Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012
Adam Mokan1.8K views
Instant developer onboarding with self contained repositories by Yshay Yaacobi
Instant developer onboarding with self contained repositoriesInstant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositories
Yshay Yaacobi158 views
Should you use HTML5 to build your product? The pros & cons of using current ... by boxuno
Should you use HTML5 to build your product? The pros & cons of using current ...Should you use HTML5 to build your product? The pros & cons of using current ...
Should you use HTML5 to build your product? The pros & cons of using current ...
boxuno1.3K views
Design Summit - Technology Vision - Oleg Barenboim and Jason Frey by ManageIQ
Design Summit - Technology Vision - Oleg Barenboim and Jason FreyDesign Summit - Technology Vision - Oleg Barenboim and Jason Frey
Design Summit - Technology Vision - Oleg Barenboim and Jason Frey
ManageIQ1.3K views
Road to sbt 1.0 paved with server by Eugene Yokota
Road to sbt 1.0   paved with serverRoad to sbt 1.0   paved with server
Road to sbt 1.0 paved with server
Eugene Yokota4.9K views
JS digest. October 2017 by ElifTech
JS digest. October 2017 JS digest. October 2017
JS digest. October 2017
ElifTech501 views
Counterclockwise past present future by lolopetit
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present future
lolopetit1.5K views

Recently uploaded

Generative AI: Shifting the AI Landscape by
Generative AI: Shifting the AI LandscapeGenerative AI: Shifting the AI Landscape
Generative AI: Shifting the AI LandscapeDeakin University
67 views55 slides
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti... by
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...ShapeBlue
141 views29 slides
"Package management in monorepos", Zoltan Kochan by
"Package management in monorepos", Zoltan Kochan"Package management in monorepos", Zoltan Kochan
"Package management in monorepos", Zoltan KochanFwdays
34 views18 slides
Transcript: Redefining the book supply chain: A glimpse into the future - Tec... by
Transcript: Redefining the book supply chain: A glimpse into the future - Tec...Transcript: Redefining the book supply chain: A glimpse into the future - Tec...
Transcript: Redefining the book supply chain: A glimpse into the future - Tec...BookNet Canada
41 views16 slides
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ... by
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...Jasper Oosterveld
35 views49 slides
Ransomware is Knocking your Door_Final.pdf by
Ransomware is Knocking your Door_Final.pdfRansomware is Knocking your Door_Final.pdf
Ransomware is Knocking your Door_Final.pdfSecurity Bootcamp
98 views46 slides

Recently uploaded(20)

DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti... by ShapeBlue
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
ShapeBlue141 views
"Package management in monorepos", Zoltan Kochan by Fwdays
"Package management in monorepos", Zoltan Kochan"Package management in monorepos", Zoltan Kochan
"Package management in monorepos", Zoltan Kochan
Fwdays34 views
Transcript: Redefining the book supply chain: A glimpse into the future - Tec... by BookNet Canada
Transcript: Redefining the book supply chain: A glimpse into the future - Tec...Transcript: Redefining the book supply chain: A glimpse into the future - Tec...
Transcript: Redefining the book supply chain: A glimpse into the future - Tec...
BookNet Canada41 views
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ... by Jasper Oosterveld
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
"Surviving highload with Node.js", Andrii Shumada by Fwdays
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada
Fwdays58 views
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De... by Moses Kemibaro
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...
Moses Kemibaro35 views
"Running students' code in isolation. The hard way", Yurii Holiuk by Fwdays
"Running students' code in isolation. The hard way", Yurii Holiuk "Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk
Fwdays36 views
NTGapps NTG LowCode Platform by Mustafa Kuğu
NTGapps NTG LowCode Platform NTGapps NTG LowCode Platform
NTGapps NTG LowCode Platform
Mustafa Kuğu437 views
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading... by The Digital Insurer
Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading...
"Node.js Development in 2024: trends and tools", Nikita Galkin by Fwdays
"Node.js Development in 2024: trends and tools", Nikita Galkin "Node.js Development in 2024: trends and tools", Nikita Galkin
"Node.js Development in 2024: trends and tools", Nikita Galkin
Fwdays33 views
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... by ShapeBlue
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
ShapeBlue199 views
Why and How CloudStack at weSystems - Stephan Bienek - weSystems by ShapeBlue
Why and How CloudStack at weSystems - Stephan Bienek - weSystemsWhy and How CloudStack at weSystems - Stephan Bienek - weSystems
Why and How CloudStack at weSystems - Stephan Bienek - weSystems
ShapeBlue247 views
The Role of Patterns in the Era of Large Language Models by Yunyao Li
The Role of Patterns in the Era of Large Language ModelsThe Role of Patterns in the Era of Large Language Models
The Role of Patterns in the Era of Large Language Models
Yunyao Li91 views
Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ... by ShapeBlue
Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ...Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ...
Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ...
ShapeBlue129 views
Initiating and Advancing Your Strategic GIS Governance Strategy by Safe Software
Initiating and Advancing Your Strategic GIS Governance StrategyInitiating and Advancing Your Strategic GIS Governance Strategy
Initiating and Advancing Your Strategic GIS Governance Strategy
Safe Software184 views
Redefining the book supply chain: A glimpse into the future - Tech Forum 2023 by BookNet Canada
Redefining the book supply chain: A glimpse into the future - Tech Forum 2023Redefining the book supply chain: A glimpse into the future - Tech Forum 2023
Redefining the book supply chain: A glimpse into the future - Tech Forum 2023
BookNet Canada44 views
Digital Personal Data Protection (DPDP) Practical Approach For CISOs by Priyanka Aash
Digital Personal Data Protection (DPDP) Practical Approach For CISOsDigital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOs
Priyanka Aash162 views
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha... by ShapeBlue
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
ShapeBlue183 views

Stripe con 2021 UI stack

  • 2. Silverstripe CMS UI Stack Stripecon 2021
  • 3. About me Principal developer Silverstripe Ltd Core Committer on Silverstripe CMS project
  • 4. Overview ● A brief history of the Silverstripe CMS 4 UI ● Embracing the weirdness Disclaimer This is NOT a WebPack, React, Redux, GraphQL crash course.
  • 5. A brief history of the Silverstripe CMS 4 UI
  • 6. Let’s go back to March 2018 ...
  • 12. Silverstripe CMS UI was mismatch of legacy technologies ● JQuery ● Entwine ● SS templates ● undocumented REST API Speaking of kinks
  • 13. ● Webpack + Babel ● React ● Redux ● Redux/Forms ● GraphQL ● Bootstrap/Reactstrap ● SASS/CSS The shiny new thing
  • 14. Fast forward 3½ years ...
  • 15. ● Legacy stack is still around ● Our modern stack is dated Meet the new stack, same as the old stack
  • 16. Small wins ● Elemental Area ● CMS Page history
  • 17. ● New features trump refactoring old code ● Repeated some of the same mistake ● More urgent priorities came along What went wrong?
  • 18. ● Shock ● Denial ● Anger ● Bargaining ● Depression ● Testing ● Acceptance 7 stages of UI stack development grief
  • 19. ● Complete CMS UI refactor is not going to happen ● The Silverstripe CMS UI stack is weird Coming to terms with reality
  • 21. ● Shipping a front end client inside a modular PHP application ● Customising JS is hard Where the weirdness comes from
  • 22. The UI stack Modern Stack Legacy Stack Dependency Yarn Manually managed + yarn Build system Webpack+babel Rendering React JQuery/Entwine SS template State management Redux Nothing UI Library Bootstrap/Reactstrap Bootstrap + JQuery UI Data communication Apollo+fetch JQuery Data layer GraphQL+REST REST CI Jest / Enzyme Nothing
  • 23. silverstripe/admin ● LeftAndMain bits ● Core UI components ● Common helpers ● Shared libraries Every other module ● Feature specific components ● Feature specific libraries ● Relies on admin
  • 24. Sharing is caring The magical tale of @silverstripe/webpack-config and the expose-loader
  • 26. Sharing is caring Accessing resources with registered with the Injector
  • 28. ●  composer install --prefer-source  ● Remove packages first ● Do for silverstripe/admin as well ●  yarn install  ● On admin as well ●  yarn pattern-library  ● On admin only ●  yarn dev  ●  yarn watch  ●  yarn test  ●  yarn build  Cheat sheet
  • 29. What did we learn today?
  • 30. ● Don’t read the doc! ● Read Adrian’s blog post on how to create React Form Field ○ https://blog.jar.nz/posts/new-field-in-silverstripe ● Fork our module template ○ https://github.com/silverstripe/silverstripe-module ● Require maxime-rainville/recipe-react ○ https://github.com/maxime-rainville/recipe-react What’s next?