Combining 3 apps into 1 with Allovue

Project Overview

Context

Allovue is an education finance software designed for school districts to make budgeting, allocating, and managing resources equitable and efficient. I worked on a design system to unify its three main apps (Balance, Allocate, and Manage), as well as design refreshes for each app’s core features.

Involvement

  • Product design
  • Development (Elixir, Phoenix, JS)
  • Illustration

Date

2021 – Present

Staffing page in app, showing a financial data table with expandable rows and nested tables. Above the table is a widget with a progress bar showing the amount of filled vs. vacant positions for staff.
CaptionAll Positions: table with group-by functionality and subtable

Design audit

Originally, Allovue was comprised of three distinct apps: Balance, Allocate, and Manage. Each had its own codebase, design language, and set of UX patterns which needed to be brought together.

Three browser windows containing screenshots from each application, with tooltips pointing to different UI elements that ask about the accessibility or usefulness of the element.

Gathering our starting point(s)

One of our main goals was providing a seamless experience for the growing amount of users engaging with multiple apps.

Steps for assessing our current design language:

  • Identify key personas and workflows
    • what roles are using each app?
    • how are they using each app in their daily workflow?
  • Establish design goals
    • what are our design pillars — for the team, and for the app?
    • what standards of accessibility are we trying to meet?
  • Catalogue design choices and patterns
    • what design rules have we implemented?
    • what patterns should we keep or avoid?
Shows three icon groupings with distinct visual styles, with information about their different base sizes, line weights, and other stylistic design rules
CaptionIcon audit: taking a look at the different design rules that each app’s icon system uses

Accessible, modern component library

As we worked on unifying the design language, we made sure to build in accessibility to our process — from defining tokens, components, and patterns in Figma to writing robust, semantically-correct web components for use in-app.

Example dropdown, breadcrumb, and button components with documentation markers and notes

Developing a design system

Rather than reinvent the wheel, we looked to other folks’ resources on managing and maintaining design systems for multiple applications — including the Design Systems Repo, The Design System Guide, Brad Frost’s Atomic Design, and the Figma design systems community.

Collage of design system elements, including color palette, typography scale, spacing values, icons, charts, and alerts
CaptionExamples from the unified design system
Figma documentation for table cell types, including variants for text, descriptions, links, and other UI
CaptionTables: cell types and use cases
Figma documentation for table header sorting pattern, showing differences in icon states
CaptionTables: header sorting pattern

Some illustration, as a treat.

Listen: sometimes, designers can have a little treat. I firmly stand by that. While working on the refresh, I got to add some fun spot illustrations to explain budgeting and education-related concepts to users. Pictured below are some examples.

Collection of 2d vector illustrations floating on a dark background; the illustrations depict themes surrounding financial, educational, and HR-related elements

Refreshing our patterns

As we worked on unifying the design language, we took the time to revisit some of our old patterns, and introduce some quality of life features to make data management and analysis easier.

Before and after screenshots of the account dashboard. Both pages show grids of widgets with charts, tabular data, and descriptive text. The after image shows a reduction in visual noise and clearer hierarchy of elements.
CaptionBefore and after of an individual bucket (account group) page. The original page hierarchy led to users spending more time searching for key information. We made some updates to the re-organize the widgets and reduce overall visual noise.
Examples of the group by pattern applied on tables. On top, there is an example of the group by flyout window with a dropdown of options to group by. On the bottom is an example of a table with the group by functionality applied.
CaptionIntroducing quality of life features, such as grouping, filtering, and hiding columns on data tables
All transactions table with two out of ten rows selected. There is an action bar at the top with a button for adding strategies. There is a flyout window for adding strategies by multiple selection with a search bar at the top.
CaptionPriorities and Strategies: a user-requested feature for tagging account expenses with strategies to track budget planning initiatives
Two chat bubbles. Left chat bubble reads: Rizzo! Can we update xyz? Right chat bubble reads: yessss, you got it with two pointing hand emojis and a sunglass emoji

Continuous updates

Our roadmap features product improvements from both our end users and our internal team — so we use a mix of tools and processes to document user research.

app icons, from left to right: Useberry, Slack, Figma, Jira, Sim Daltonism
CaptionSome handy product team tools: Useberry, Slack, Figma, Jira, Sim Daltonism

UX refresh: account groups

As we started to introduce new features surrounding account types, we also took the opportunity to improve on the user experience for the original Buckets (account groups) dashboard.

Users often found it difficult to understand at a glance the key information pertaining to their accounts: the relative spending across all accounts, which accounts were near full or empty, and which had pending transactions.

Screenshot of the buckets dashboard, a grid of repeating account group widgets. Each widget shows a horizontal layout with a donut chart and list of budgeted, encumbered, spent, and remaining amounts. Each widget also displays an account group title and button to view the group.
CaptionOriginal layout of the Buckets (account groups) dashboard

We gathered feedback in a couple of different ways, to make sure a wider variety of folks had the opportunity to weigh in: user sessions over Zoom, asynchronous surveys, A/B testing with images and Figma prototypes, and small proof-of-concept code demos with our existing tech.

Screenshot of the proposed redesigns for the dashboard and widget, which point out ux updates: 1. different layouts for account types, 2. chart updates to reduce cognitive load, 3. at-a-glance data reduced
CaptionLayout changes for the bucket (account group) widget to reduce cognitive load and help users understand their overall account health

During user testing, we ended up discovering that folks had wildly different opinions on what their preferred chart direction was — and at a glance, different reads of the information described by it.

In the future, we might investigate looking at other chart types or visual indicators for account health to further improve legibility here.

eight different examples of donut charts, showing different fill directions and palette changes
CaptionChart variants for fill color and direction
buckets
CaptionDesign variants: could another chart style improve clarity here?

Automated documentation? 📝

Over the course of a product’s life, its processes, development team, and goals all may change. That’s where the quest for good documentation comes in!

As we continue to expand the design system, we’re looking to establish documentation practices that support humans: ones that are useful, easy to maintain (automatic, even?), and understandable in a variety of ways.

We’re still experimenting with how to automate our docs from research, design, and development to customer success. Given our more modern tech stack, there’s less official resources out there for us to adopt — but that also means there’s more flexibility to figure out our specific team’s needs and goals for the system.

three infographics describing basic concepts of relationships between different app entities and instructions to use features
CaptionUpdating our documentation for basic app concepts