PRODUCT CASE STUDY

Environmental Monitoring Solutions (Client-Side)

A cloud monitoring system that captures and displays environmental data from IoT endpoints installed in highly regulated industries.
2 previews of web app
2 screenshots of the app, 1 displaying the equipment monitoring page, and the other displaying a floorplan with a tooltip open on active alerts.

Project Summary

Details

Feb 2022 - July 2022
Browser-based web app
Figma, Zeplin, Miro, Loom
Distributed team

Background

It is critical that regulated industries such as healthcare and manufacturing meet certain requirements for their facilities. For example with vaccine storage, if the temperature rises above the acceptable range, this could result in vaccines losing potency. Monitoring variables such as temperature, humidity, and pressure is a long established requirement of regulated industries. But lack of visibility, clarity, and speed of response are ongoing major pain points, especially as these industries grow in scale and pace.

Dickson is an environmental monitoring company that produces IoT devices that collect and feed data to their cloud monitoring platform, DicksonOne. We partnered with them to build the original platform, and after a decade of mostly providing maintenance and small-scale improvements, we signed on to a new effort to expand the team and evolve the features. Our goal was to build features that provide users with greater flexibility and visibility, create feature parity with another product they recently acquired, and help modernize the front-end and user experience overall.

The Business Case

As a company, Dickson has historically operated within the US and is interested in expanding to a more international market. They recently acquired a competitor in France with a similar set of hardware and software products. In order to unify their portfolio and create a more cohesive experience for US- and Europe-based users, Dickson strives for feature parity between DicksonOne and the French product. Additionally, customer feedback has highlighted the need for greater flexibility and customization.

The features on our roadmap were fairly complex. In order to be successful, it was critical that I establish a design process that would suit this team. I experimented with different frameworks in order to build trust with the client, integrate the team, and elevate design as a practice.

Defining the Process

About 5 months full-time

Immersive Research

One of my go-to methods of familiarizing myself with a new industry is to conduct a deep dive into secondary research, and so I started with reading articles about calibration and monitoring. However, it quickly became clear that the calibration process remained an abstract, murky topic to me. This puts the success of the project at risk.

The client and I decided to invest in an onsite lab tour so that I could learn about the hardware in a more hands-on way and chat with their lab technician about calibration. Since I'm a visual and tactile person, this was very helpful for my understanding, and further helped to build trust with the client, who could see that I was invested in internalizing their business.

photos of hardware in lab
A gallery of 6 images of various types of hardware from the lab, including humidity chambers and calibration devices.

Design Process

As we worked together, I developed this design process:

  • The client wrote a PRD (product requirements document)
  • I scheduled a discussion with the client to go over the PRD together, during which I sketched and took notes
  • I started to design iteratively and involved the client, lead engineer, and delivery lead in reviews
  • Once finalized, I handed off designs on zeplin with annotations and a video demo on loom
  • The delivery lead went through my design deliverables and used those to draft stories in Pivotal
  • I reviewed the stories to make sure they accurately capture the design intent
  • The lead engineer facilitated storytime, during which the engineers would identify any conflicts or missing corner cases, and then the story was ready to build
design process
A screenshot of the design process documented in miro, which is paraphrased in the text above.
miro board of sketches and user flows
Screenshot of a working miro board, which displays a sticky note user flow on the left and hand-drawn wireframes on the right.
zeplin preview with annotationsemail of design handoff
(left) Screenshot of a design mockup in zeplin, with callouts on the mockup and full annotations on the right. (right) Screenshot of an email I sent with a list of links to video demos and designs in zeplin.

Iterating on the design process itself helped make the end designs more successful and expanded the influence of design on the team. As I got to understand my colleagues better, I made adjustments that would suit their working styles.

For example, the client was pretty conversational, so I eventually decided against planning an agenda and instead kept our PRD discussions pretty casual. And though I originally involved all engineers in design reviews, it became clear that most of them felt relatively neutral about most UX decisions and would rather spend that time coding, and so I only invited the lead engineer moving forward while keeping the rest of the team updated.

New Design System

To be honest, when I inherited this project, I found the visual design lacking in aesthetics, consistency, and usability. However, I endeavored to work within the existing front-end in order to minimize scope. This proved to be more difficult as we progressed, especially since the existing styles didn’t scale well to different scenarios.

As it turned out, the client was not satisfied with the existing visual design either, so I advocated for taking a sprint off from designing new features so that I could create the foundation of an improved design system.

notion planning board for new design system
Screenshot of a planning board in Notion, showing what tasks I worked on for the design system in a 1-week time frame.

I started from the ground up, redesigning the color scheme and typography without making too dramatic a departure, and then progressed through the atomic design model from simple to increasingly complex components. DicksonOne was also originally build on Bootstrap v3, and we opted away from migrating to a different framework due to time concerns. Therefore, I designed components that were closely aligned with Bootstrap conventions.

While establishing the new foundation, I embedded accessibility into the design system in a number of ways:

  • Using a gradient of color values (rather than picking a single color) so that we could combine light and dark values in accessible ways
  • Setting minimum color values and text sizes so that nothing would be too small or light to read
  • Creating a hierarchy of title text styles that wasn’t tied directly to h1-h6 levels, which provided flexibility for using different styles for different markup headings
color gradients of gray and bluemain color palette
(1) 2 color gradients (blue and grey) with different values extracted from the gradient to be used for different applications (borders, components, text, primary buttons, etc). (2) The primary color palette of the app, which consists of different values of grey, blue, red, amber, and green.
typography
Typography system with a range of titles, paragraph, inline, button, and label text styles.

This foundation was successful in setting us up for creating more cohesive designs and complex custom components later on.

new components and patterns
A collection of different components - on the left are buttons, links, and navigation items in default, hover, and focus states. On the right are custom components for equipment, floorplan, and show page headers.

Accessibility Testing

After front-end stories were implemented, I conducted design QA and accessibility testing. Though we have worked with this client for over a decade, accessibility was previously never integrated into the process in a holistic way. I conducted keyboard and screen reader tests, using analytics to guide my decision to use NVDA on Windows as the primary screen reader. In the review, I included resources to help explain the errors I found and how to address them.

Note - embedding accessibility into the design system and conducting continuous accessibility testing was effective. We also learned through this process that it's critical to write accessibility AC's and prioritize any accessibility issues found in testing to help the team focus. As a co-lead of the accessibility initiative, I am continuously finding ways to improve and influence our accessibility processes throughout the company.

The four new features I designed were user calibration, equipment, floorplans, and custom dashboard.

Feature Design

About 5 months full-time

Feature: User Calibration

Sophisticated customers need the ability to manage the calibration of their sensors in-house so that they can retain ownership of their system.

Dickson provides calibration as a service to their customers, which a process to ensure that the sensors are measuring data as expected (e.g. a thermometer that reads 62°F is accurate). If the sensors are not calibrated, this creates risk as the data is no longer reliable. Some larger, more technically robust customers have their own calibration resources in-house, and they would rather handle this process internally than have to rely on Dickson.

Users may have any number of sensors that need calibration, and it is possible that they are on different calibration cadences (6-month, 12-month, etc). I decided to use a wizard-like process that guides the user through the process - they start by entering information about a calibration batch, selecting sensors to include, providing data on the unit under test (the sensor they’re calibrating) and standard (the calibrated sensor they are using for comparison), finishing with a record of the batch and all changes made.

calibration page step 1 - informationcalibration process page 2 - selection
(left) Step 1 of the calibration process - information. This page contains a form with inputs to collect metadata about this calibration batch. (right) Step 2 of the calibration process - selection. This page contains a data table of channels that the user can filter and select to calibrate.
calibration process page 3 - input adjustment
Step 3 of the calibration process - adjustment. This page contains a left-hand navigation menu of channels, and for each channel the user can add readings from the standard and unit under test.
calibration page 4 - review
Step 4 of the calibration process - review. This page contains an overview of the information entered at the top, with a data table of channels, the entered readings, and adjustments supplied.

Feature: Equipment

Users desire a monitoring system that fits their mental model and focuses on the thing that is being monitored (equipment) rather than a piece of hardware installed (device).

Equipment was one of the features needed to achieve feature parity with the acquired French product. Previously in DicksonOne, users would navigate through their system by devices, which are IoT endpoints that stream data from the sensors to DicksonOne. While the devices provide a more direct connection to data, our theory is that equipment is more intuitive to users.

We designed equipment so that they could represent anything from a warehouse to a room’s ambience to a refrigerator. Users have flexibility in setting up their equipment and can connect them to any number of channels. Alarms (a legacy feature) can be applied to individual channels or the equipment overall. This means that the equipment monitoring widget needs to be scalable and include multiple alerting states.

I used my colleague’s design for the mobile app (created before I joined the engagement) as inspiration for a new monitoring widget. Knowing that not all our users are technically savvy and many of them are likely in high-stress working environments (e.g. healthcare workers) I designed a more friendly UI with wider margins, larger text, and icons and colors that would pop off the screen without creating unpleasant negative space. To help guide the experience, I used the CRUD framework (create, read, update, delete) to ensure we captured an end-to-end experience.

create equipment pageequipment alarms page
(left) Page to create a piece of equipment. Includes inputs for the equipment name, equipment type, location selection, and a searchbar to find and add channels. (right) The alarms page of a piece of equipment. This includes a weekly schedule showing what alarms are applied to what channel and a list of alarms below with information about the conditions, timing, and notification policy of that alarm.
monitor equipment page
Monitoring page for equipment. Page includes a grid of equipment monitoring widgets, which display the equipment name, type, links to its connected devices, and any number of channels with its current reading, channel type, and alerting status.

Feature: Floorplan

Users desire the ability to view their equipment and devices on a floorplan so that they can more easily locate anything that’s alerting and needs immediate attention.

The floorplan was another feature needed for parity with the acquired European product. If an endpoint is alerting, it might be difficult for the user to locate exactly where it is, especially if the monitoring system is installed on a large site. Being able to display where endpoints are installed in a visual way could provide a lot of value in an emergency.

The challenge here was that DicksonOne systems were already organized by location, which have a hierarchal relationship. With the way architects often provide deliverables, floorplans sometimes encompass an entire floor with multiple rooms. We also do not prescribe what a location entails, the user could name anything a location. In order to provide the needed flexibility here, we decided that locations and floorplans would have a many-to-many relationship, meaning one location may contain multiple floorplans and one floorplan may contain multiple locations. The user may navigate to the floorplan by navigating to the location, or to a page to monitor all floorplans in their account.

I designed an image upload modal and a simple map pin for multiple different types of assets and alerting states, with an expandable tooltip that contains details about alerts. Keeping the pin design as simple as possible will help in the case that a floorplan is covered in equipment and devices. Additionally, to accommodate keyboard accessibility, I designed different interactive states (default, hover, focus, active) and annotated the focus order for the different interactive components.

image upload modalmonitor floorplan page
(left) The image upload modal. This includes a drag and drop upload target and a list of files with success, error, and loading states. (right) The monitor floorplan page, which includes a dropdown to select the floorplan to view and an image with different pins. An alerting pin is active, with the expanded tooltip below displaying details on alerts.
floorplan keyboard behavior
An interaction behavior design spec. This specifies the different interactive states and keyboard and mouse behavior for the map pin.

Feature: Custom Dashboard

Users desire the ability to create a collection of data that is relevant to a specific audience so that they can quickly assess the status of a system and respond to anything urgent.

Today, there is a dashboard on the DicksonOne homepage that has somewhat questionable value. The client is not satisfied with the dashboard and analytics suggest that users often have a different page bookmarked (often the alerts or device monitoring pages). The client was somewhat resistant to invest heavily in user research, so we decided to work off their hypothesis that users would find value in creating a custom dashboard to suit their unique needs, with the suggestion that we seek feedback from users once we introduce the feature.

There are a few different use cases for how a dashboard may be used. Users can set a custom dashboard as their homepage or set it up on a TV display onsite. They may also send the dashboard to supervisors to make high-level assessments on the system, or to help sell the value of the Dickson system to a decision-maker. It was important that we support different sharing capabilities and a variety of different screen sizes.

The thing about dashboards is that they’re often surprisingly complex, and as we brainstormed, the scope of the dashboard quickly spiraled out of control. To reign it in, I created a user flow that brings the user through navigation, creation, editing, and sharing. During the editing phase, the user may add any number of widgets from any number of monitoring points (devices, equipment, locations, and channels). For MVP, we limited the number of widget types (we excluded the floorplan, firmware updates, and calibration widgets) and limited editing (we excluded different text styles and color modes). Limiting customization while also retaining the general user flow helped ensure the MVP would still deliver a holistic experience.

create custom dashboard pagecustom dashboard add widget page
(left) The create custom dashboard page. This includes inputs for the name, size, orientation, and other dashboard properties. (right) The add widget page. this includes a selection for monitoring point type at the top, 2 different display options, and a searchbar below where the user can search for the specific monitoring point to add.
custom dashboard design printouts on wall
A photo of 3 printouts of widget designs taped to the wall.

To account for the scenario of displaying a dashboard on a TV display, I created some size tests and printed out the widgets at scale so that I could take a look at them from 5 ft, 10 ft, and 20 ft away. I suggested more dramatic color-blocking in red and amber to help grab users’ attention, which is a noticeable departure from our more subtle color accents in other areas of the app. Nevertheless, visibility is more critical than consistency in this use case.

For future versions, we imagined expanding the number of widget types and providing customization options for different text sizes, styles, and data displays. Having a scalable UI that can accommodate these feature enhancements in the future was important. To help envision where we were headed, I collaborated with the client on a basic roadmap (now, next, and later). I used the agreed-upon priority to create different design versions to help illustrate how the feature might evolve over time.

custom dashboard roadmap
The now, next, later priority timeline for the custom dashboard. Each column contains different feature enhancements.

My Impact

At the time that I'm writing this case study, most of these features are still in the process of being implemented. However, speaking to the impact on our business, the success of my work expanded the client's understanding of the role of design on a project. This paved the way for the client to find new opportunities for us to work on, emphasizing the importance of my role on the team.

Reflection

screenshots of wireframe thumbnails
4 screenshots, all of a zoomed-out view of a collection of wireframes in Figma for the 4 different features I designed.

This was a very rewarding experience. The team culture was collaborative, respectful, and invested in building a quality product together and the client had a strong vision for their product and was experienced in agile. I learned many things from this experience, including:

  • There’s no need to rush through a design. Take the time to gather feedback from different stakeholders and take a break from my own work to come back with a fresh perspective.
  • Conducting accessibility testing is critical, but expecting the team to fix all accessibility errors found is unrealistic. Training and prioritization is needed.
  • Don’t expect people to read my emails. If the design has changed, update the ticket.