Building our in-house UI Kit
When I joined Leeto in 2020, our small Product & Tech team relied on Ant Design, an external UI library, to build the SaaS product quickly. As the product grew, our needs for customisation and scalability outpaced the library’s flexibility. Over time, overlapping code and limited resources led to visual & functional inconsistencies, accessibility gaps, and longer QA cycles, affecting both user trust and team efficiency.
In 2023, I led a project to rebuild our foundations by creating our own UI Kit and in-house Design System, giving us full control over design and product decisions while supporting the transition to Leeto V3.
Theme
B2B Fintech
SaaS
Team
4 Developers
2 Product Designers
Skills
Design System
Design Strategy
Product Design
Project Management
Timeline
2023-2024
Tools
Mission: keeping simplicity & intuitiveness
Dev team
Design team
Users
Making the case for prioritisation
Step 1 - Aligning common strategy & design vision
Step 2 - Bringing the side project out
Step 3 - Convincing Product & Tech management over time
Capture the momentum
Take the ownership
Starting with a few objectives for the common interests
Divide Design review time by 2
Kill 80% of UI tickets and reduce design debt
0 new ticket linked with component usage
Building the Design–Dev process
With priorities aligned, it was time to bring designers and developers together, working on a close, hands-on process to co-build and refine the first components of our UI Kit.
Auditing, inspecting the code and mapping our existing system
Workshops to build shared understanding
Defining our creation flow
Prioritising smart to move fast
UI Kit's organisation
Tab
Tab
Tab
24
Tab
24
Tab
24
Tab
8
Tab
2
Segment
Segment
Segment
Segment
Segment
Segment
Radio text
Radio text
Radio text
Radio text
Checkbox text
Checkbox text
Checkbox text
Checkbox text
40%
Document-1
|
23Ko
Success toast message.
Info toast message.
Warning toast message.
Error toast message.
Tab
Tab
Tab
24
Tab
24
Tab
24
Tab
8
Tab
2
Segment
Segment
Segment
Segment
Segment
Segment
Radio text
Radio text
Radio text
Radio text
Checkbox text
Checkbox text
Checkbox text
Checkbox text
40%
Document-1
|
23Ko
Success toast message.
Info toast message.
Warning toast message.
Error toast message.
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Tag
Label
*
Input text
Label
*
Input text
Label
*
Input text
Error message.
10
150
Label
*
Select text
Label
*
Option 1
Option 4
Option 1
Option 2
Option 3
Option 4
Label
*
Select text
Error message.
Label
*
Input text
Label
*
Input text
Label
*
Input text
Error message.
10
150
Label
*
Select text
Label
*
Option 1
Option 4
Option 1
Option 2
Option 3
Option 4
Label
*
Select text
Error message.
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Tab
Tab
Tab
24
Tab
24
Tab
24
Tab
8
Tab
2
Segment
Segment
Segment
Segment
Segment
Segment
Radio text
Radio text
Radio text
Radio text
Checkbox text
Checkbox text
Checkbox text
Checkbox text
40%
Document-1
|
23Ko
Success toast message.
Info toast message.
Warning toast message.
Error toast message.
Tab
Tab
Tab
24
Tab
24
Tab
24
Tab
8
Tab
2
Segment
Segment
Segment
Segment
Segment
Segment
Radio text
Radio text
Radio text
Radio text
Checkbox text
Checkbox text
Checkbox text
Checkbox text
40%
Document-1
|
23Ko
Success toast message.
Info toast message.
Warning toast message.
Error toast message.
Applying design principles
Each new component was designed with our guiding principles in mind, from accessibility and contrast (WCAG-compliant colors) to clarity and usability. We refined both support elements (like detailed alerts) and key UI patterns (such as buttons) around a simplified color logic, balancing professionalism with a more human tone.
Anatomy & layout for a a shared design–dev language
Thanks to my front-end background, I could easily work with TailwindCSS, which became our shared framework between design and dev. To help developers better understand component structure, I documented the anatomy and layout foundations using a Figma specs plugin combined with Tailwind classes, making every detail explicit and transparent.
Variants for flexibility and precision
Using Figma’s component properties, variables, and Dev Mode features, we built clear and scalable component variants. This approach made it easier for both designers and developers to explore, test, and reuse components efficiently without losing control of details or consistency.
Structuring design & dev libraries for one shared system
Finally, we aligned Figma and Storybook through a common visual and logical organization, ensuring naming, hierarchy, and navigation matched across both environments. This structure covered not only components, but also families of components, strengthening our shared design–dev language and my role as a facilitator bridging both worlds.
Key impacts across teams and users
Impact on internal teams and ongoing projects
Design QA time reduced by 3×
New components and clearer guidelines significantly shortened design reviews and pre-release validation steps.
70% of design debt resolved
Legacy inconsistencies were progressively fixed as new standardised components replaced older ones.
0 new UI-related tickets
Since rollout, no bugs or regressions have been reported on elements built from the new system.
100% of components unit-tested
Every component was built with automated testing in mind, ensuring long-term stability and easier maintenance.
Positive feedback from early user tests
Initial test sessions on live projects highlighted a smoother, more cohesive experience, confirming the value of the new UI Kit for end users.
Learnings
I had been advocating for this topic for a long time, but finding the right moment and context finally allowed me to introduce it and get the team on board.
Building a shared understanding with developers was key to ensuring consistency, smoother implementation, and a more collaborative process overall.
Documenting the UI Kit while integrating the rebrand quickly turned into building the foundations of a full design system, requiring extra time and care.
A UI Kit, like any design system, is never static. It’s built to evolve, which makes having solid yet flexible foundations essential for long-term scalability.
Personal highlights
Close












