Welcome to Knapsack! ✨
Knapsack is a platform to design, develop, document, deploy, and scale your design system.
Design systems are changing the way digital products are built. Knapsack is a category-defining platform to design, develop, document, deploy, and scale your design system. Knapsack brings design and development workflows and tooling together to a single source of truth for your digital experiences — everything from a single button to a complete shopping cart experience. Then, Knapsack exposes your digital experiences as an API to power any website or app. So, rather than advancing your products on a one-off basis, Knapsack enables your improvements and innovation efforts to be applied across all websites and apps simultaneously.
An example with multiple asset sets for the same components (Bootstrap and Material Design).
What is a design system?
At Knapsack, “design system” means a library of visual style and components documented and released as reusable code and used in the development of other products.
Knapsack is the brain child of Evan Lovely, the CTO at Knapsack and has worked on another open source project, Pattern Lab. Over the past few years, Evan and the rest of the Knapsack team have gleaned new ideas from implementing design systems for several industries across the spectrum of their former business, Basalt. This has allowed the team to examine how to improve their techniques to best serve large organizations.
It became apparent that tools on the market had enforced an unnecessary ceiling for teams looking to build a robust and flexible design system. This ends up being a common barrier for organizations managing more than a few digital properties or brands.
Thus, the earliest iteration of this project, Bedrock, was born. As it grew (and after a rather amusing situation with a product by the same name) we realized that our brand should be more in line with our goal. Knapsack was born out of a thought exercise known as "The Knapsack Problem".
The Knapsack Problem refers to having a knapsack that has a definite carrying capacity, along with and a set amount of objects each with a different size and weight. The question becomes, how do you optimize packing with the best configuration possible? This is what we aim to provide — the tools to navigate this scenario in the simplest terms for even the most complicated of combinations.