SlideShare a Scribd company logo
1 of 40
Download to read offline
Hi, I’m Oleksii
→ 12+ years in development
→ 7+ years in Wix.com
→ 2+ years in DevEx team
My Ultimate Goal is to fire as
much developers as possible
Agenda → DevEx
→ Boilerplate
→ ???
→ PROFIT
Me, myself and DevEx
What is DevEx? I see it as set of tools and practices that allows
developers to work smarter and not harder.
Developers could focus more on business logic instead of
constant battle with their tools and libraries.
You stop thinking about how to build stuff and start thinking
about what to build.
So DevEx team creates this kind of tools.
DevEx in a nutshell
+ =
Develope
r
DevEx
Who is our enemy?
Boilerplate
What is boilerplate code?
https://en.wikipedia.org/wiki/Boilerplate_code
In computer programming, boilerplate code, or simply
boilerplate, are sections of code that are repeated in
multiple places with little to no variation. © Wikipedia
Three-headed boilerplate monster
→ Build time (grunt, gulp, webpack, rollup, vite, w’e)
→ Runtime (libs/features)
→ Project structure
Boilerplate related to build tools
We live in world where FED should know about build
tools. You almost obligated to have understanding (at
least high level) of steps that modern project goes
through at build step.
There is huge amount of different libraries and tools.
And you need to configure them. But you rather just
copy paste config from your old project.
What we can do with it?
Share the shared
Extract config to separated package and use it as
dependency in package.json.
More shared stuff to The God of Shared Stuff ©
Is it good solution?
Pros
→ Easy to use
→ Easy to extend
Cons
→ Easy to extend and forget to contribute
Boilerplate related to runtime tools
We all use libraries for common tasks. And we have
some preferences. But in scope of company we don’t
need to have more then one library for one common
feature.
And probably you don’t need different configurations
for these libraries too. It still we be a copy paste
anyways.
How we can fight it?
Presentation Name | June 2022
Feature abstraction
We hiding libraries under feature abstraction (i18next
-> translations, sentry/w’e -> error monitoring). We
publish it as dedicated packages and use them.
There is tricky question here - should we keep all
features as separated packages or should we
combine them into one essentials package
More abstractions to The God of Abstractions ©
Is it good solution?
Pros of feature per package
→ Easy to use
→ Focus only on business stuff
Cons of feature per package
→
Feature-like abstraction creates Domain-
Specific Language
Pros of single package
→ Same as for per package
→ Easy to provide new features
Cons of single package
→ You can’t decide what to have in bundle
How we did it in Wix?
Some of functionality have feature abstractions,
some have just common configuration. It’s all leaves
in package fe-essentials.
For each our platform we have dedicated package
that combine this functionality into one chunk that
they then provide to apps.
Boilerplate related to project structure
At some point you will need to integrate with some
platforms. It could require:
→ Handshake and configuration in runtime
→ Specific shape of exports from main bundle
→ Different bundles based on some rules/ideas
New Brave World
You integrating with platform that
requires such architecture from your
app:
Each app consists of components,
each component have bundle with
React components that will be
rendered and bundle with logic that
will be runned in web worker. Your app
can have multiple components.
What is our plan to fight 50
different solutions?
Convention over configuration
https://en.wikipedia.org/wiki/Convention_over_configuration
Convention over configuration (also known as coding by convention) is a
software design paradigm used by software frameworks that attempts to
decrease the number of decisions that a developer using the framework is
required to make without necessarily losing flexibility and don't repeat
yourself (DRY) principles (с) Wikipedia
We decide structure that will help us to identify main parts of app.
And since we have knowledge of app’s main parts, we can create additional
configurations for our build tools to use that parts (if exists) to separate
bundles.
Next big thing in your platform
Code generation
We can create root entries for bundles by ourselves,
injecting user code there as imports. It allows us to
wrap our code with our code, so if you like to code
you can write code on top of you code.
Combine forces
We can combine solutions for all of our 3 boilerplate
types:
→
Add additional parts related to our conventions into
shared build system configuration.
→
Add some code generation that will create root files
with all needed integration API calls
→ Include your library with feature-like abstractions
Let’s go full force
Since we have tool that already know about your
project and have some code generation, we can go
deeper and generate not only code:
→ tsconfig.json
→ Internal files with metadata
→ Types for TypeScript
→ Storybook-related stuff
→ Anything you want, actually, just be brave
Going crazy with AST
If you crazy enough, you can also parse AST of your
project to transform code in build time.
It will help secure your job, because no one will
understand wtf that code is doing.
Is it good solution?
Pros
→ No bootstrapping nightmare
→
You focus on business logic and you have
most essential tools already available
Cons
→ Even more complicated DSL
→ Tons of abstraction you need to fight with
→ Limitation in terms for extending
The worst part is
that someone has
to maintain all
these things
So it’s just wet fantasy or what?
Nope, it’s just brief description of project that I
working on in Wix.
And also it’s something really similar to what Next.js
gives you with routing, data fetching and other their
features.
Outro
Let’s check main points again:
→ DexEx is important
→ Keep boilerplate in check
→ Great power comes with great responsibility
→ Wix is hiring
Q&A
Thank You!

More Related Content

Similar to "Dude, where’s my boilerplate? ", Oleksii Makodzeba

Building Open Source Communities for AWS Serverless Developer Tools
Building Open Source Communities for AWS Serverless Developer ToolsBuilding Open Source Communities for AWS Serverless Developer Tools
Building Open Source Communities for AWS Serverless Developer Tools
Amazon Web Services
 
Becoming a hyperledger aries developer learn things.online
Becoming a hyperledger aries developer   learn things.onlineBecoming a hyperledger aries developer   learn things.online
Becoming a hyperledger aries developer learn things.online
djaber3
 
DevOps - Interview Question.pdf
DevOps - Interview Question.pdfDevOps - Interview Question.pdf
DevOps - Interview Question.pdf
MinhTrnNht7
 

Similar to "Dude, where’s my boilerplate? ", Oleksii Makodzeba (20)

Agile Network India | Continuous Integration & Continuous Deployment & Automa...
Agile Network India | Continuous Integration & Continuous Deployment & Automa...Agile Network India | Continuous Integration & Continuous Deployment & Automa...
Agile Network India | Continuous Integration & Continuous Deployment & Automa...
 
Backstage at CNCF Madison.pptx
Backstage at CNCF Madison.pptxBackstage at CNCF Madison.pptx
Backstage at CNCF Madison.pptx
 
Tiki Addons
Tiki AddonsTiki Addons
Tiki Addons
 
Building Open Source Communities for AWS Serverless Developer Tools
Building Open Source Communities for AWS Serverless Developer ToolsBuilding Open Source Communities for AWS Serverless Developer Tools
Building Open Source Communities for AWS Serverless Developer Tools
 
Workshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdfWorkshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdf
 
Demystifying Docker101
Demystifying Docker101Demystifying Docker101
Demystifying Docker101
 
Demystifying Docker
Demystifying DockerDemystifying Docker
Demystifying Docker
 
Learn reactjs, how to code with example and general understanding thinkwik
Learn reactjs, how to code with example and general understanding   thinkwikLearn reactjs, how to code with example and general understanding   thinkwik
Learn reactjs, how to code with example and general understanding thinkwik
 
DevAssistant, Docker and You
DevAssistant, Docker and YouDevAssistant, Docker and You
DevAssistant, Docker and You
 
Platform engineering 101
Platform engineering 101Platform engineering 101
Platform engineering 101
 
Kubernetes and Local Dvelopment
Kubernetes and Local DvelopmentKubernetes and Local Dvelopment
Kubernetes and Local Dvelopment
 
MVC Frameworks for building PHP Web Applications
MVC Frameworks for building PHP Web ApplicationsMVC Frameworks for building PHP Web Applications
MVC Frameworks for building PHP Web Applications
 
Becoming a hyperledger aries developer learn things.online
Becoming a hyperledger aries developer   learn things.onlineBecoming a hyperledger aries developer   learn things.online
Becoming a hyperledger aries developer learn things.online
 
DevOps - Interview Question.pdf
DevOps - Interview Question.pdfDevOps - Interview Question.pdf
DevOps - Interview Question.pdf
 
Autotools, Design Patterns and more
Autotools, Design Patterns and moreAutotools, Design Patterns and more
Autotools, Design Patterns and more
 
Aleksandr Kutsan "Managing Dependencies in C++"
Aleksandr Kutsan "Managing Dependencies in C++"Aleksandr Kutsan "Managing Dependencies in C++"
Aleksandr Kutsan "Managing Dependencies in C++"
 
Open frameworks 101_fitc
Open frameworks 101_fitcOpen frameworks 101_fitc
Open frameworks 101_fitc
 
Guided Path to DevOps Career.
Guided Path to DevOps Career.Guided Path to DevOps Career.
Guided Path to DevOps Career.
 
Reimagining web development in your browser.pdf
Reimagining web development in your browser.pdfReimagining web development in your browser.pdf
Reimagining web development in your browser.pdf
 
Enterprise ipad Development with notes
Enterprise ipad Development with notesEnterprise ipad Development with notes
Enterprise ipad Development with notes
 

More from Fwdays

More from Fwdays (20)

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
 

Recently uploaded

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern Enterprise
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 

"Dude, where’s my boilerplate? ", Oleksii Makodzeba

  • 1.
  • 2. Hi, I’m Oleksii → 12+ years in development → 7+ years in Wix.com → 2+ years in DevEx team
  • 3. My Ultimate Goal is to fire as much developers as possible
  • 4. Agenda → DevEx → Boilerplate → ??? → PROFIT
  • 5. Me, myself and DevEx What is DevEx? I see it as set of tools and practices that allows developers to work smarter and not harder. Developers could focus more on business logic instead of constant battle with their tools and libraries. You stop thinking about how to build stuff and start thinking about what to build. So DevEx team creates this kind of tools.
  • 6. DevEx in a nutshell + = Develope r DevEx
  • 7. Who is our enemy? Boilerplate
  • 8. What is boilerplate code? https://en.wikipedia.org/wiki/Boilerplate_code In computer programming, boilerplate code, or simply boilerplate, are sections of code that are repeated in multiple places with little to no variation. © Wikipedia
  • 9. Three-headed boilerplate monster → Build time (grunt, gulp, webpack, rollup, vite, w’e) → Runtime (libs/features) → Project structure
  • 10. Boilerplate related to build tools We live in world where FED should know about build tools. You almost obligated to have understanding (at least high level) of steps that modern project goes through at build step. There is huge amount of different libraries and tools. And you need to configure them. But you rather just copy paste config from your old project.
  • 11.
  • 12. What we can do with it?
  • 13. Share the shared Extract config to separated package and use it as dependency in package.json. More shared stuff to The God of Shared Stuff ©
  • 14. Is it good solution? Pros → Easy to use → Easy to extend Cons → Easy to extend and forget to contribute
  • 15. Boilerplate related to runtime tools We all use libraries for common tasks. And we have some preferences. But in scope of company we don’t need to have more then one library for one common feature. And probably you don’t need different configurations for these libraries too. It still we be a copy paste anyways.
  • 16.
  • 17. How we can fight it? Presentation Name | June 2022
  • 18. Feature abstraction We hiding libraries under feature abstraction (i18next -> translations, sentry/w’e -> error monitoring). We publish it as dedicated packages and use them. There is tricky question here - should we keep all features as separated packages or should we combine them into one essentials package More abstractions to The God of Abstractions ©
  • 19. Is it good solution? Pros of feature per package → Easy to use → Focus only on business stuff Cons of feature per package → Feature-like abstraction creates Domain- Specific Language Pros of single package → Same as for per package → Easy to provide new features Cons of single package → You can’t decide what to have in bundle
  • 20. How we did it in Wix? Some of functionality have feature abstractions, some have just common configuration. It’s all leaves in package fe-essentials. For each our platform we have dedicated package that combine this functionality into one chunk that they then provide to apps.
  • 21. Boilerplate related to project structure At some point you will need to integrate with some platforms. It could require: → Handshake and configuration in runtime → Specific shape of exports from main bundle → Different bundles based on some rules/ideas
  • 22. New Brave World You integrating with platform that requires such architecture from your app: Each app consists of components, each component have bundle with React components that will be rendered and bundle with logic that will be runned in web worker. Your app can have multiple components.
  • 23. What is our plan to fight 50 different solutions?
  • 24. Convention over configuration https://en.wikipedia.org/wiki/Convention_over_configuration Convention over configuration (also known as coding by convention) is a software design paradigm used by software frameworks that attempts to decrease the number of decisions that a developer using the framework is required to make without necessarily losing flexibility and don't repeat yourself (DRY) principles (с) Wikipedia We decide structure that will help us to identify main parts of app. And since we have knowledge of app’s main parts, we can create additional configurations for our build tools to use that parts (if exists) to separate bundles.
  • 25.
  • 26.
  • 27.
  • 28. Next big thing in your platform
  • 29. Code generation We can create root entries for bundles by ourselves, injecting user code there as imports. It allows us to wrap our code with our code, so if you like to code you can write code on top of you code.
  • 30.
  • 31. Combine forces We can combine solutions for all of our 3 boilerplate types: → Add additional parts related to our conventions into shared build system configuration. → Add some code generation that will create root files with all needed integration API calls → Include your library with feature-like abstractions
  • 32.
  • 33. Let’s go full force Since we have tool that already know about your project and have some code generation, we can go deeper and generate not only code: → tsconfig.json → Internal files with metadata → Types for TypeScript → Storybook-related stuff → Anything you want, actually, just be brave
  • 34. Going crazy with AST If you crazy enough, you can also parse AST of your project to transform code in build time. It will help secure your job, because no one will understand wtf that code is doing.
  • 35. Is it good solution? Pros → No bootstrapping nightmare → You focus on business logic and you have most essential tools already available Cons → Even more complicated DSL → Tons of abstraction you need to fight with → Limitation in terms for extending
  • 36. The worst part is that someone has to maintain all these things
  • 37. So it’s just wet fantasy or what? Nope, it’s just brief description of project that I working on in Wix. And also it’s something really similar to what Next.js gives you with routing, data fetching and other their features.
  • 38. Outro Let’s check main points again: → DexEx is important → Keep boilerplate in check → Great power comes with great responsibility → Wix is hiring
  • 39. Q&A