July 20, 2023
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, integrating with Slack, filtering results, etc.
In this blog, we will see how we use nanos to share code at Neeto.
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 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 It 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 when the need arises.
neeto-team-members
neeto-integrations
neeto-ip-restrictions
neeto-github
neeto-form
neeto-approvals
neeto-filters
neeto-invite-links
neeto-slack
neeto-rules
neeto-custom-domains
neeto-payments
neeto-notifications
neeto-area51
neeto-tags
neeto-emails
neeto-compliance
neeto-monitor-ruby
neeto-bugtrap-ruby
neeto-sso
neeto-commons-backend
neeto-mail-interceptor
neeto-email-prefixer
neeto-org-incineration
neeto-webhooks-engine
NeetoDesk, NeetoCourse, NeetoDeploy, and other products 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 being done 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 drives Neeto. Every 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 copy-paste; that feature can be used for any Neeto product.
Subscribe to get future posts via email.
Let’s get started now.