Andre Ortiz
Product Design, Strategy & Systems.
UI, Design Systems, Tooling, & Teams

UI, Design Systems, Tooling, & Teams

Discover how I have developed wonderful experiences that serve teams and customers.

UI Design

There are a number of things I like to consider when designing interfaces:

  • User needs and goals - Begin with understanding who will use your interface and what they want to accomplish.
  • Information architecture - Plan how information will be organized and structured
  • Visual hierarchy - Design elements to naturally guide users’ attention
  • Consistency - Use consistent patterns, components, colors, and typography throughout to create a cohesive experience
  • Accessibility - Ensure your design works for people with different abilities by considering color contrast, text size
  • Feedback Mechanisms - Make it clear what elements are interactive and provide appropriate feedback when users take actions
  • Simplicity - Eliminate unnecessary elements and reduce cognitive load

The Trifecta

There are some trios that will forever remain iconic. When it comes to a product teams, the lead designer, product manager, and lead engineer should operate as a unit… a Trifecta, if you will. When these 3 disciplines work well together and have tight communication and trust, the outcomes are 10x improved.

iconic-trios

Design at Scale

As my projects grows, I like to start componentizing elements I know will be reused. Since I’m using Figma, creating components and variants have become a big part of my workflow. This is especially helpful when I’m working with other designers. It doesn’t take long before you’ve got a UI Kit of Figma components you can share with the team and improve over time. Learn more about my process.

login
xtrem
kongo
uikit
fin

Level Up: Design to Code

Figma’s plugin ecosystem is great. One plugin I’ve had some success with is Export/Import Variables. I use this plugin to export my Figma variables to a JSON file:

// Example output color

{
  "id": "VariableID:2:11",
  "name": "Red/9",
  "description": "",
  "type": "COLOR",
  "valuesByMode": {
    "2:0": {
      "r": 0.8980392217636108,
      "g": 0.2823529541492462,
      "b": 0.3019607961177826,
      "a": 1
    },
    "2:1": {
      "r": 0.8980392217636108,
      "g": 0.2823529541492462,
      "b": 0.3019607961177826,
      "a": 1
    }
  }
},
... more

Style Dictionary

Once I have the artifacts I want to tokenize, I use the Style Dictionary library to convert my JSON into a format I can use during development. In the example below, I create 2 files: a tokens.css file with all my variables and a custom tailwind config.

// Example Style Dictionary manifest
{
  "source": ["./tokendata/**/*.json"],
  "platforms": {
    "tokenlib": {
      "transformGroup": "custom/group",
      "buildPath": "./dist/",
      "files": [
        {
          "destination": "tokens.css",
          "format": "custom/css/theme"
        },
        {
          "destination": "tailwind.custom.js",
          "format": "custom/tailwind"
        }
      ]
    },
  }
}
/* Style Dictionary CSS Output */

@media (prefers-color-scheme: light) {
  :root {
    --red-1: rgba(255, 252, 252, 1);
    --red-2: rgba(255, 248, 248, 1);
    --red-3: rgba(255, 239, 239, 1);
    ...;
  }
}

@media (prefers-color-scheme: dark) {
  :root {
    --red-1: rgba(31, 19, 21, 1);
    --red-2: rgba(41, 20, 21, 1);
    --red-3: rgba(60, 24, 26, 1);
    ...;
  }
}