When I started looking into doing customization for frappe, I found it very hard to figure out where to start with getting my system set up for contributing. To help others in this position, I’ve started a basic instruction manual for how to start contributing to the frappe/erpnext community. Right now it covers the very basics of how to use github to contribute. I’m hoping to expand it significantly to cover more and more topics, like:
Pulling a branch to continue developing
Stashing changes
I’m not particularly github savy, so what I’ve suggested might not be the best way of doing it, but it’s all I know. If you have anything to contribute, please feel free.
Yes. All the apps in a site can access the entire database of that site. I have a could doctypes and reports as part of my app that basically just reformulate the ERP data.
Making an app is the way to go. You can use hooks so that on save, submit, cancel (etc) of erpnext documents your app code gets executed.
While you can never make it completely update-proof, there are specific routines for the hooks (before_save, after_save, before_submit, etc) that will always get called. There is obviously a situation where something done to one of the documents could mean your code doesn’t work (especially when the newest major releases come out), but those are fairly rare and typically easy to fix.
The way I do my development is to have a virtual machine where I work on all the code, and I have a git account where I upload the changes and merge into my master branch (once they are working fine in my development server). I have Our actual production server has the app installed and linked through git. To update the production version, all you do is log into the server and run a bench update, and the system will pull the latest version from git. If you have spotty connections to the internet, you might not be able to run bench update at that time, but once it is installed you don’t need an internet connection.