Additionally to Gerrit,
Ensure that a generic module captures a single function/feature/usecase. This allows for better reuse
Security setup of roles; focus on the type of users like; module role for read access only, module role for configuration etc.
For example; Email templates module contains the role to configure the template an the role to use the created templeates
In that case, you should make sure to have no or try to have less associations or relations to other modules. If there are no other associations, then you should be able to easily re use your module in other apps.
Maybe you could also take a look to the company app store feature. By download it from the app store or you’re company app store, it will be moved to the blue modules area and is outside of your regular developlment view.
One important thing: Think about previously which Mendix version your module should support. Modules can be only used with the same or higher Mednix versions. If you are building it with a very new Mx version, but you would like to use it with a lower version, this isn’t possible.