Senior Software Engineer · Greater Salt Lake Area

Hi, I'm Zoë.

I'm a self-taught software engineer with over 12 years of experience building for the web. I enjoy finding ways to make development easier for my team, whether that means creating shared components, improving our processes, or helping someone work through an unfamiliar problem.

Much of my recent work has involved design systems, framework migrations, and exploring how AI can fit into our development process.

Now: acting as technical lead on a new product at RedX, where I'm helping develop both the software and the processes our team uses to build it.

Selected work

These projects represent some of the ways I've helped our team develop and maintain software. They include shared tools, updates to existing applications, and processes that support how we work together. Open a card for the details.

Migrating a live micro-frontend platform to Vue 3

Ten Vue 2 apps sharing one page, upgraded without pausing feature work.

  • Vue 3
  • single-spa
  • Migration
  • AI-assisted
Read the case study

The situation

RedX's lead-generation platform is about ten Vue 2 apps that share one page through single-spa micro-frontends. Vue 2 had reached end of life, and product work couldn't stop while we upgraded.

What I did

  • Rebuilt the design system on Vue 3 first, so every app had something to move onto.
  • Upgraded the main application in two waves, then started the Vue 3 upgrade in eight of the micro-frontends.
  • Tracked down a Safari-only failure caused by every app bundling its own copy of Vue, and moved the platform to one shared copy of Vue, Vue Router and Vuex.
  • Documented each issue we ran into. The list grew to 68 entries and became the team's migration guide.
  • Used AI agents for much of the code conversion. I reviewed their changes and wrote QA scripts so non-developers could test each app against production.

Outcome

Once the merge strategies were created the platform was live on Vue 3 in about one month, with no pause in feature work.

A large part of this work was making what I learned useful to the next migration. I documented the issues I encountered and how I resolved them so we had a starting point when updating further applications.

Five years of one design system

The shared Vue component library I started in 2021. All ten of our frontends use it.

  • Design systems
  • Vue
  • Storybook
  • Accessibility
Read the case study

The situation

When I joined RedX, each application had its own UI components. I saw an opportunity to create a shared library that we could maintain together and use across our applications.

What I did

  • Started the shared Vue component library and its Storybook docs two months after joining, and have maintained it since.
  • Grew it to 63 documented components, including dialogs, date pickers, a rich-text editor, and tree lists.
  • In 2026, rebuilt it on Vue 3 with an updated visual style and better keyboard, focus, and contrast support, and wrote a migration guide for the team.

Prequel

This is my second design system. The first was a style guide I led at StateFoodSafety.

Maintaining the library has meant continuing to adapt it as our applications change. Along with building components, I've worked on documentation and conventions to help other developers understand how to use and contribute to it.

A review and QA process for AI-assisted development

Most of my team builds with AI, so I designed how that code gets checked before it's merged.

  • Tech lead
  • AI agents
  • Code review
  • Process
Read the case study

The situation

On a new product at RedX, members of our engineering, product, and design teams were building with their own AI assistants. I worked on creating a shared process for reviewing and testing those changes before they became part of the product.

What I did

  • Wrote shared instructions for separate AI roles (builder, reviewer, QA, and others) that the whole team uses.
  • Code review starts by checking that the change does what was asked. QA runs the end-to-end tests and reports results against a specific commit.
  • Prototypes are rebuilt from their design and intent, not copied into the product.
  • Proposed a seven-step process from idea to production, with sign-off from product, design, and backend, and a log of product decisions.
  • Made agent work faster and cheaper by running agents in parallel and keeping each one small.

Outcome

As acting technical lead, I shipped three major features in the first month. The shared instructions and review process are now part of how our team develops the product.

AI research and fixes for new tickets

An internal tool I built on my own that my team now uses.

  • Node
  • LLM agents
  • Guardrails
  • Automation
Read the case study

The situation

I built an internal tool to help with the research involved in picking up a new ticket. It looks through our codebases and provides an initial assessment that a developer can review before deciding how to move forward.

What I built

  • When a ticket is created, an AI agent researches it across our codebases without changing anything, and comments with the likely size, steps to reproduce, and a suggested fix.
  • Once a developer approves, an agent makes the fix, runs the checks, and opens a merge request.
  • Replies on the ticket can send it back for more research.
  • Added limits on what it can run, timeouts, and a required approval before any code changes.

Outcome

It researched about 200 tickets in its first month and is now used by the team. Developers can ask it to investigate further through replies on the ticket, or approve it to work on a fix and open a merge request.

Also built along the way

  • The platform's global navigation and shared Vue library
  • Five micro-frontends, from mail merge to new-user onboarding
  • A React-to-Vue rewrite of the account and billing app
  • Moved features out of a legacy AngularJS app
  • White-label theming, with high-contrast support
  • An AI chat and map onboarding flow with LLM cost caps
  • A CSV contact import with AI column matching
  • Cut local setup for new developers to 1–2 hours
  • At StateFoodSafety: a self-serve client-portal tool that cut setup from 3+ weeks to 1–2 days

Experience

  1. Jun 2021 — Present

    RedX

    Senior Software Engineer

    I started on the frontend platform and moved into full-stack and technical-lead work. I created and maintain our design system, built new micro-frontends, and led the Vue 3 migration. I've also built backend features in Node and NestJS, and I'm acting as technical lead on a new product.

    • Vue 2 & 3
    • TypeScript
    • React
    • Node
    • NestJS
    • Postgres
    • MongoDB
    • single-spa
    • Storybook
    • Playwright
    • Claude Code
  2. Feb 2014 — May 2021

    AboveTraining(StateFoodSafety)

    Senior Web Developer (Full Stack)

    Full-stack development on an online food-safety training platform. I advocated for code reviews and testing, helped move us to Vue, led our style guide, and trained employees in our technologies and processes.

    • Vue
    • Vuetify
    • Storybook
    • PHP
    • Doctrine
    • MySQL
    • Jest
    • Cypress
    • BackstopJS

About

My early programming projects were simple video games. Since then, I've explored game development, information security, and full-stack web development. Being self-taught has given me plenty of practice working through unfamiliar problems and figuring out what I need to learn along the way.

I like understanding how people work with the software I help build. That includes the people using it and the developers maintaining it. Asking questions, sharing what I've learned, and being open to suggestions are all part of how I approach that work.

Away from the keyboard:

  • Board games
  • Hiking Utah's state and national parks
  • Baking
Anyone can make the simple complicated. Creativity is making the complicated simple.
— Charles Mingus

Say hello

Email is the best way to reach me.

Based in the Greater Salt Lake Area, Utah.