In November 2022 I joined Vetsource to lead the team building Kibble, the company’s design system. When I arrived there was no code yet. Just an initiative, a few early decisions and a lot of questions to answer.
That’s the part I enjoyed the most, to be honest. We had to decide almost everything: which stack to use, how design tokens would become real UI, how components would be documented, versioned and published so product teams could actually adopt them.
Working that closely with designers and engineers from different teams taught me a lot. Most of the good decisions we made came out of those conversations, not out of a document written up front.
The system in its own documentation
We made Storybook the home of the system from day one, so instead of recreated mockups, here are two live pieces of Kibble: the welcome docs and the button, straight from the real Storybook.
Some decisions we made along the way
- 01
Technology and architecture
We went with React and TypeScript for components, Vite for tooling and a Sass architecture that could also serve non-React products.
- 02
Tokens into interface
We drew a clear line between design tokens, component styles and public APIs, so visual decisions survived the jump to code.
- 03
Documentation as product
Storybook became the shared space for behavior, usage guidance, accessibility expectations and design–engineering collaboration.
- 04
Repeatable delivery
Packages, versioning and a changelog let product teams adopt improvements at their own pace. I also configured all the GitLab infrastructure for our release workflows and for publishing the different packages to the company’s internal registry.
A solid base by version 2.8
I stayed on the project until around the 2.8.0 release, in March 2024. By then Kibble had grown past its original primitives into a broader system: Steps, ToastProvider and reusable hooks had joined the library, component APIs and shared media-query utilities kept maturing, and accessibility and long-content behavior improved across components. The changelog made adoption and breaking changes visible to consumers, so product teams always knew what they were getting into with each update.
What I value the most is not a single component. It’s that the architecture, the docs and the delivery workflow were solid enough for other people to keep building on top of them after I left. In the end, I think that’s what a design system is all about.
Scope note: This post covers my contribution from before implementation began through approximately the 2.8.0 release. The live Storybook includes substantial later work by the Vetsource team.