SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
IMPLEMENTING A DESIGN
SYSTEM FROM THE
GROUND UP
Styleguide | Component Library
Andy Dover | github.com/adover
linkedin.com/in/andrewdover
1 FRONT END
DEVELOPERIn a sea of back end and full stack developers
BRAND
STYLGUIDE
MULTIPLE INTERNAL
& EXTERNAL
REQUIREMENTS
1 x App
Styles need to be able to
compile to be compatible
with native languages
2 x Websites
One internally managed and
one externally managed
∞ Internal Apps
Multiple apps of multiple
ages using anything from
jQuery to Kendo UI
1 FRONT END
DEVELOPER"But we don't want a design system"
VALUABLE LESSON #1
Learn how to sell the value of the
design system
BURNING
PLATFORM
BURNING
DESIRE
"Append Only" Stylesheets from 18
years of different developers
500kb bundled CSS file
Complete reimplimentations of visibly
similar functionality instead of reuse
Inconsistent code
Full site regression tests required for
any code change
No coding standards
Impossible to update branding
Multiple L&Fs and styles
IE6 - 10 vendor prefixes and hacks
Sad UX people, hacking away at stuff
Quick! Easy!
Declare once, apply everywhere
Consistency
Build pipeline with full optimisation and
autoformatting
Component isolation and test suites
IDE automated coding standards
(Prettier & StyleLint)
Update branding from one file
Up front implementation
Happy UX people!
A STYLEGUIDE
WAS BORN
/ component library
VALUABLE LESSON #2
Font declarations, grids and colours
does not a design system make
"DESIGN SYSTEM,
RIGHT AHEAD!"
Page Layout Templates
Elements Reacting to Other Elements
Internationalisation
Futureproofing
Documentation Automation
Accessibility
The easy stuff is the tip of the iceberg
Font Formats
Packaging & Hosting
Build Pipelines
Platform Requirements
Enforcing Constraints
Linting
Readmes
Baseline Grids
Library Architecture
Language & Approach
SIDENOTE
BASELINES,
SPACINGS,
PRESETS,
FTW
Sort it out early and save yourself a tonne of
headaches and iterations
colors: (
background: (
...
),
heading: (
light: map-get($colors, porcelain),
dark: map-get($colors, fun-green),
),
),
borders: (
default: 1px solid map-get($colors, silver-sand),
nav: 8px solid map-get($colors, fun-green),
),
spacing: (
default: (
h: 1rem,
v: 0.75rem,
),
medium: (
h: 2rem,
v: 1.5rem,
),
large: (
h: 4rem,
v: 3rem,
),
),
VALUABLE LESSON #3
Split your design system into multiple
layers to allow optimum reuse
YO DAWG
I HEARD YOU LIKE
LAYERS...
Components
JavaScript implementations
importing styles
Sandbox
Scenario-Driven component
development environment
Guide
Documentation built from
comments and readme files
Styles
CSS styles which can be
imported and reused
Configs
Agreed base colours and
spacing multipliers
VALUABLE LESSON #4
Pick your approach, live it, breathe it,
learn how to explain it to a 5 year old
ITCSS
Settings
Configurations, Variables, Transitions,
Animations, Presets
Functions, Mixins
Resets, Theme Imports,
Shared Libraries
HTML Tags, Singular UI
Elements (Cards,
Overlays etc.)
Banners, Accordions,
Navs, Notifications,
Popups, etc
Login, Navigation
Drawer, Tabsets
Page Flows
Tools
Global Imports
Elements Atoms
Objects Molecules
Components Organisms
Templates
Atomic
AUTOMATE ALL
THE THINGS
Sandboxing
StoryBook.js
Angular Playground
Documentation
JSDoc
SassDoc
CompoDoc
Calculations or building code blocks
SASS functions
Mixins
Webpack helpers
Asset copying and packaging
Bash Scripts
NPM Packages
Pipeline Builds
Choosing which npm script to run
ntl
VALUABLE LESSON #5
Build a Proof of Concept to break
your (and your designers) great ideas
AfterBefore
500kb Bundle Size 90kb Bundle Size
300+ Line height declarations 6 Line height declarations
THANKS!

Weitere ähnliche Inhalte

Ähnlich wie Creating a CSS and JS design system from the ground up

Challenges In Dsl Design
Challenges In Dsl DesignChallenges In Dsl Design
Challenges In Dsl Design
Sven Efftinge
 
haXe - One codebase to rule'em all
haXe - One codebase to rule'em allhaXe - One codebase to rule'em all
haXe - One codebase to rule'em all
Tom Crombez
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloud
lennartkats
 

Ähnlich wie Creating a CSS and JS design system from the ground up (20)

Keynote: Building Tomorrow's Ceph - Ceph Day Frankfurt
Keynote: Building Tomorrow's Ceph - Ceph Day Frankfurt Keynote: Building Tomorrow's Ceph - Ceph Day Frankfurt
Keynote: Building Tomorrow's Ceph - Ceph Day Frankfurt
 
Introduction to programming world
Introduction to programming worldIntroduction to programming world
Introduction to programming world
 
Life Beyond Rails: Creating Cross Platform Ruby Apps
Life Beyond Rails: Creating Cross Platform Ruby AppsLife Beyond Rails: Creating Cross Platform Ruby Apps
Life Beyond Rails: Creating Cross Platform Ruby Apps
 
Flutter
FlutterFlutter
Flutter
 
Challenges In Dsl Design
Challenges In Dsl DesignChallenges In Dsl Design
Challenges In Dsl Design
 
Enterprise Data Workflows with Cascading and Windows Azure HDInsight
Enterprise Data Workflows with Cascading and Windows Azure HDInsightEnterprise Data Workflows with Cascading and Windows Azure HDInsight
Enterprise Data Workflows with Cascading and Windows Azure HDInsight
 
Important work-arounds for making ASS multi-lingual
Important work-arounds for making ASS multi-lingualImportant work-arounds for making ASS multi-lingual
Important work-arounds for making ASS multi-lingual
 
Embarcadero's Connected Development
Embarcadero's Connected DevelopmentEmbarcadero's Connected Development
Embarcadero's Connected Development
 
Nailing that Devops Interview - An Anti-guide. Nir Cohen, GigaSpaces
Nailing that Devops Interview - An Anti-guide. Nir Cohen, GigaSpacesNailing that Devops Interview - An Anti-guide. Nir Cohen, GigaSpaces
Nailing that Devops Interview - An Anti-guide. Nir Cohen, GigaSpaces
 
The REAL Angular Keynote
The REAL Angular KeynoteThe REAL Angular Keynote
The REAL Angular Keynote
 
Android Talks #3 Android Design Best Practices - for Designers and Developers
Android Talks #3 Android Design Best Practices - for Designers and DevelopersAndroid Talks #3 Android Design Best Practices - for Designers and Developers
Android Talks #3 Android Design Best Practices - for Designers and Developers
 
The Future of Cross-Platform is Native
The Future of Cross-Platform is NativeThe Future of Cross-Platform is Native
The Future of Cross-Platform is Native
 
haXe - One codebase to rule'em all
haXe - One codebase to rule'em allhaXe - One codebase to rule'em all
haXe - One codebase to rule'em all
 
Experiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamExperiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure team
 
One App, Multiple Platforms
One App, Multiple PlatformsOne App, Multiple Platforms
One App, Multiple Platforms
 
Compiler Construction | Lecture 17 | Beyond Compiler Construction
Compiler Construction | Lecture 17 | Beyond Compiler ConstructionCompiler Construction | Lecture 17 | Beyond Compiler Construction
Compiler Construction | Lecture 17 | Beyond Compiler Construction
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloud
 
20080115 04 - La qualimétrie pour comprendre et appréhender les SI
20080115 04 - La qualimétrie pour comprendre et appréhender les SI20080115 04 - La qualimétrie pour comprendre et appréhender les SI
20080115 04 - La qualimétrie pour comprendre et appréhender les SI
 
Infinum Android Talks #03 - Android Design Best Practices - for Designers and...
Infinum Android Talks #03 - Android Design Best Practices - for Designers and...Infinum Android Talks #03 - Android Design Best Practices - for Designers and...
Infinum Android Talks #03 - Android Design Best Practices - for Designers and...
 
Container orchestration: the cold war - Giulio De Donato - Codemotion Rome 2017
Container orchestration: the cold war - Giulio De Donato - Codemotion Rome 2017Container orchestration: the cold war - Giulio De Donato - Codemotion Rome 2017
Container orchestration: the cold war - Giulio De Donato - Codemotion Rome 2017
 

Kürzlich hochgeladen

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 

Kürzlich hochgeladen (20)

Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
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
 
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
 
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
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
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
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
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
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 

Creating a CSS and JS design system from the ground up

  • 1. IMPLEMENTING A DESIGN SYSTEM FROM THE GROUND UP Styleguide | Component Library Andy Dover | github.com/adover linkedin.com/in/andrewdover
  • 2. 1 FRONT END DEVELOPERIn a sea of back end and full stack developers
  • 3.
  • 4.
  • 6. MULTIPLE INTERNAL & EXTERNAL REQUIREMENTS 1 x App Styles need to be able to compile to be compatible with native languages 2 x Websites One internally managed and one externally managed ∞ Internal Apps Multiple apps of multiple ages using anything from jQuery to Kendo UI
  • 7. 1 FRONT END DEVELOPER"But we don't want a design system"
  • 8. VALUABLE LESSON #1 Learn how to sell the value of the design system
  • 9. BURNING PLATFORM BURNING DESIRE "Append Only" Stylesheets from 18 years of different developers 500kb bundled CSS file Complete reimplimentations of visibly similar functionality instead of reuse Inconsistent code Full site regression tests required for any code change No coding standards Impossible to update branding Multiple L&Fs and styles IE6 - 10 vendor prefixes and hacks Sad UX people, hacking away at stuff Quick! Easy! Declare once, apply everywhere Consistency Build pipeline with full optimisation and autoformatting Component isolation and test suites IDE automated coding standards (Prettier & StyleLint) Update branding from one file Up front implementation Happy UX people!
  • 10. A STYLEGUIDE WAS BORN / component library
  • 11. VALUABLE LESSON #2 Font declarations, grids and colours does not a design system make
  • 12. "DESIGN SYSTEM, RIGHT AHEAD!" Page Layout Templates Elements Reacting to Other Elements Internationalisation Futureproofing Documentation Automation Accessibility The easy stuff is the tip of the iceberg Font Formats Packaging & Hosting Build Pipelines Platform Requirements Enforcing Constraints Linting Readmes Baseline Grids Library Architecture Language & Approach
  • 14. BASELINES, SPACINGS, PRESETS, FTW Sort it out early and save yourself a tonne of headaches and iterations colors: ( background: ( ... ), heading: ( light: map-get($colors, porcelain), dark: map-get($colors, fun-green), ), ), borders: ( default: 1px solid map-get($colors, silver-sand), nav: 8px solid map-get($colors, fun-green), ), spacing: ( default: ( h: 1rem, v: 0.75rem, ), medium: ( h: 2rem, v: 1.5rem, ), large: ( h: 4rem, v: 3rem, ), ),
  • 15. VALUABLE LESSON #3 Split your design system into multiple layers to allow optimum reuse
  • 16. YO DAWG I HEARD YOU LIKE LAYERS... Components JavaScript implementations importing styles Sandbox Scenario-Driven component development environment Guide Documentation built from comments and readme files Styles CSS styles which can be imported and reused Configs Agreed base colours and spacing multipliers
  • 17. VALUABLE LESSON #4 Pick your approach, live it, breathe it, learn how to explain it to a 5 year old
  • 18.
  • 19. ITCSS Settings Configurations, Variables, Transitions, Animations, Presets Functions, Mixins Resets, Theme Imports, Shared Libraries HTML Tags, Singular UI Elements (Cards, Overlays etc.) Banners, Accordions, Navs, Notifications, Popups, etc Login, Navigation Drawer, Tabsets Page Flows Tools Global Imports Elements Atoms Objects Molecules Components Organisms Templates Atomic
  • 20. AUTOMATE ALL THE THINGS Sandboxing StoryBook.js Angular Playground Documentation JSDoc SassDoc CompoDoc Calculations or building code blocks SASS functions Mixins Webpack helpers Asset copying and packaging Bash Scripts NPM Packages Pipeline Builds Choosing which npm script to run ntl
  • 21. VALUABLE LESSON #5 Build a Proof of Concept to break your (and your designers) great ideas
  • 22. AfterBefore 500kb Bundle Size 90kb Bundle Size 300+ Line height declarations 6 Line height declarations