Ruter Design System - A design system for public transport

A presentation at Design Systems Day 2019 in February 2019 in Oslo, Norway by Ronny Siikaluoma

Slide 1

Slide 1

Ruter Design System A design system for public transport 12.2.2019 Christian Nordström, Design Manager, Ruter Ingrid Hagelund, Designer, Making Waves Ronny Siikaluoma, Designsystem Lead, Making Waves

Slide 2

Slide 2

60+

Slide 3

Slide 3

Slide 4

Slide 4

50%

Slide 5

Slide 5

DIGITAL

Slide 6

Slide 6

VEHICLES

Slide 7

Slide 7

WAYFINDING

Slide 8

Slide 8

INDUSTRIAL

Slide 9

Slide 9

PRINT

Slide 10

Slide 10

SERVICE DESIGN

Slide 11

Slide 11

MARKETING

Slide 12

Slide 12

EXPERIENCE

Slide 13

Slide 13

Slide 14

Slide 14

OUTDATED

Slide 15

Slide 15

Defining

Slide 16

Slide 16

DESIGN SYSTEM MATURITY Living Design System A process built into the organization Automatic Reusable components as part of application build process Hard-to-cross «chasm» for most organizations Manual Style Guide Simple copy/paste code snippets Static One-time PDF with brand guidelines Inconsistency The lack of a design system

Slide 17

Slide 17

DESIGN SYSTEM MATURITY Living Design System A process built into the organization Automatic Reusable components as part of application build process Hard-to-cross «chasm» for most organizations Manual Style Guide Simple copy/paste code snippets Static One-time PDF with brand guidelines Inconsistency The lack of a design system

Slide 18

Slide 18

DEFINING THE DESIGN SYSTEM Product What is offered?

Slide 19

Slide 19

DEFINING THE DESIGN SYSTEM Product What is offered? UI Kits Code components Documentation

Slide 20

Slide 20

DEFINING THE DESIGN SYSTEM Operations Product How to cooperate? What is offered? Planning UI Kits Tools Code components Communication Documentation Management

Slide 21

Slide 21

DEFINING THE DESIGN SYSTEM “Ruter Design System consists of tools, components, guidelines and processes that enable teams to create rich, cohesive and meaningful experiences.”

Slide 22

Slide 22

Tools

Slide 23

Slide 23

TOOLS RuterBrand https://ruter.frontify.com RuterComponents https://components.ruter.as

Slide 24

Slide 24

Slide 25

Slide 25

Slide 26

Slide 26

WHERE DO YOU SAVE YOUR DESIGN FILES? Ruters Dropbox My companys Dropbox My personal Dropbox Locally on my machine Google Drive External hard drive Ruters file server My companys file server Axure team-disk 0 2 5 7 9

Slide 27

Slide 27

TOOLS Abstract Sketch Libraries Sketch App

Slide 28

Slide 28

TOOLS React Sass

Slide 29

Slide 29

TOOLS React Lerna Sass Webpack Babel

Slide 30

Slide 30

Essentials

Slide 31

Slide 31

COLOR

Slide 32

Slide 32

COLORS

Slide 33

Slide 33

CSS Stats https://cssstats.com/

Slide 34

Slide 34

COLORS

Slide 35

Slide 35

Slide 36

Slide 36

DESIGN TOKENS

Slide 37

Slide 37

COLORS AS DESIGN TOKENS YAML COLOR_RED_10: “#A20000” COLOR_RED_20: “#B80000” COLOR_RED_30: “#D60606” COLOR_RED_40: “#E60000” COLOR_RED_50: “#EB3333” COLOR_RED_60: “#ED4D4D” COLOR_RED_70: “#F28181” COLOR_RED_80: “#F7B3B3” COLOR_RED_90: “#FACDCD” COLOR_RED_100: “#FDEBEB”

Slide 38

Slide 38

DESIGN TOKENS SCSS Design Decisions CSS JSON Web iOS YAML SWIFT XML UI Kit Android

Slide 39

Slide 39

COLORS AS DESIGN TOKENS YAML COLOR_RED_10: “#A20000” COLOR_RED_20: “#B80000” COLOR_RED_30: “#D60606” COLOR_RED_40: “#E60000” COLOR_RED_50: “#EB3333” COLOR_RED_60: “#ED4D4D” COLOR_RED_70: “#F28181” COLOR_RED_80: “#F7B3B3” COLOR_RED_90: “#FACDCD” COLOR_RED_100: “#FDEBEB” SCSS $colors-map: ( ‘color-red-10’: (#A20000), ‘color-red-20’: (#B80000), ‘color-red-30’: (#D60606), ‘color-red-40’: (#E60000), ‘color-red-50’: (#EB3333), ‘color-red-60’: (#ED4D4D), ‘color-red-70’: (#F28181), ‘color-red-80’: (#F7B3B3), ‘color-red-90’: (#FACDCD), ‘color-red-100’: (#FDEBEB) ); CSS :root { —color-red-10: #A20000; —color-red-20: #B80000; —color-red-30: #D60606; —color-red-40: #E60000; —color-red-50: #EB3333; —color-red-60: #ED4D4D; —color-red-70: #F28181; —color-red-80: #F7B3B3; —color-red-90: #FACDCD; —color-red-100: #FDEBEB; }

Slide 40

Slide 40

SPACING

Slide 41

Slide 41

Slide 42

Slide 42

Slide 43

Slide 43

SPACING NONE XXXS XXS XS S M L XL XXL XXXL

Slide 44

Slide 44

VS

Slide 45

Slide 45

Slide 46

Slide 46

.rds-mycomponent { @include p(spacing-m); } .rds-mycomponent { padding: 1.5rem; } /* 24px / .rds-mycomponent { @include pr(spacing-m); } .rds-mycomponent { padding-right: 1.5rem; } / 24px / .rds-mycomponent { @include my(spacing-xl); } .rds-mycomponent { margin-top: 3rem; margin-bottom: 3rem; } / 48px / / 48px */

Slide 47

Slide 47

<MyComponent className=”rds-p—xs”> My Component </MyComponent> <MyComponent className=”rds-p—xs rds-p—xl@l”> My Component </MyComponent>

Slide 48

Slide 48

SPACING AS DESIGN TOKENS YAML JSON { SPACING_NONE: ‘0px’ SPACING_XXXS: ‘2px’ SPACING_XXS: ‘4px’ SPACING_XS: ‘8px’ SPACING_S: ‘16px’ SPACING_M: ‘24px’ SPACING_L: ‘32px’ SPACING_XL: ‘48px’ SPACING_XXL: ‘64px’ SPACING_XXXL: ‘128px’ “SPACING_NONE”: “0px”, “SPACING_XXXS”: “2px”, “SPACING_XXS”: “4px”, “SPACING_XS”: “8px”, “SPACING_S”: “16px”, “SPACING_M”: “24px”, “SPACING_L”: “32px”, “SPACING_XL”: “48px”, “SPACING_XXL”: “64px”, “SPACING_XXXL”: “128px” } JS ARRAY module.exports = [ {key:’SPACING_NONE’, value:’0px’}, {key:’SPACING_XXXS’, value:’2px’}, {key:’SPACING_XXS’, value:’4px’}, {key:’SPACING_XS’, value:’8px’}, {key:’SPACING_S’, value:’16px’}, {key:’SPACING_M’, value:’24px’}, {key:’SPACING_L’, value:’32px’}, {key:’SPACING_XL’, value:’48px’}, {key:’SPACING_XXL’, value:’64px’}, {key:’SPACING_XXXL’, value:’128px’} ]

Slide 49

Slide 49

COMPONENTS

Slide 50

Slide 50

Slide 51

Slide 51

Block - Element - Modifier

Slide 52

Slide 52

Block - Element - Modifier

Slide 53

Slide 53

Slide 54

Slide 54

Slide 55

Slide 55

Slide 56

Slide 56

Slide 57

Slide 57

Team

Slide 58

Slide 58

DESIGN SYSTEM TEAM Christian Nordström Design Manager Ronny Siikaluoma Design System Lead Martin Dahl Frontend Developer Marte Mettenes Frontend Developer Maria Sætre Designer Ingrid Hagelund Designer Åse Lindersen Delivery Manager

Slide 59

Slide 59

DESIGN SYSTEM TEAM Christian Nordström Design Manager Ronny Siikaluoma Design System Lead Marte Mettenes Frontend Developer Ingrid Hagelund Designer

Slide 60

Slide 60

ORGANIZING THE TEAM Makers Users Customers

Slide 61

Slide 61

DESIGN SYSTEM TEAM

Slide 62

Slide 62

Takeaways

Slide 63

Slide 63

SHARE

Slide 64

Slide 64

PROTOTYPE

Slide 65

Slide 65

ASSIST

Slide 66

Slide 66

GET FEEDBACK

Slide 67

Slide 67

REACH OUT

Slide 68

Slide 68

Slide 69

Slide 69