Trip Ninja • Design Systems 2026

Building a design system to bring consistency and scalability to a growing travel platform

Design system thumbnail
CONTEXT
Timeline
Aug 2025 - Mar 2026 (7 months)
Role
UX / UI Design
Tools
Figma, ClickUp, Excel
Team
1 UX / UI Designer (me!)
1 Project Manager
3 Front-End Engineers

Overview

Trip Ninja builds software for travel companies that helps streamline and improve the process of selling multi-stop trips.

As the UX/UI designer, I focused on building a scalable design system to help standardize the UI across platforms, reduce technical debt, and improve collaboration between design and engineering. My work focused on simplifying existing components, creating a shared language, and introducing a more maintainable structure through atomic design and design tokens.

PROBLEM

The current design system was outdated, creating a lot of tech debt and inconsistency.

The team knew the design needed an overhaul as the existing one was filled with legacy components that no longer fit the product’s needs. This created platform-wide inconsistencies. There was also a need to update the visual style of our components to fit our updated brand.

GOALS

Creating a scalable and flexible system that could grow with the product.

Shared language between design and engineer

Establish documentation and guidelines so designers and developers work from the same reference.

Scalable foundations for future growth


Strong foundations that support product evolution and are easy to maintain over time.

Established a shared language with engineers

Before:

No design token architecture existed, so teams hardcoded values like colours, spacing, and typography across Figma files and code. This created inconsistencies between designs and implementations, with duplicated work and constant debates over "the right blue" or "standard padding".

After:

Established a design token architecture that is named consistently and used across Figma and code. Teams now reference semantic tokens (ie: colour-primary, spacing-medium) across tools, building shared understanding, eliminating guesswork, and reducing redundancy in both design and development.

PROCESS

Research: About 20% of the existing design system was used.

I audited the design system to understand how it was used in the admin panel and discovered that only around 20% of components were actively used despite the design system’s size. Within that subset, one-off variants were built, creating visual inconsistencies, duplicated work, and maintenance overhead that increased design, development, and QA efforts.

The following insights were surfaced during informal discussions about the design system with engineers and project managers:

01

One-off variants were built to account for missing component sizes.

02

Interpretation of component usage varied across individuals.

03

Colour, spacing, and other style values were hard coded.

These insights shifted my approach from incremental fixes to rebuilding the design system from ground up.

Establishing the foundations

I conducted a brand perception survey to better understand how the company was being viewed internally, and the results showed that the visual identity felt dated and no longer reflected the direction we wanted to take. That insight informed a refresh of the design system foundations, including colour, typography, and imagery, so the product could feel more aligned with the company’s evolving brand perception.

I introduced a fresher colour palette to modernize the interface and support accessibility, expanded typography to improve hierarchy and flexibility across the UI, and refined imagery to feel more consistent with the updated tone of the brand.

I also expanded the font weights in our typography to give more options during designing to create clear information hierarchy as the previous system offered two font weights that led to ad hoc styles and introduced inconsistency across the UI.

To address layout issues, I also defined a 4px spacing scale (chosen over the common 8px grid for finer granularity and control), along with grid, radius, and elevation foundations. The lack of a spacing system had previously led to uneven component heights and visually unbalanced interfaces, so these additions helped establish a more predictable structure across the product.

Design token architecture

Hard-coded values made making changes more costly as it required more effort and time. We needed a structure that would scale and is easily maintainable. With my lead, I introduced design tokens that acted as a deliberate bridge between design intent and code implementation, supporting multiple token types such as colour, spacing, and typography.

Since I hadn’t worked on a design system at this scale before, my process started with targeted research. I leveraged prior coursework, medium articles, and attended a design workshop on design tokens, then iterated naming conventions with the engineers through trial and error to ensure naming is intuitive for both designers and engineers.

Component architecture

I worked with the lead engineer to identify and simplify components that served identical purposes but were named differently. Once we had a better understanding of what components were needed, we tackled the issue of detaching components on Figma, since FIgma-to-code alignment was important in building product features accurately and quickly. The existing components were too rigid to support future use cases, so I broke them down into their smallest parts and rebuilt them atomically. Atomic structure was chosen to support reusable and scalable construction, allowing  changes to cascade more predictably, and gave engineers a clearer path for implementation.

Designing from the smallest reusable unit also reduced duplication and made it easier to compose more complex components without creating new variants for every edge case.

Improving documentation over time

I initially documented only the component state, but weekly design reviews and QA revealed broader gaps in understanding. Teams needed more than visual definitions - they needed clarity on usage, behaviour, content rules, and anatomy to make implementation decisions confidently. In response, I expanded each component’s documentation gradually over time to create a shared reference point and reduce interpretation gaps for design, development, and QA.

Cross-team alignment during parallel workflows

As the sole designer working between higher-priority projects, I felt behind the pace of three dedicated engineers building components rapidly during sprints. While they pushed out code quickly, I needed time to establish scalable foundations and Figma components first, creating a workflow gap.

We shifted to parallel design/development workflows, where I ran weekly design sessions to demo progress, gather engineer feedback early, and iterate before components were finalized. This kept everyone aligned, prevented premature implementation, and ensured the system stayed cohesive as we marked items complete together.

WRAPPING IT UP

Early wins we saw right away

As the project is still ongoing, we have not yet seen long-term results. However, there are some instant wins:

Smoother hand-off, implementation, and QA
Clearer documentation and handoff processes meant less back-and-forth with developers, fewer QA bugs overall, easier tracking of visual and accessibility problems, and much faster QA signoffs. Design and dev finally had shared standards to work from, so handoffs just took less time.

Less time recreating, and more time designing
The new design system freed up time that was previously lost to rework, letting us polish the visuals and microinteractions that used to be difficult to do.

Team finally speaking the same language
The front-end team responded positively to the direction of the system. There was less guesswork and more “oh, that makes sense” moments around how things should work.

Reflection and next steps

This project reinforced the importance of involving the team early in the process. A design system is strongest when it is built collaboratively, not in isolation - but this is true for other design work too! It also showed me the value of regularly checking in and refining the process as the system grows. Design systems are living products, so they need ongoing communication, iteration, and alignment to stay useful over time.