{"id":1642,"date":"2016-05-04T16:35:30","date_gmt":"2016-05-04T16:35:30","guid":{"rendered":"https:\/\/marvel7077.wpengine.com\/?p=1642"},"modified":"2020-12-14T11:08:59","modified_gmt":"2020-12-14T11:08:59","slug":"the-marvel-styleguide","status":"publish","type":"post","link":"https:\/\/marvelapp.com\/blog\/the-marvel-styleguide\/","title":{"rendered":"How and why we built the Marvel Styleguide"},"content":{"rendered":"<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">After I joined Marvel in August last year, the first project I worked on was our new styleguide. At that time, Marvel was doing a lot of things well. The brand was fun, the UI was simple, colors were bright and animations were snappy. There was a lot to love. But as Marvel continues to grow, both as a product and a company, one challenge we are faced with is learning how to refine Marvel\u2019s identity and apply it cohesively to each of our products in such a way that everyone on the team has a similar understanding of how Marvel should look, feel and function.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">We needed <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/marvelapp.com\/styleguide\" target=\"_blank\" rel=\"noopener noreferrer\">Marvel\u00a0Styleguide<\/a> to act as a central hub where we could house a live inventory of UI components, design patterns, brand assets, code snippets, developer guidelines and anything else associated with Marvel\u2019s identity.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Before we started, we sat down to figure out which\u00a0problems we were trying to solve and what we wanted to achieve. We set ourselves five specific goals:<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><\/p>\n<h3 class=\"pageWrap pageWrap--s marginTop-l marginBottom-m c-black lineHeight-xl fontSize-xl fontWeight-5\">#1 Create a cohesive design language<\/h3>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Marvel\u2019s brand identity has always been on point. One of the keys to\u00a0Marvel\u2019s success is its friendly, fun and inviting brand. But for all its playfulness, one important factor was lacking; consistency.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Our first task was to take a full inventory of all of the styles that made up Marvel. Not just UI components, but every single color, font size, shadow....everything. As we combed through the product in detail, what we found was not too\u00a0surprising.\u00a0Minor inconsistencies began to crop up all over the place.<\/p>\n<ul class=\"pageWrap pageWrap--s list list--unordered marginBottom-l lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">\n<li>Identical components were implemented inconsistently.<\/li>\n<li>Colors were not balanced properly.<\/li>\n<li>Transition durations were set seemingly at random.<\/li>\n<li>There were almost 100 unique font sizes.<\/li>\n<li>We counted 18 slightly different shades of the same gray.<\/li>\n<li>Lots of CSS was either duplicated or unused.<\/li>\n<\/ul>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Overall, too many things seemed random. Not enough things seemed intended. There was no sense of order, no sign of a design system at play.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">So after we had taken\u00a0an inventory of all the styles used, we gave each one a name and a purpose. Every color was given a meaning. Every shadow was assigned a particular task. Every font size adhered to a predefined scale. Any style that didn't have a distinct purpose was removed.\u00a0Once we settled on a set of core styles, we stripped away everything else, then defined a set of single-purpose CSS classes, one for each\u00a0style.<\/p>\n<aside class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s\">\n<pre style=\"line-height: 1.8;\"><code class=\"language-css\">\/* Font sizes *\/\r\n.fontSize-xxl\u00a0{ font-size: 40px; }\r\n.fontSize-xl\u00a0 { font-size: 28px; }\r\n.fontSize-l   { font-size: 20px; }\r\n.fontSize-m   { font-size: 16px; }\r\n.fontSize-s   { font-size: 14px; }\r\n.fontSize-xs  { font-size: 12px; }\r\n.fontSize-xxs { font-size: 10px; }<\/code><\/pre>\n<\/aside>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Then we began the rage-inducing task of rebuilding each of our UI components, one at a time, from the ground up.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><\/p>\n<h3 class=\"pageWrap pageWrap--s marginTop-l marginBottom-m c-black lineHeight-xl fontSize-xl fontWeight-5\">#2 Build a platform-agnostic system<\/h3>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">The design inconsistencies I mentioned above carried over into the codebase too. Identical UI components were duplicated in code. Colors were defined multiple times. All of this duplication had a negative impact on performance.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">So, when rebuilding the UI components, it was important that we kept everything cohesive. We needed to make sure to only use the styles we had predefined. To do that, we used Sass extend function to build out the components by reusing the single-purpose CSS classes.<\/p>\n<aside class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s\">\n<pre style=\"line-height: 1.8;\"><code class=\"language-css\">\/* Button component *\/\r\n.button {\r\n    @extend .display-inlineBlock;\r\n    @extend .borderWidth-0;\r\n    @extend .appearance-none;\r\n    @extend .whiteSpace-noWrap;\r\n    @extend .verticalAlign-middle;\r\n    @extend .outlineStyle-none;\r\n    @extend .cursor-pointer;\r\n    @extend .userSelect-none;\r\n    @extend .textDecoration-none;\r\n    @extend .fontWeight-4;\r\n    @extend .transitionProperty-all;\r\n    @extend .transitionDuration-s;\r\n    @extend .transitionTimingFunction-linear;\r\n}<\/code><\/pre>\n<\/aside>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">This approach provided a number of benefits. It allowed us to keep all the styles consistent across the entire app. It enabled us to get CSS duplication down to zero, since each style is declared once and once only.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">However, just rebuilding the front-end in a more DRY (Don't repeat yourself) way wasn't going to solve all of our problems. The biggest problem with the old method, was that styles were typically encapsulated in page sections rather than reusable components. There were more child selectors than I'm comfortable dealing with and namespace classes were not uncommon. At that point, Marvel was growing pretty quickly and the team was expanding. We had iOS and Android apps to consider. There was also the new Canvas iOS app to contend with. Different teams not only had different design problems, but different programming languages were being used too. The old front-end approach would result in uncontrollable bloat if we didn't find a better solution. We needed to come up with a way to keep our design language consistent across all our different platforms and devices, without duplicating code.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">So, we decided to move our styleguide to its own separate repository. We packaged it up as an NPM module which trickles down to each of our products. Going forward, any future updates to the styleguide will be submitted directly to the styleguide repository, documented, then updated across the Marvel platform.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><\/p>\n<h3 class=\"pageWrap pageWrap--s marginTop-l marginBottom-m c-black lineHeight-xl fontSize-xl fontWeight-5\">#3 Improve cross-team communication<\/h3>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">One of the most interruptive problems I\u2019ve experienced at pretty much every tech company I\u2019ve worked with is poor internal communication, particularly between designers and developers.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">The typical workflow I've observed in a lot of tech companies involves a lot of unnecessary back and forth between teams. So much time is wasted on things like setting animation parameters, arguing over box shadow values, documenting colors and other trivial tasks.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Now that Marvel utilises a global styleguide, we no longer need to maintain high-quality assets. We no longer need to produce hi-fidelity mocks. A designer can simply whack together a UI using whatever colors, fonts, assets or software they have readily available. Accuracy is not important because the developer will override everything in the mock, choosing the closest match from the styleguide in each case. In some cases, all that\u2019s needed is a spec sheet written in a Google Doc.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">By abstracting away the visual layer, developers can churn out UIs with minimal design input. In some cases, the design team doesn\u2019t even need to be involved. This really starts to blur the line between designers and developers, taking the focus away from visuals and placing it where it belongs, on content, copywriting and user flows.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><\/p>\n<h3 class=\"pageWrap pageWrap--s marginTop-l marginBottom-m c-black lineHeight-xl fontSize-xl fontWeight-5\">#4 Encourage change<\/h3>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Most good designers I know share a common urge to put things right. This can be frustrating when you join a company that has already established a brand identity. As with most brand identities, there\u2019s usually a lot of room for improvement but you can sometimes feel like you don\u2019t have a voice. Often times, this comes down to inexperienced, over-zealous designers not understanding the full complexity of a product. But it\u2019s not uncommon for companies to inadvertently discourage change.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">I\u2019ve worked on projects where I didn\u2019t feel invested because product ownership was limited to a select few people. I\u2019ve seen good suggestions from new designers get shelved because whoever had been assigned ownership was busy on something else. Tweaking designs is often discouraged because nobody is really sure which areas of the codebase might be accidentally affected by the update. When products are not designed systematically, different segments are often siloed and unconnected -- making them inaccessible to most of the team.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Having a global styleguide which is\u00a0abstracted away from our\u00a0core product, provides an accessible avenue for anyone at Marvel to voice their opinion. We want to encourage everyone at Marvel to contribute to our product regardless of their skillset. If you\u2019re comfortable with code, you can jump in and make your changes, then submit a pull request and start a discussion (fight). If you don\u2019t work with code, you can open an issue, upload some mocks\/docs, then get a debate going.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">One useful artefact of this approach is that we automatically start compiling a rich history of pull requests, issues, debates, mockups and documents that we can reference later. As teams scale, a lot of time can be wasted as new employees attempt to work on ideas which have already been explored. By encouraging all design work to be submitted through the same avenues, we keep the whole team updated on where the product has been and in which direction it\u2019s headed.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><\/p>\n<h3 class=\"pageWrap pageWrap--s marginTop-l marginBottom-m c-black lineHeight-xl fontSize-xl fontWeight-5\">#5 Encourage solid reasoning<\/h3>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">One of the most attractive aspects of design is the sense of freedom it offers. To a designer, there\u2019s something exciting about a blank canvas -- ultimate creative freedom. But the reality is, when it comes to design systems, creativity and freedom are just not that important. Noodling about in Sketch might appeal to a designer's\u00a0creative needs but it\u2019s not at all conducive to a performant, cohesive web product.<\/p>\n<blockquote class=\"pageWrap pageWrap--s position-relative marginTopBottom-l breakPointM-marginTopBottom-xl\"><div class=\"blog-quote-before position-absolute bg-marvel\"><\/div><div class=\"tweet-quote blog-quote-after position-absolute bg-marvel cursor-pointer transitionDuration-l transitionProperty-all transitionTimingFunction-cv-easeOutCircular scaleUp--hover zi-weak\"><svg class=\"fill-white opacity-0 pointerEvents-none position-absolute pinCenter transitionProperty-all transitionTimingFunction-easeInOut\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"20\" viewBox=\"0 0 24 20\"><path d=\"M24,2.37a9.64,9.64,0,0,1-2.83.79A5,5,0,0,0,23.34.37a9.72,9.72,0,0,1-3.13,1.23A4.86,4.86,0,0,0,16.62,0a5,5,0,0,0-4.8,6.2A13.87,13.87,0,0,1,1.67.92,5.13,5.13,0,0,0,3.19,7.67,4.81,4.81,0,0,1,1,7a5,5,0,0,0,3.95,5,4.82,4.82,0,0,1-2.22.09,4.94,4.94,0,0,0,4.6,3.51A9.72,9.72,0,0,1,0,17.73,13.69,13.69,0,0,0,7.55,20c9.14,0,14.31-7.92,14-15A10.17,10.17,0,0,0,24,2.37Z\"\/><\/svg><\/div><p class=\"blog-quote position-relative textAlign-center c-marvel\"><span class=\"blog-quote-text transitionDuration-l transitionProperty-all transitionTimingFunction-easeInOut\">Design is just problem solving within a set of constraints. In the grand scheme of things, it rarely has anything to do with graphics.<\/p><\/span><\/blockquote>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">One problem with most current\u00a0design tools is that they're too decoupled from the actual live product you're working on. When you have an infinite array of possible values to choose from for any given style property, it's too easy to get lost in creativity and lose focus. To quote <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/twitter.com\/mrmrs_\" target=\"_blank\" rel=\"noopener noreferrer\">Adam Morse<\/a>, one of the best designers I know, \"Design is just problem solving within a set of constraints. In the grand scheme of things it rarely has to do with graphics.\" When you strip away the visual layer, what you're left with is the core design, the inner workings of a product.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Working from a styleguide does just that. It forces you to stop thinking about form and focus on function.\u00a0To a lot of designers, the <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/marvelapp.com\/blog\/designers-guide-git\/\">git-based workflow<\/a> I outlined above might feel like an unnecessary hurdle. It may feel like it's forcing you down a specific funnel and restricting your freedom. But actually, this approach doesn\u2019t curtail your freedom at all. It just forces you to think about what you\u2019re doing and why you\u2019re doing it. It forces you to communicate your reasoning to your team members. It opens your work up to criticism and exposes flaws in your designs. It helps you understand the full impact of your design suggestions and encourages you to consider all edge cases.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Trust me, when you know that the slightest tweak will bubble across your entire suite of products, you think twice before you bump up dat font by a few pixels. And that's a good thing. You learn to think in terms of systems instead of pages. You learn to work iteratively. You learn to communicate better with your team.\u00a0You learn to turn instinct into reasoning.<\/p>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><\/p>\n<h3 class=\"pageWrap pageWrap--s marginTop-l marginBottom-m c-black lineHeight-xl fontSize-xl fontWeight-5\">So what\u2019s next?<\/h3>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">Right now, our styleguide is very much in flux. As we continue to refine Marvel's brand identity, we will continue to update our styleguide. So a project of this nature will always be a work in progress. It's early days though, so we have a lot of exciting updates planned soon:<\/p>\n<ul class=\"pageWrap pageWrap--s list list--unordered marginBottom-l lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\">\n<li>Our icons are cobbled together from various icon sets that we have tweaked to fit. As a result, they lack consistency. So we're planning to design our own custom set\u00a0to\u00a0reflect Marvel's look and feel more accurately.<\/li>\n<li>We're in the process of rewriting our entire front-end in React. So to coincide with that, we're also going to start rewriting the entire styleguide in React. Among other things, this will help cut down on a lot of the CSS class repetition in our views by abstracting them into the component layer.<\/li>\n<li>At the moment, our mobile apps are built on other programming languages like Swift.\u00a0We're toying with the idea of moving to React Native, which would\u00a0allow to use a shared codebase. It would also open up the door for a native OSX version of Marvel Canvas, using React Native Desktop - if we wanted\u00a0to go down that path.<\/li>\n<li>The core of our\u00a0styleguide is built on top of <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/github.com\/colmtuite\/bantamcss\" target=\"_blank\" rel=\"noopener noreferrer\">BantamCSS<\/a>\u00a0- a CSS framework I created (...look how that worked out)\u00a0a while back. Right now the framework is integrated directly into our codebase, along with other third party tools like Nicolas Gallagher's <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/necolas.github.io\/normalize.css\/\" target=\"_blank\" rel=\"noopener noreferrer\">Normalise.css<\/a>. We're planning to split the styleguide up into smaller parts and pull these frameworks in via NPM, so we can take advantage of future updates.<\/li>\n<li>After we have split the styleguide up into a more organised fashion, we're going to open-source it. <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/marvelapp.com\/styleguide\" target=\"_blank\" rel=\"noopener noreferrer\">Marvel Styleguide<\/a>\u00a0will be free to use for anyone interested. We will also continue to support the OSS it's built on.<\/li>\n<\/ul>\n<p class=\"pageWrap pageWrap--s marginBottom-m paddingBottom-s c-slate lineHeight-l fontSize-l fontWeight-3 breakPointM-fontSize-xl breakPointM-lineHeight-xl\"><em>Want to join the design and engineering team? Check out our <a class=\"link link--blue fontWeight-4\"href=\"https:\/\/marvel.workable.com\">jobs page<\/a>.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>After I joined Marvel in August last year, the first project I worked on was our new styleguide. At that time, Marvel was doing a lot of things well. The brand was fun, the UI was simple, colors were bright and animations were snappy. There was a lot to love. But as Marvel continues to grow, both as a product&#8230; <a class=\"link link--blue fontWeight-4\" href=\"https:\/\/marvelapp.com\/blog\/the-marvel-styleguide\/\">Read More &#65515;<\/a><\/p>\n","protected":false},"author":4,"featured_media":1652,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-1642","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engineering"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/marvelapp.com\/blog\/the-marvel-styleguide\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How and why we built the Marvel Styleguide | Marvel Blog\" \/>\n<meta property=\"og:description\" content=\"After I joined Marvel in August last year, the first project I worked on was our new styleguide. At that time, Marvel was doing a lot of things well. The brand was fun, the UI was simple, colors were bright and animations were snappy. There was a lot to love. But as Marvel continues to grow, both as a product... Read More &#65515;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/marvelapp.com\/blog\/the-marvel-styleguide\/\" \/>\n<meta property=\"og:site_name\" content=\"Marvel Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/marvelapp\" \/>\n<meta property=\"article:published_time\" content=\"2016-05-04T16:35:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-14T11:08:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/05\/marvel-styleguide.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"1147\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@marvelapp\" \/>\n<meta name=\"twitter:site\" content=\"@marvelapp\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"8 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/marvelapp.com\/blog\/#organization\",\"name\":\"Marvel\",\"url\":\"https:\/\/marvelapp.com\/blog\/\",\"sameAs\":[\"https:\/\/www.facebook.com\/marvelapp\",\"https:\/\/www.instagram.com\/marvelapp\/\",\"https:\/\/www.linkedin.com\/company\/marvel-app\/\",\"https:\/\/twitter.com\/marvelapp\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/marvelapp.com\/blog\/#logo\",\"inLanguage\":\"en-GB\",\"url\":\"https:\/\/marvelapp.com\/wp-content\/uploads\/2018\/06\/Logo-Light.png\",\"width\":1605,\"height\":1130,\"caption\":\"Marvel\"},\"image\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/marvelapp.com\/blog\/#website\",\"url\":\"https:\/\/marvelapp.com\/blog\/\",\"name\":\"Marvel Blog\",\"description\":\"Ideas and words on user experience, design, collaboration and more\",\"publisher\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/marvelapp.com\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-GB\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/marvelapp.com\/blog\/the-marvel-styleguide\/#primaryimage\",\"inLanguage\":\"en-GB\",\"url\":\"https:\/\/marvelapp.com\/wp-content\/uploads\/2016\/05\/marvel-styleguide.jpg\",\"width\":1600,\"height\":1147,\"caption\":\"marvel-styleguide\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/marvelapp.com\/blog\/the-marvel-styleguide\/#webpage\",\"url\":\"https:\/\/marvelapp.com\/blog\/the-marvel-styleguide\/\",\"name\":\"How and why we built the Marvel Styleguide | Marvel Blog\",\"isPartOf\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/the-marvel-styleguide\/#primaryimage\"},\"datePublished\":\"2016-05-04T16:35:30+00:00\",\"dateModified\":\"2020-12-14T11:08:59+00:00\",\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/marvelapp.com\/blog\/the-marvel-styleguide\/\"]}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/marvelapp.com\/blog\/the-marvel-styleguide\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/the-marvel-styleguide\/#webpage\"},\"author\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/#\/schema\/person\/cd13ef35fb8a57170684a965549bc7ca\"},\"headline\":\"How and why we built the Marvel Styleguide\",\"datePublished\":\"2016-05-04T16:35:30+00:00\",\"dateModified\":\"2020-12-14T11:08:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/the-marvel-styleguide\/#webpage\"},\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/marvelapp.com\/blog\/the-marvel-styleguide\/#primaryimage\"},\"articleSection\":\"Small Ships\",\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/marvelapp.com\/blog\/the-marvel-styleguide\/#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/marvelapp.com\/blog\/#\/schema\/person\/cd13ef35fb8a57170684a965549bc7ca\",\"name\":\"Colm Tuite\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/marvelapp.com\/blog\/#personlogo\",\"inLanguage\":\"en-GB\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/780a1899e0ea31f7742e46cee8e8b7c7568b04a5768ef6221ea579ed169799dc?s=96&d=mm&r=g\",\"caption\":\"Colm Tuite\"},\"description\":\"Hey, I design and code things at Marvel. Occasionally, I write blog posts like the one you just read.\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/posts\/1642","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/comments?post=1642"}],"version-history":[{"count":0,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/posts\/1642\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/media\/1652"}],"wp:attachment":[{"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/media?parent=1642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/categories?post=1642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/marvelapp.com\/blog\/wp-json\/wp\/v2\/tags?post=1642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}