My understanding of customization, double checking best practice?

I’ve been reading a lot about ERPnext and came to the conclusion that heavy customization needed on ERPnext, or build a custom app from ground up.

My current high level structure understanding is that

  1. apps is a directory under frappe-bench, created with bench new-app [name]

  2. module is the child organization layer under apps

  3. doctypes is the child of modules, which essentially like a database table with fields and relationships.

Q1 are my understandings correct above?

Currently I had ERPnext deployed with pwd.yml from frappe_docker repo, and I also found this doc which basically says any custom-apps require custom built docker image.

Which brings to my main question hoping to get some direction

Option1 Customize docker ERPnext, mostly doctype’s via UI, with custom checked. Which I’d assume same as dev mode off and all customization saved to db.

Option2 install to VM directly, dev mode on or customize file directory directly

Use case: for our business internal use only, small team <10 people, lots integration with 3rd party app via REST API

Q2 Which route would be better suited for us?

Q3 Build custom docker image VS direct to VM, which would be better deployement for us?

That is mostly true, yes. Technically not everything directly beneath the apps folder is a Frappe Module.

Looking at ERPNext App for example. There are folders named “change_log”, “commands”, “config”, “domains”, and more. These are Python modules. But not Frappe Modules.

DocTypes are a combination of SQL table + web page design + various metadata. Not only do you define the SQL schema, but also the layout of the web page.

I’ve never used frappe_docker, so I cannot speak to its pros and cons.

My personal opinion:

  • I really love Docker, and I’ve used it for many, many things.

  • But I do not like Docker + ERPNext. It adds complexity to a product that’s already quite complex. And appears to create just as many problems as it solves.

If I worked at a much larger company, or if I was trying to be an ERPNext service provider? Then perhaps I’d have another opinion.

However, others on this forum probably feel very differently than I do. Many people are using Docker here.

Thanks for the clarification, yes, doctype is like a combination of backend and frontend for lack of better words

Same feeling here, managed to docker everything until frappe, hence this post.

I just tried to follow docker dev guide and lost myself half way. Most low code platform I used so far did not require a dev IDE setup.

I’m now trying to [set it up direct on ub22] (Installation)

Q4 With direct install to Ub22, am I correct to assume the custom app dev experience largely like

  • CLI for bench creating app, site
  • WebUI for creating and managing DocTypes
  • Text Editor for any scripts & templates
1 Like

Here’s what I’m currently running:

  1. Shell terminal for bench commands, and also git commands. Also for troubleshooting remote virtual machines.
  2. Web browser for basic DocType work, testing, troubleshooting, etc.
  3. VSCode for editing Python, JS code, config data.
  4. DBeaver for SQL query writing, testing, troubleshooting, etc. Occasionally for altering data (not recommended, and not always safe, but sometimes it’s the path of least effort for me)
  5. For working with the Redis databases, Another Redis Desktop Manager. Useful for troubleshooting. Sometimes to edit data during testing.
  6. To examine what’s going on with Queues and Workers, I’m using RQ Monitor.
  7. For testing HTTP APIs, I’m using Insomnia.
1 Like

Thanks heaps, your setup is what I’m quite familiar with.

Still curious about how docker dev setup would look like.

Hopefully another member could share some experience.