Matisse: A JS Color Library for Developers

Project Overview
'matisse' is a JavaScript library designed and developed by 2 other classmates and I and we've accumulated over 700 downloads so far (October 2022). It is to be used for performing color manipulations with support for CSS color strings. Mutable color entities allow for implicit conversion between RGB, HSV, HSL, CMYK, and HWB color spaces. Mixing, toning, tinting, shading, and blending operations are also supported including a variety of different blend modes. matisse contains functionality for performing color measurements as well as functionality for validating and correcting colors to comply with the WCAG standards for contrast. In addition, this library allows for palette generation for different color harmonies as per color theory principles.
Goals & Objectives
There were some goals and objectives we created to ensure we made a truly useful library:
  • had functionality for the most common color operations that developers deal with
  • was able to provide accessibility checks that were consistent with widely accepted standards (ex. W3C)
  • design and documentation should be correct, reliable, maintainable, and easy for any developer to use
My Contributions
Two classmates and I developed this library for a course project and all the work was split evenly. However, I am particularly proud of this project because as I've been learning about all these different technologies, we were now able to actually create technology for others to use. Here are some notable contributions from my side: 
  • set up the Jest testing suite as a template for all our testing files
  • implement accessibility checks for the contrast between colours using the WCAG contrast ratio
  • fixed bugs related to constructors not throwing errors on invalid inputs
  • develop the Scientist class: this included functionalities like providing color manipulations such as negating, rotating, grayscale, calculating contrast and colorfulness, temperature and luminosity
  • helping ensure 100% code coverage on all lines, branches, and functions
We built this project from the ground up, from all the software design that went into it including documentation, such as Module Interface Specification and Software Requirements Specification, to the implementation and testing of the code. The entire project took about 3 months to complete with all the documentation, planning, and developing.
To All Projects