This post is for those doing code in Frappe / ERPNext, and NOT for those who are users.
It is really ironic that RMehta loves monolith.
But Frappe is an extremely powerful tool for Microservices development.
You create an app. Modules within the app. Doctypes within modules. And voila! You are ready to go. You may do javascript, python, html, css, and testing using the boilerplate templates provided. User permissions are built in. If fact, Frappe has a built-in OAuth server which you may use for user authentication in other applications. Virtual Doctypes even permit you to use other databases - even MongoDB.
I mean, Frappe is very powerful.
However, it is easy to mess up if you do not have the Microservices mindset - especially if you come from a monolith - Ruby type mindset where DRY - do not repeat yourself reigns.
When you do Microservices - your application should be self-contained. It should be able to run without reaching out to other apps.
For example, if you are developing an app for Property Management, it is better to have Tenant, and not use ERPNext’s Customer immediately. This way, the functionality of individual Microservices app is preserved and you do not need to think about the nuances and intricacies of other apps. So you are Agile.
When you need to use the functionalities of other apps, like if you need to use produce Sales Invoice for your Property App, you include a Linking field in the Tenant DocType to link the Tenant to a Customer DocType.
This breaks the DRY mindset - but this is very much in line with Microservices and is prevalent in the NoSQL world - which is the more recent paradigm in software development.
For example, School needs Student DocType and Health needs Patient DocType. To access the accounting functionality of ERPNext, Student may link to Customer and Patient may link to Customer.
With this mindset - Microservices mindset - development using Frappe / ERPNext can be very fast and agile.
Given the Docker / Kubernetes capability which allows Frappe / ERPNext to scale according to need, this setup has almost no equal.
What do you think?