"I have a great idea: It would be awesome if we could create sharable components in order to sell them to other company departments, and even one day sell them outside!"
Quote from our client in April 2018
More realistically: our client produces many apps for different users but with the same business behind. Many identical features were remade from scratch on several projects.
First Attempt: Commando
- Owned and sustained by all the projects at the same time without owner
- One unique repository with one JS project: one package.json
- The components built altogether and served online on a unique un-versioned JS Script
Second Attempt: Tapas
- Owned and sustained by one project not thinking reusability when developing
- Still one unique repository with one JS project: one package.json
- A unique build on another GitHub branch where commits hashes were used as versions of the package
Last Attempt: Component Studio
- The ownership of a dedicated core team whose only focus is to make a robust project of reusable components
- An architecture of several packages with their own scope and responsibility
- A mono-repository to develop faster
- A proper library versioning system pushed on a package store (like NPM)
The objective: At first, save money by reusing components across different projects
Return on Investment
Beyond being reused, we need to make sure our project does not take more time to other projects than it would have if they made them from scratch, so we track and resolve their issues!
Issues VS Contibutions
We set up a process of issue solving that allows us to prioritise issues and focus on the most impactful problems
We proved that having a dedicated technical team on an advanced design system is worth the cost.
I hope this talk gave you the confidence to maintain one if need be.
Any Questions?