Create new module inside ERPnext app

What is the procedure to add module to the ERPNext app?
What files do I need to also change to have the new module registered?

I know this can be done via custom app, but I want to add the module to my fork of ERPNext.
So not doing it from the GUI (not even to an installed instance). Hence when I install the modified ERPNext (i.e my fork) the module is already there.


its better to create a new app for that
cause when updating frappe or erpnext i think it will remove your custom module

Thanks @anditsung,
Actually my question is not about which is better.
But about how to do it because I want to learn.

It’s like how to do it the way ERPNext team do it.

to create new apps and the first module for that app
bench new-app [APP-NAME]

install app to site
bench --site [SITE-NAME] install-app [APP-NAME]

to create another module for that app can be don from module def but need to add it to the on the config file ( need access to shell ) then do bench migrate or it will not be showing on the desktop but can be search

then you can create a doctype for that module


What about adding modules to the ERPNext (not new app)?

just add it using module def
but need to add it to too
then do bench migrate on the shell