Experience Design Gral. Architecture Repo. v2.0

Improving company-wide efficiency and reducing chaos by with a meticulous file structure supported by OOP principles.
Table of Contents

Outcome

With this design system, I was able to bring order to the chaos that existed in the company with the design specification, versioning, and sources of truth. The developers found it handy and useful, and it setup the foundation for developing components.

Files Structure

The Design System I set up in Autotrader and Carsguide was a revised version on the Design System I did in News Corp, which I call Experience Design General Architecture Repository. This one had 5 library files and several wireframe files:

  • 📕 Styles.sketch
  • 📕 Assets.sketch
  • 📗 Elements.sketch
  • 📘 Blueprints.sketch
  • 📙 Components.sketch
  • T-S Name.sketch (Wireframe files)
This diagram attempts to explain how files are interconnected between them.

Styles

The most elemental file in the design system is the 📕Styles.sketch file. This file could even potentially have no artboards inside (however they are useful as a display of all the styles included in the file). The Styles.sketch is directly connected to Assets.sketch and Elements.sketch which helps icons and shapes in the design system to use the styles in them.

A preview of all layer styles included in this file

A preview of all font styles included in this file

A preview of all font styles included in this file.

Assets

There are two kinds of pages in 📕Assets.sketch. Icons and Images. For example. Autotrader's File was organised in four different pages:

  • Icons
  • Cars
  • Logos
  • Ads
A page inside the assets file with car photos in different sizes.

A page inside the assets file with ads of different sizes.

A page within the assets file with icons and badges.

Elements

Elements.sketch is where the magic starts happening. It inherits 📗Styles.sketch and has access 📕Assets.sketch. And it contains basic shapes like:

Squared, semi-rounded and rounded

  • Fills
  • Borders
  • Shadows

And also

  • Label placeholders
  • Icon placeholders
  • Label + Icon placeholders

Each artboard is pretty atomic; they contain typically one layer only. These will become the layers included in blueprints.

Blueprints

Think of 📘Blueprints.sketch as an abstract version of whatever element you want to display in your designs. For example a button. A button may have a shadow or not. The shadow itself doesn't prevent the button to be a button. But for flexibility we create the component with that option. Designing for it in advance. For example. A blueprint in the design system typically has some of the following layers:

  • State placeholder (hover, pressed, normal, etc.)
  • Label placeholder
  • Icon placeholder
  • Border placeholder
  • Inner shadow placeholder
  • Background Image placeholder
  • Fill placeholder
  • Button shadow placeholder

To see more on how Blueprints work, jump to the Abstraction section below.

A pretty minimal Blueprint structure. You don't need a lot of blue prints to create a design system. This is magically time-saving.

All placeholder layers in this file are symbols imported from Elements.sketch, and styles of course are inherited from 📕Styles.sketch through 📗Elements.sketch.

Components (or Implemented Blueprints)

📙Components.sketch is maybe what would typically resemble any other design system. It can for example contain a collection of buttons of different colours that are hollow or filled. All these buttons are a configured version of the button symbol in 📘Blueprints.sketch. And they are also symbolised for easy access by the wireframes.

This file can become big. So it is up to the discretion of the reader whether to split this file into multiple pages for the purpose of getting it organised.

T-S Name Files (Wireframes)

Wireframes for the purpose of this story are other files that use the design system file structure above. But conveniently, this design system is organised in such a way that the design system only inherit directly 📕Assets.sketch, 📕Styles.sketch and 📙Components.sketch for optimised consistency.

File Naming Convention

If you have been reading this portfolio, you will know that I'm a huge fan of User Story Mapping. In Design Operations I describe how I use the Story Map to track design system coverage. In Autotrader however, I actually created the system after the Story Map, which resulted in a really easy way to organise my files.

In a nutshell it is a sequence of two numbers divided by a dash T-S, where T are the Tasks and S the Steps in sequence in the Story Map.

Having agreed on a file structure and naming convention allows everyone to be on the same page at the time of finding where is what.

Inside Page Structure

When breaking down interfaces into Tasks and Steps is not enough, or when the files have a specific element that changes from state, I used pages inside the file to split it further.

One of the steps contained a wizard in step 4.4 and we used pages to help us organise the multiple substeps without cluttering the files.
This file had an car ad that could have multiple stages: submitted, in-review, approved, declined, etc.

Page Artboard Structure

For cleanliness, organisation and my stakeholder's sanity I try to have only one artboard per breakpoint page in Sketch (unless it is the symbols or the states page).

📄4-1 Sell My Car.sketch has only two pages: Sell My Car, and Symbols. The Sell My Car page has two artboards only, one for each one of the different breakpoint sizes.

Versioning

To collaborate with my stakeholders and my two designers, I used Sketch and Abstract as my source of truth.

Shared Principles and Benefits with Object Oriented Programming

Inheritance

In an ideal world we could see it as: T-S Name.sketch (Wireframes) files inherit from 📙Components.sketch and 📕Assets.sketch, 📙Components.sketch from 📘Blueprints.sketch, 📘Blueprints.sketch from 📗Elements.sketchand 📗Elements.sketch and 📕Assets.sketch from 📕Styles.sketch. (Note that Sketch today doesn’t allow for selective inheritance).

This structure helps keeping the system minimal and really well organised.

Encapsulation

This layered structure also allows for encapsulation and suggests T-S Name.sketch (Wireframes)  should only deal with 📙Components.sketch and 📕Assets.sketch, ensuring components are used in the way they were designed to be used.

Abstraction

A blueprint is an abstraction of a component (i.e. a button), this is, a generic component that can be repurposed in multiple ways. The blueprint layers of a button, is a series of (symbol) elements layered on top of each other as described below.

Blueprint of a button in the 📘Blueprints.sketch file. Each placeholder can draw from the respective pool of elements in the 📗Elements.sketch file.
The 📗Elements.sketch file. An item from each row can be inserted in the respective layer in the 📘Blueprints.sketchfile. Colours are also inherited from 📕Styles.sketch.

For example, using the blueprint above and different elements, I could easily create different buttons like the ones below.

All three buttons are using the same blueprint or layer structure. This is quite convenient as it reduces margin of error and the working set of symbols in the design system.

At the component level, the blueprint structure is obfuscated to allow only for relevant overrides to be used (i.e. label and border or background colour are the only overrides available for these components).

Polymorphism

Polymorphism is definitely there. Since component families use the same blue-print, you can easily change say from a red round button with a centred icon to a green rounded square button with an icon and text.

Next Steps

One of the downsides of this file structure is that you need to cascade update a change in the deeper files of the design system in order to be materialised in the wireframe files. To efficientise this effort, I've been thinking on reducing the number of files in the system. For example 📕Styles.sketch and 📕Assets.sketch could easily exist in the same file, and maybe even📗Elements.sketch.

This design system has only been designed to work in Sketch. So I'm going to start looking into making these concepts available as well in Figma and Maybe Adobe XD in the near future.

No items found.

Reach out

Edgar Anzaldúa-Moreno
Design thinker especialising in Design Strategy, User Research, Service and Product Design based in Sydney, NSW.
This portfolio showcases my individual contributions to projects and includes both original content and designs developed by me in from 2015 to 2024. Copyright © 2024 Edgar Anzaldua-Moreno. All Rights Reserved. Wherever company-specific designs are featured, such designs remain the intellectual property of their respective companies and are displayed here solely for the purpose of demonstrating my professional experience and skills. This portfolio is intended for demonstration purposes only and does not imply ownership of company copyrighted designs.