Designer ยท Front-End Developer

Design that moves business forward.

Designer and front-end developer. I design it, then I build it.

Scroll to explore
Selected Clients
Context TravelBaker Hill SolutionsTravel IndianaIndiana Dept. of LaborIndiana Dept. of Homeland SecurityAutoOracleContext TravelBaker Hill SolutionsTravel IndianaIndiana Dept. of LaborIndiana Dept. of Homeland SecurityAutoOracle

Additional case studies and earlier client engagements.

See all projects

From component spec to shipped markup.

I write the SCSS and the template it renders, not just the Figma file. This is a representative pattern, not code pulled from a specific client project.

_availability_toggle.scss
.availability-toggle {
  display: inline-flex;
  gap: $space-2xs;
  padding: $space-2xs;
  background: $surface-2;
  border-radius: $radius-pill;

  &__option {
    @include button-reset;
    padding: $space-xs $space-sm;
    border-radius: $radius-pill;
    font: $type-label-sm;
    color: $ink-muted;
    transition: background $motion-fast, color $motion-fast;

    &:hover { color: $ink; }

    &--active {
      background: $surface-1;
      color: $ink;
      box-shadow: $shadow-sm;
    }
  }
}

.availability-dot {
  $size: 6px;
  display: inline-block;
  width: $size;
  height: $size;
  border-radius: 50%;
  background: $brand-accent;

  &--muted { background: $border-subtle; }
}
_availability_toggle.html.erb
<%# Scoped to @selected_type; each option still renders its
    own dot so switching types never requires a re-render. %>
<div class="availability-toggle" role="tablist" aria-label="Tour type">
  <% @options.each do |option| %>
    <button
      type="button"
      role="tab"
      class="availability-toggle__option
             <%= 'availability-toggle__option--active' if option.selected? %>"
      aria-selected="<%= option.selected? %>"
      data-action="click->availability-toggle#select"
      data-availability-toggle-type-param="<%= option.type %>"
    >
      <%= option.label %>
      <% if option.has_availability?(@selected_date) %>
        <span class="availability-dot"></span>
      <% else %>
        <span class="availability-dot availability-dot--muted"></span>
      <% end %>
    </button>
  <% end %>
</div>

Representative pattern illustrating the approach โ€” not verbatim client source.

โ€œ

The best design decisions happen at the intersection of deep user empathy and clear business thinking. I work in that space.

โ€” Michaela Hoffman

Research, design,
and code.

I'm the person who does both halves, design it, then build it, so nothing gets lost in the handoff. 8+ years in fintech, government, and travel taught me to work in the messy part first, figuring out what a product actually needs to be, before I ever touch a pixel or a component.

Then I take it all the way through, UI, JavaScript, TypeScript, and Ruby on Rails, so what ships is what got designed.

โ—Ž
Research
JTBD, user interviews, accessibility audits, competitive analysis
โ—‡
Design
Strategy, systems, interaction design, prototyping
โŸจโŸฉ
Code
UI, JavaScript, TypeScript, Ruby on Rails
UX Research & JTBDReframed a luxury travel platform's destination pages around traveler intent โ€” a meaningful projected revenue impact
Design SystemsSCSS architecture + a component preview library behind a multi-template, catalog-scale redesign
Accessibility (WCAG)Full design + code audit for Baker Hill, delivered as a sales-ready artifact for leadership
Front-End EngineeringLive Rails/Hotwire/Stimulus implementation โ€” design and code are one handoff-free path
Stakeholder LeadershipSelf-initiated revenue analysis, model-free attribution traced to real, completed orders

Let's build something meaningful.

I design it, then I build it. I'm looking for a principal product design or design engineering role where I keep doing both. Let's talk.