The Technical Side of Design Systems

A presentation at An Event Apart Boston in May 2019 in Boston, MA, USA by Brad Frost

Slide 1

Slide 1

THE TECHNICAL SIDE OF DESIGN SYSTEMS BRAD FROST

Slide 2

Slide 2

Slide 3

Slide 3

“DESIGN SYSTEM” IS AN UNFORTUNATE NAME

Slide 4

Slide 4

A DESIGN SYSTEM IS THE STORY OF HOW YOUR ORGANIZATION DESIGNS AND BUILDS DIGITAL PRODUCTS

Slide 5

Slide 5

https://varya.me/blog/design-systems-review/

Slide 6

Slide 6

https://www.sketchapp.com/learn/documentation/07-symbols/4-nested-symbols.html

Slide 7

Slide 7

http://bradfrost.com/blog/post/your-sketch-library-is-not-a-design-system/

Slide 8

Slide 8

Slide 9

Slide 9

Slide 10

Slide 10

Slide 11

Slide 11

comp production

Slide 12

Slide 12

THE HEART AND SOUL OF A DESIGN SYSTEM IS A CODE LIBRARY OF REUSABLE UI COMPONENTS THAT POWER REAL SOFTWARE APPLICATIONS

Slide 13

Slide 13

Slide 14

Slide 14

Slide 15

Slide 15

https://18f.gsa.gov/2017/10/03/building-a-large-scale-design-system/

Slide 16

Slide 16

JUST SOME OF THE INFINITE FLAVORS OF BUTTON MARKUP <button> <button class=”btn”> <button class=”button”> <button class=”slds-button”> <button class=”button-green”> <button class=”green-button”> <button data-style=”btn-green”> <button class=”btn btn—green”> <button class=”c-button c-button—primary”> <button class=”f6 link dim ph3 pv2 mb2 dib”> <button class=”bg-green hover:bg-green-dark”> <button style=”background: green; color: white;”>

Slide 17

Slide 17

Slide 18

Slide 18

Slide 19

Slide 19

Slide 20

Slide 20

Slide 21

Slide 21

Slide 22

Slide 22

Slide 23

Slide 23

Slide 24

Slide 24

Slide 25

Slide 25

Slide 26

Slide 26

Slide 27

Slide 27

Slide 28

Slide 28

TECH BENEFITS OF DESIGN SYSTEMS ๏ Reduce technical debt - less frontend spaghetti code ๏ Faster production - less time coding common UI components and more time building real features and products ๏ Higher-quality production - bake in and enforce frontend best practices; teams can focus on iterating and improving rather than reinvention ๏ Reduce QA efforts - centralize certain QA tasks ๏ Potentially adopt new technologies faster - a design system can help make adding additional frameworks/technology more manageable ๏ Useful reference - an essential resource and hub for development best practices ๏ Future-friendly foundation - modify, extend, & improve upon over time

Slide 29

Slide 29

Slide 30

Slide 30

WHAT’S YER TECH STACK?

Slide 31

Slide 31

drupal

Slide 32

Slide 32

wordpress angular django react ruby vue

Slide 33

Slide 33

wordpress react

Slide 34

Slide 34

react wordpress

Slide 35

Slide 35

react vue wordpress drupal

Slide 36

Slide 36

vue drupal react wordpress

Slide 37

Slide 37

angular vue 1.x drupal drupal7 third-party react react15.x aem wordpress asp.net

Slide 38

Slide 38

aem wordpress drupal third-party react drupal 7 asp.net react vue drupal wordpress angular 1.x react 15.x third-party wordpress third-party

Slide 39

Slide 39

ONE BRAND

Slide 40

Slide 40

Slide 41

Slide 41

aem wordpress drupal third-party react drupal 7 asp.net react vue drupal wordpress angular 1.x react 15.x third-party wordpress third-party

Slide 42

Slide 42

HOW THE HELL ARE WE GOING TO DO ALL THAT?!

Slide 43

Slide 43

WE’RE NOT.

Slide 44

Slide 44

AT LEAST NOT YET.

Slide 45

Slide 45

aem wordpress drupal third-party react drupal 7 asp.net react vue drupal wordpress angular 1.x react 15.x third-party wordpress third-party

Slide 46

Slide 46

vendor info fashion merchandising media center e-commerce video editor hr app homepage store lookup point of sale partnership microsite look book inventory manager fashion design chat company blog careers

Slide 47

Slide 47

media center video editor store lookup inventory manager look book point of sale hr app company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products

Slide 48

Slide 48

media center video editor store lookup inventory manager look book point of sale hr app company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products

Slide 49

Slide 49

hr app inventory manager video editor store lookup look book point of sale company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products

Slide 50

Slide 50

store lookup inventory manager company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat video editor look book point of sale products

Slide 51

Slide 51

inventory manager video editor store lookup look book point of sale company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products

Slide 52

Slide 52

inventory manager video editor store lookup look book point of sale company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products

Slide 53

Slide 53

video editor store lookup inventory manager point of sale look book company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products

Slide 54

Slide 54

video editor store lookup inventory manager point of sale look book company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products

Slide 55

Slide 55

Slide 56

Slide 56

video editor store lookup inventory manager point of sale look book design system company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products

Slide 57

Slide 57

video editor store lookup inventory manager point of sale look book pilot project dev design system design system company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products

Slide 58

Slide 58

http://danmall.me/articles/design-systems-pilots-scorecards/

Slide 59

Slide 59

Like television pilots help test audience reactions to a series concept without investing significant resources to create the whole thing, application pilots are a good foundation for ensuring your design system’s design and code are battle-tested. –Dan Mall

Slide 60

Slide 60

Slide 61

Slide 61

CRITERIA FOR CHOOSING PILOT PROJECTS ๏ Potential for common components & patterns - Does this pilot have many components and patterns that can be reused elsewhere? ๏ Scope - Is this work accomplishable in our pilot timeframe of [3–X weeks]? ๏ Technical feasibility & independence - How simple is the technical implementation? Is a large refactor or migration required? ๏ Available champion - Will someone working on this product be a good guinea pig, see it through, and then celebrate/evangelize (and even contribute back to) the design system? ๏ Marketing potential - Will this work excite others to use the design system?

Slide 62

Slide 62

WHERE TO BUILD THE DESIGN SYSTEM?

Slide 63

Slide 63

tech stack

Slide 64

Slide 64

ui code tech stack

Slide 65

Slide 65

ui code

Slide 66

Slide 66

http://bradfrost.com/blog/post/a-frontend-workshop-environment/

Slide 67

Slide 67

http:// http://patternlab.io

Slide 68

Slide 68

https://storybook.js.org/

Slide 69

Slide 69

fractal.build

Slide 70

Slide 70

https://vueds.com/

Slide 71

Slide 71

http://patternlab.io/

Slide 72

Slide 72

Slide 73

Slide 73

Slide 74

Slide 74

Slide 75

Slide 75

Slide 76

Slide 76

Slide 77

Slide 77

Slide 78

Slide 78

video editor store lookup inventory manager point of sale look book pilot project dev design system design system company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products

Slide 79

Slide 79

frontend workshop pilot project & component dev design system design system inventory manager video editor store lookup look book look book ui point of sale company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products

Slide 80

Slide 80

HOW ARE WE GOING TO CODE THIS?

Slide 81

Slide 81

JUST SOME OF THE INFINITE FLAVORS OF BUTTON MARKUP <button> <button class=”btn”> <button class=”button”> <button class=”slds-button”> <button class=”button-green”> <button class=”green-button”> <button data-style=”btn-green”> <button class=”btn btn—green”> <button class=”c-button c-button—primary”> <button class=”f6 link dim ph3 pv2 mb2 dib”> <button class=”bg-green hover:bg-green-dark”> <button style=”background: green; color: white;”>

Slide 82

Slide 82

A DESIGN SYSTEM’S CODEBASE NEEDS TO BE CONSISTENT AND COHESIVE

Slide 83

Slide 83

https://github.com/bradfrost/frontend-guidelines-questionnaire/

Slide 84

Slide 84

WHAT ARE SOME PRINCIPLES YOUR TEAM SHOULD FOLLOW WHEN WRITING HTML? CSS? JAVASCRIPT?

Slide 85

Slide 85

SMACSS, BEM OR OTHER METHODOLOGY?

Slide 86

Slide 86

WHAT CSS TOOLS (SASS, NORMALIZE, AUTOPREFIXER, ETC) WILL THE DESIGN SYSTEM USE?

Slide 87

Slide 87

WHAT JS TOOLS (FRAMEWORKS, LIBRARIES, TOOLING) WILL THE DESIGN SYSTEM USE?

Slide 88

Slide 88

SPACES OR TABS?

Slide 89

Slide 89

Slide 90

Slide 90

GUIDELINES ARE GREAT AND ALL, BUT LET’S ENFORCE THEM!

Slide 91

Slide 91

https://eslint.org/

Slide 92

Slide 92

https://stylelint.io/

Slide 93

Slide 93

http://csslint.net/

Slide 94

Slide 94

https://prettier.io/

Slide 95

Slide 95

Slide 96

Slide 96

https://css-tricks.com/make-it-hard-to-screw-up-driven-development/

Slide 97

Slide 97

CSS ARCHITECTURE

Slide 98

Slide 98

Slide 99

Slide 99

OL’ TRUSTY, STURDY, PORTABLE, RELIABLE CSS

<link rel=”stylesheet” href=”cdn.com/design-system.1.0.css” />

Slide 100

Slide 100

vendor info fashion merchandising media center e-commerce video editor hr app homepage store lookup point of sale partnership microsite look book inventory manager fashion design chat company blog careers

Slide 101

Slide 101

ONE TYPE OF CSS NAMING (THAT HAS WORKED PRETTY DANG WELL FOR ME OVER THE YEARS) .cn-c-btn—secondary { }

Slide 102

Slide 102

GLOBAL NAMESPACE .cn-

Slide 103

Slide 103

CLASS PREFIXES .c- for UI components .l- for layout-related styles .u- for utility classes .is- and .has- for state-based classes .js- for JavaScript-specific classes

Slide 104

Slide 104

BEM-STYLE SYNTAX .cn-c-btn {} /* btn is Block / .cn-c-btn__icon {} / __icon is Element / .cn-c-btn—secondary {} / —secondary is Modifier */

Slide 105

Slide 105

http://bradfrost.com/blog/post/css-architecture-for-design-systems/

Slide 106

Slide 106

http://cssguidelin.es/

Slide 107

Slide 107

Slide 108

Slide 108

Slide 109

Slide 109

system product

Slide 110

Slide 110

The Design System informs our Product Design. Our Product Design informs the Design System. -Jina Anne https://medium.com/salesforce-ux/the-salesforce-team-model-for-scaling-a-design-system-d89c2a2d404b

Slide 111

Slide 111

HERE’S THE PART WHERE I PEE MY PANTS LIVE CODE

Slide 112

Slide 112

https://danmall.me/articles/designer-developer-workflow/

Slide 113

Slide 113

LATHER. RINSE. REPEAT.

Slide 114

Slide 114

frontend workshop pilot project & component dev design system design system video editor video editor ui store store lookup lookup ui look book point of sale company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products inventory inventory manager manager ui

Slide 115

Slide 115

Slide 116

Slide 116

Slide 117

Slide 117

THE DESIGN SYSTEM CODE MUST BE INTUITIVE FOR DEVELOPERS USING IT

Slide 118

Slide 118

API DESIGN

Slide 119

Slide 119

Slide 120

Slide 120

Slide 121

Slide 121

variant=”primary” size=”large” variant=”secondary” variant=”link” size=”small” fullWidth={true}

Slide 122

Slide 122

Slide 123

Slide 123

Slide 124

Slide 124

OPEN VS LOCKED DOWN?

Slide 125

Slide 125

Slide 126

Slide 126

HERO COMPONENT <Hero imgSrc=”https://placeholder.com/1200x650” imgAlt=”Hero Alt Txt” title=”Hero Title” description=”This is the hero description” />

Slide 127

Slide 127

Slide 128

Slide 128

ADD CALL TO ACTION TO HERO COMPONENT <Hero imgSrc=”https://placeholder.com/1200x650” imgAlt=”Hero Alt Txt” title=”Hero Title” description=”This is the hero description” cta=”Call to action” />

Slide 129

Slide 129

Slide 130

Slide 130

ADD ANOTHER CALL TO ACTION TO HERO COMPONENT <Hero imgSrc=”https://placeholder.com/1200x650” imgAlt=”Hero Alt Txt” title=”Hero Title” description=”This is the hero description” cta=”Primary call to action” secondaryCta=”Secondary call to action” />

Slide 131

Slide 131

Slide 132

Slide 132

MAKING THE HERO MORE COMPOSABLE return ( <div className=”c-hero”> <img className=”c-hero__img” src={imgSrc} alt={imgAlt} /> <div className=”c-hero__body”> <h2 className=”c-hero__title”>{title}</h2> <p className=”c-hero__description”>{description}</p> <div className=”c-hero__children”> {children} </div> </div> </div> );

Slide 133

Slide 133

MAKE THE HERO MORE COMPOSABLE return ( <div className=”c-hero”> <img className=”c-hero__img” src={imgSrc} alt={imgAlt} /> <div className=”c-hero__body”> <h2 className=”c-hero__title”>{title}</h2> <p className=”c-hero__description”>{description}</p> <div className=”c-hero__children”> {children} );

</div> </div> </div> put stuff here

Slide 134

Slide 134

box to put stuff

Slide 135

Slide 135

HERO COMPONENT WITH CHILDREN <Hero> <InlineForm /> </Hero>

Slide 136

Slide 136

HERO COMPONENT WITH CHILDREN <Hero> <Button /> </Hero>

Slide 137

Slide 137

HERO COMPONENT WITH CHILDREN <Hero> <WhateverYouWant /> </Hero>

Slide 138

Slide 138

BAKED-IN BEST PRACTICES

Slide 139

Slide 139

http://bradfrost.com/blog/post/enforcing-accessibility-best-practices-with-component-proptypes/

Slide 140

Slide 140

VALIDATING WITH PROTOTYPES Hero.propTypes = { imgSrc: PropTypes.string.isRequired, imgAlt: PropTypes.string.isRequired, title: PropTypes.string.isRequired, description: PropTypes.string }

Slide 141

Slide 141

Slide 142

Slide 142

http://bradfrost.com/blog/post/enforcing-accessibility-best-practices-with-automatically-generated-ids/

Slide 143

Slide 143

A LABEL NEEDS A FOR ATTRIBUTE <label for=”first-name”>First Name</label> <input type=”text” id=”first-name” />

Slide 144

Slide 144

Slide 145

Slide 145

ADDING FIELD INSTRUCTIONS WITHOUT ARIA-DESCRIBEDBY <label for=”password”>Choose a password</label> <input type=”password” id=”password” /> <p>Your password must be at least 8 characters long</p>

Slide 146

Slide 146

Slide 147

Slide 147

ADDING ARIA-DESCRIBEDBY TO A FIELD <label for=”password”>Choose a password</label> <input type=”password” id=”password” aria-describedby=”instructions” /> <p id=”instructions”>Your password must be at least 8 characters long</p>

Slide 148

Slide 148

AUTOMATICALLY GENERATING IDS import shortid from “shortid”; class TextField extends React.Component { componentDidMount() { this.generateId=shortid.generate(); this.generateAriaId=shortid.generate(); } } render() { const { id, label, ariaDescribedBy, instructions, ..other} = this.props; return ( <div className=”c-text-field”> <label htmlFor={id || this.generateId}>{label}</label> <input type=”text” id={id || this.generateId} aria-describedby={ariaDescribedBy || this.generateAriaId} /> <p id={ariaDescribedBy || this.generateAriaId}>{ instructions }</p> </div> ) }

Slide 149

Slide 149

IMPLEMENTING A TEXT FIELD COMPONENT <TextField label=”Last Name” id=”last-name” ariaDescribedBy=”last-name-instructions” instructions=”Please provide your family name” />

Slide 150

Slide 150

IMPLEMENTING A TEXT FIELD COMPONENT WITHOUT ID ATTRIBUTES <TextField label=”Last Name” instructions=”Please provide your family name” />

Slide 151

Slide 151

AUTOMATICALLY ASSIGNING UNIQUE IDS IF THEY AREN’T EXPLICITLY DEFINED <label for=”qPbdivDEiH”>Last Name</label> <input type=”text” id=”qPbdivDEiH” aria-describedby=”0LvdKMfqA” /> <p id=”0LvdKMfqA”>Please provide your family name</p>

Slide 152

Slide 152

YOU CAN’T SCREW IT UP!* *You can probably still screw it up if you try really hard.

Slide 153

Slide 153

Slide 154

Slide 154

WHAT DOES IT MEAN TO LAUNCH A DESIGN SYSTEM?

Slide 155

Slide 155

A design system isn’t a project with an end, it’s the origin story of a living and evolving product that’ll serve other products. -Nathan Curtis https://medium.com/eightshapes-llc/a-design-system-isn-t-a-project-it-s-a-product-serving-products-74dcfffef935#.4umtnfxsx

Slide 156

Slide 156

SPECTRUM OF INTEGRATION least integrated static frontend reference code consumable components most integrated

Slide 157

Slide 157

SPECTRUM OF INTEGRATION least integrated static frontend reference code consumable components most integrated

Slide 158

Slide 158

comp production

Slide 159

Slide 159

SPECTRUM OF INTEGRATION least integrated static frontend reference code consumable components most integrated

Slide 160

Slide 160

https://v2.designsystem.digital.gov/

Slide 161

Slide 161

30,000 FREAKING WEBSITES

Slide 162

Slide 162

Slide 163

Slide 163

SPECTRUM OF INTEGRATION least integrated static frontend reference code consumable components most integrated

Slide 164

Slide 164

https://www.carbondesignsystem.com/components/accordion/code

Slide 165

Slide 165

DEPLOYING A DESIGN SYSTEM

Slide 166

Slide 166

https://www.npmjs.com/

Slide 167

Slide 167

npm publish frontend workshop pilot project & component dev design system design system inventory manager video editor store lookup look book point of sale company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products

Slide 168

Slide 168

Slide 169

Slide 169

https://www.npmjs.com/package/carbon-components

Slide 170

Slide 170

https://www.npmjs.com/package/@salesforce-ux/design-system

Slide 171

Slide 171

inventory manager video editor store lookup look book point of sale company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat npm install npm publish frontend workshop pilot project & component dev design system design system products

Slide 172

Slide 172

INSTALLING YOUR DESIGN SYSTEM npm install your-design-system

Slide 173

Slide 173

IMPORTING A DESIGN SYSTEM COMPONENT import Button from your-design-system/Button

Slide 174

Slide 174

IMPLEMENTING A DESIGN SYSTEM COMPONENT <Button text=”Book Room” variant=”primary” />

Slide 175

Slide 175

Slide 176

Slide 176

BIG MENTAL SHIFT ALERT: FROM “LET’S BUILD A WEBSITE” TO “LET’S MAINTAIN A PRODUCT WHICH OTHER PRODUCTS USE AS A DEPENDENCY.”

Slide 177

Slide 177

VERSIONING

Slide 178

Slide 178

https://semver.org/

Slide 179

Slide 179

v0.1.0

Slide 180

Slide 180

v0.1.0 Fix bugs or optimize existing features without breaking changes patch

Slide 181

Slide 181

v0.1.0 minor Add new features or deprecate features without breaking changes

Slide 182

Slide 182

v0.1.0 major Breaking changes, such as box model styles, color revisions, public API, markup, icons, fonts

Slide 183

Slide 183

v0.30.0

Slide 184

Slide 184

v0.30.1

Slide 185

Slide 185

v0.30.2

Slide 186

Slide 186

v0.31.0

Slide 187

Slide 187

v1.0.0 🎉

Slide 188

Slide 188

A 1.0.0 designation comes with commitment. Freewheeling days of unstable early foundations are behind you. –Nathan Curtis https://medium.com/eightshapes-llc/versioning-design-systems-48cceb5ace4d

Slide 189

Slide 189

v1.1.0

Slide 190

Slide 190

UPDATING TO THE LATEST VERSION OF THE DESIGN SYSTEM npm update your-design-system

Slide 191

Slide 191

http://designsystem.morningstar.com/about/versioning.html

Slide 192

Slide 192

https://medium.com/eightshapes-llc/releasing-design-systems-57fca91a23f6

Slide 193

Slide 193

frontend workshop pilot project & component dev design system design system video editor video editor ui store store lookup lookup ui look book point of sale company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products inventory inventory manager manager ui

Slide 194

Slide 194

frontend workshop pilot project & component dev react-flavored design system design system video editor video editor ui store store lookup lookup ui look book point of sale company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products inventory inventory manager manager ui

Slide 195

Slide 195

frontend workshop pilot project & component dev design system design system video editor video editor ui store store lookup lookup ui look book point of sale company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products inventory inventory manager manager ui

Slide 196

Slide 196

frontend workshop pilot project & component dev design newreact twig hotness system tech-agnostic tech-specific video editor video editor ui store store lookup lookup ui look book point of sale company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat products inventory inventory manager manager ui

Slide 197

Slide 197

video editor video editor ui store store lookup lookup ui inventory inventory manager manager ui look book point of sale company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat react frontend workshop design system twig new hotness pilot project & component dev tech-agnostic tech-specific products

Slide 198

Slide 198

What happens when the new hotness isn’t the new hotness anymore?

Slide 199

Slide 199

Slide 200

Slide 200

video editor video editor ui store store lookup lookup ui inventory inventory manager manager ui look book point of sale company blog partnership microsite vendor info fashion design fashion merchandising homepage e-commerce careers chat react frontend workshop design system twig new hotness pilot project & component dev tech-agnostic tech-specific products

Slide 201

Slide 201

iOS iOS app 1 iOS app 2 video video editor editor store store lookup lookup look book point of sale company blog partnership microsite vendor info fashion fashion design design fashion fashion merchandisin merchandis homepage homepage e-commerce careers chat inventory inventory manager manager react frontend workshop design system twig g new hotness pilot project & component dev tech-agnostic tech-specific products

Slide 202

Slide 202

DESIGN TOKENS

Slide 203

Slide 203

https://www.lightningdesignsystem.com/design-tokens/

Slide 204

Slide 204

communications native apps marketing site product 1 product 2

Slide 205

Slide 205

design tokens communications native apps marketing site product 1 product 2

Slide 206

Slide 206

design tokens communications native apps marketing site implementation-agnostic source of truth product 1 product 2

Slide 207

Slide 207

DESIGN TOKEN PROPERTIES ๏ Background colors ๏ Border thicknesses ๏ Type colors ๏ Border radii ๏ Font families ๏ Animation speeds ๏ Font sizes ๏ Media queries ๏ Font weights ๏ Margins ๏ Line Heights ๏ Padding ๏ Border colors

Slide 208

Slide 208

https://github.com/salesforce-ux/theo

Slide 209

Slide 209

https://amzn.github.io/style-dictionary

Slide 210

Slide 210

https://www.invisionapp.com/design-system-manager/

Slide 211

Slide 211

Slide 212

Slide 212

Slide 213

Slide 213

Slide 214

Slide 214

Slide 215

Slide 215

Slide 216

Slide 216

Slide 217

Slide 217

Slide 218

Slide 218

Slide 219

Slide 219

Slide 220

Slide 220

THIS IS HARD.

Slide 221

Slide 221

iOS iOS app 1 iOS app 2 video video editor editor store store lookup lookup look book point of sale company blog partnership microsite vendor info fashion fashion design design fashion fashion merchandisin merchandis homepage homepage e-commerce careers chat inventory inventory manager manager react frontend workshop design system twig g new hotness pilot project & component dev tech-agnostic tech-specific products

Slide 222

Slide 222

Slide 223

Slide 223

TAKEAWAYS ๏ Your design system must live in the technologies your products use ๏ Look at your product roadmaps for design system pilot project opportunities ๏ Establish code conventions and use tooling & process to enforce them ๏ Build your design system and pilot project UI screens in a frontend workshop environment ๏ Bake best practices into reusable components & make them as rigid or flexible as you need them to be ๏ Use semantic versioning to manage ongoing design system product work ๏ Use design tokens to feed common design properties into different platforms

Slide 224

Slide 224

BABY STEPS

Slide 225

Slide 225

THANKS! brad@bradfrost.com | bradfrost.com