App Development Basics

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.


I really appreciate it. I was just going through it since I was planing to add Tooltip functionality and its my first time

As I warned, it’s only what works for me. Definitely not necessarily the best way. Hopefully the higher up developers can contribute.

Appreciated work! It will help …will try to contribute as I will have a better knowledge :grinning:

Thx again

I’m finally starting my journey of developing using frappe :grinning:

A couple of questions regarding the app/module.

  1. If I make an app on frappe and install it on the same site as erpnext, can I use erpnext database?
  2. What would be the best way to go about if I want to use and integrate with erpnext database?
  1. 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.
  2. 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.

Great! Thanks for the prompt reply. That’s good to know. Then,

  1. How do I ascertain that the app and the hooks are update-proof in such a scenario.
  2. My app will be running in a place where connection to the net is not very reliable. What’s the best way for such a setup?
  1. 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.

  2. 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.

  1. Actually I was talking about the final app being used in the environment. Not during development.
    Something like the offline POS.

That I’m not sure about… maybe someone else can answer that. I’d imagine it would be more client-side scripting, which can still be done.