Giving Clients the Power to Brand Their Fundraising Sites

Company
DonorDrive

Project Timeline
May-Nov 2023

My Role
As a senior frontend developer leading our design system efforts, my role was to help build the solution, taking into account user research, technical constraints, business needs, and timeline considerations. In the process, we deployed over two dozen new design system components to support the new workflows and made crucial decisions with our implementation of Vue.js as the JavaScript framework powering our frontend.

The HyperDrive design system documentation space in DonorDrive's Confluence site.

Overview

DonorDrive is an online fundraising platform that enables enterprise nonprofits to manage events and donation campaigns that raise money for their causes.

The public-facing side of our product employs themes that are intended to reflect an individual organization’s look and feel. We offer custom-built themes that clients can pay for and rely upon our team to create and maintain. These projects take time and investment, though.

To help nonprofits fundraise faster after signing on and to lower the barrier to entry, the Color Palettes & Fonts feature allows organizations to apply any colors and select from 300+ fonts to brand their fundraising sites.

Problem

DonorDrive has four built-in themes, each with a handful of predetermined color palettes that clients were unable to change. These are the themes we chose to add configurability to as part of this project.

DonorDrive's four built-in (and now configurable) themes

The only way a nonprofit could showcase their unique branding was through contracting DonorDrive’s design team to build a custom theme.

This meant new clients on the platform would often not raise their first dollar for weeks if not months after they had signed on. Additionally, the investment of a custom theme could impact whether a nonprofit chooses our company or a competitor during the sales cycle.

Solution

From the early stages of the project, I was involved to help shape both the admin-side experience that allows clients to create and manage custom palettes as well as the technical implementation of the public-side themes that apply those palettes.

Admin

DonorDrive gives admins the option to apply a theme at a number of different levels, including the entire site, an event template that a group of events can adopt, an individual CMS page, and an individual event. Our new workflows began from these existing entry points to ensure a high degree of discoverability.

The theme card component, our entry point for creating a custom palette

Our iterative process included rounds of user research, which the project team would review, discuss any shortcomings of a prototype draft, and decide on the best path forward to alleviate those issues. Hearing directly from our users, we were able to pinpoint specific areas of improvement, such as adding an edit button to each of the custom palettes, rather than relying upon a user to select a palette and click an edit button in our sticky footer.

We created new dialog, card, slider, and form components to carry out an API endpoint-driven user flow. I helped build these components using our in-house, unique Vue.js system in concert with our ColdFusion backend, as well as component and variant CSS classes that apply custom properties that we intend to leverage on the public side through themes.

Our custom and default palettes for a built-in DonorDrive theme.

Colors

Each built-in theme required a palette configuration file that determined the fields that can be edited within each custom palette.

Additionally, each of the predetermined default palettes that were in use required a JSON file with hex values for each palette. These core colors needed to be binded to elements so that any edits to colors would be reflected both within the preview window and, if the palette were saved, on the public side.

To ensure accessibility and to hook directly into our Vue.js system, we created a custom color picker component to accomplish this task.

How to pick a core color as part of custom palette management.

Fonts

Our list of 300+ fonts that clients would be able to choose from are populated via the Google Fonts API, and filtered to use only variable fonts.

This font picker component was also custom-built and, like the color picker, inherited styles from a base form component. In the case of the color picker, we're inheriting from the text input, and with our font picker, we inherit from the dropdown.

To ensure performance, each of the options within the select tag of our font picker downloads only the characters needed from the Google Fonts API, lowering the request size considerably.

How to pick a font as part of custom palette management.

Elements

In addition to customizing a palette with colors and fonts, we opened up a number of elements to be editable. This included buttons, headings, and fundraising-specific elements like thermometers.

Individual CSS properties could be changed, and thanks to feedback from our second round of user testing, we were able to concisely but not too technically describe properties such as text-transform and border-radius with more clearly understandable names: "Letter Case" and "Button Shape."

How to customize a primary button element.

Public

Ultimately, all the work on the admin side of our feature only mattered if the public side could display custom palettes.

We were able to tap into the power of CSS custom properties to apply these palettes in an efficient and highly maintainable manner. A good amount of work went into adapting our built-in themes' CSS, converting Less color functions to use CSS's color-mix functional notation. This way, users would need to pick only two or three core colors, and our CSS would handle hover states and slightly different background colors to provide depth.

Also, we built a color contrast checking functionality that would compare a foreground color against a background color, and if those colors didn't pass the WCAG AA accessible contrast ratio, we would automatically supply white or black text.

Conclusion

Overall, I'm very proud of our team's efforts in giving clients more control over how their public-facing themes look, ensuring that constituents could trust in the brand they already know and give confidently.

This is only one of the many large features I've had the pleasure of working on at DonorDrive, but it's easily my favorite as we were able to make great strides with our design system, our Vue.js implementation, and enabled us to push forward a very helpful tool for our userbase.