In a previous blog, we saw that at neeto we are building many products. In most of these products, some things are common like inviting team members, integration with Slack, filtering results, etc. In this blog, we will see how at neeto we use nanos to share code.
All the products need to manage their team members. It means people need to be invited, their roles need to be managed, and they need to be deactivated. This feature will be exactly the same in all the products. So copying and pasting the same code into multiple products is unnecessary.
We call this style of breaking a feature into the lowest level of business component that can be plugged into any product a “nano”. neeto-team-members is a nano. It consists of a single repository, but in that repository, we have two folders neeto-team-members-engine and neeto-team-members-frontend.
At neeto we use lots of nanos. Here is the complete list of nanos as of this writing. Every month we add new nanos as and when the need arises.
neetoDesk, neetoCourse, neetoDeploy, and other products have a need to integrate with GitHub. We encapsulated the whole logic in a nano called neeto-github. Any product that needs this feature can quickly add GitHub integrations.
Similarly, neeto-payments is a nano that makes it easier for any product to accept payment via Stripe. Currently, work is going on to add support for Paypal and Square. When this feature is done and released to the nano then all the products using this nano will get the new features without much extra work. Currently, neetoCal, neetoForm, and neetoInvoice can accept payment via Stripe using neeto-payments.
We have automation rules in neetoDesk and need automation rules in neetoPlanner. So we started extracting all the rules-related work to neeto-rules nano. After all, any rule will have almost the same type of UI - define some conditions and then take some actions.
As the name suggests neeto-slack nano makes it easier for any product to have Slack integrations. Similarly, neeto-custom-domains make it easier for any product to have a custom domain.
It would be an understatement to say that nanos drive neeto. Every single time we need to copy a feature from one product to another we convert that feature into a nano. Now we don’t need to do copy paste and that feature can be used any neeto product.