Given the nature of the fast growing company we worked with here, and a number of different teams involved, we decided to use a user interface library from Facebook - React as the main implementation tool. It turned out to be a very good decision since a component based approach in maintaining a large scale interface such as this one, plays very well with working on multiple project that use the same design principles and primitives.
We were able to create a (privately published) component library that is used by Clever's flagship product and a number of other sub-projects that other teams are working on. Some parts of the UI are even reused in a separate React Native app for iOS and Android that shares the same design team.
In addition to maintaining the project for an extensive period of time (we still actively develop it) and creating the library of reusable components, we also created a few internal tools in the process. This helped exceed the reusability of our internal utility system beyond the border of this project as each one of these tools is completely project agnostic. They vary in their usage, e.g. we created an interface for communicating with GraphQL backends that also handles resource caching, or an easy-to-use higher order component that handles data retention and validation in large forms.
As always, the team here at Sudolabs is a huge supporter of code reusability, quality and further maintainability. All of the apps that we have written here are as modular as possible and use the same centralized library of primitives. And that means that as the team scales horizontally and there are more and more requirements, the learning curve stays the same and most of the UI for new projects is built exponentially faster with the use of our library and utilities.
The team that we formed for Clever is a team of many different responsibilities. We expand naturally with our client and take on various roles in various environments. We have provided team members that specialise in communicating new features and issues directly from the client to our developers and smooth out the development process naturally. On top of that, we also actively partake in research for new projects of the company and create architectures that fit into the system as it is now.