[Tutorial] The Coffee and Cake Company


Document Last Updated: 27 December 2019 23:37

Latest Note: Setup wizard complete

I am starting to put together a document which takes you though a complete lifecycle of a company from setting up EPNext to receiving orders, manufacturing and month/year end close. I will continuously update the Word Document as I have time. Since I love coffee and cake, I figured it would be a great platform for setting up including adding food traceability.

The VPS host I have chosen is OVH where you can get a free £50 credit using the code UKCLOUD50. Using the cheapest VPS which is £2.99 ex VAT, the credit will last for a year! Plenty of time to experiment.

Please note, I have a demanding job which takes up a lot of my time so this might a bit slow going…

Disclaimer complete
Company Introduction/Requirements complete
Production Process
Configure Server complete
ERPNext install complete
ERPNext basic optimisation & backup complete
ERPNext Initital Setup (Wizard) complete
Company and banking information (Bank Account and purchasing Credit Card)
Introducing Share Capital
Introducing a director loan for additional funding (of the business)
Hire some workers
Setup Routing/machine/workstations
Setup Items and BOM
Purchase some Items to create raw material stock
Purchase some services and some fixed assets (machines/workstations)
Enter a few direct debits (i.e. rent and interest payments which might be on the bank account but will not have a PO raised)
Configure eCommerce site
Place order on ecommerce
Generate production works order/plan production
Make product/update production
Dispatch product to customer
Receive cash
Bank Reconciliation of cash in/cash out
Journal some costs
Write-off some stock
Month end cycle - Produce Monthly P&L, Balance Sheet and Cashflow pack
Year End Cycle
Managing Currency
Managing Budgets
Importing data

Any questions, please let me know.


Where can this document be read? Or is it shared somewhere that we can read up on your work?


Just one request, when you author the documentation, please do it in a way that’s easy to understand and implement for beginners, without assuming they know anything about technology or business or accounting. If possible, try to explain what each group type is meant for (eg. Item Groups Consumables, Raw Materials etc.)


Please, where can I see this?

Do people get notified when a post is edited?

depends on your setting. See below:

You’ll need to use the @abbas function to be sure.

Great initiative.

Ok great.

If anyone finds any issues, please let me know!

Hi, it is a great work, so thank you.
May I suggest you if you can use something like this for this doc, it will be great.


1 Like

Thanks you for the suggestion, I will take a look when I get a spare moment.


Why use an unnecessary extra tool? We already have github, and we already have this discussion forum.

1 Like

Notion is not cross platform

Yes, we can use for this GitHub, it will be better then Microsoft doc.

Actually it is .

Oficial site downloads Notion Desktop App for Mac & Windows


Just finishing off the install setup and am now having errors on setting up let encrypt:

INFO:bench.utils:sudo systemctl start nginx
Job for nginx.service failed because the control process exited with error code.
See “systemctl status nginx.service” and “journalctl -xe” for details.
Traceback (most recent call last):
File “/usr/local/bin/bench”, line 11, in
load_entry_point(‘bench’, ‘console_scripts’, ‘bench’)()
File “/home/erpnext/.bench/bench/cli.py”, line 40, in cli
File “/usr/local/lib/python3.5/dist-packages/click/core.py”, line 764, in call
return self.main(*args, **kwargs)
File “/usr/local/lib/python3.5/dist-packages/click/core.py”, line 717, in main
rv = self.invoke(ctx)
File “/usr/local/lib/python3.5/dist-packages/click/core.py”, line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/usr/local/lib/python3.5/dist-packages/click/core.py”, line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/usr/local/lib/python3.5/dist-packages/click/core.py”, line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File “/usr/local/lib/python3.5/dist-packages/click/core.py”, line 555, in invoke
return callback(*args, **kwargs)
File “/home/erpnext/.bench/bench/commands/setup.py”, line 128, in setup_letsencrypt
setup_letsencrypt(site, custom_domain, bench_path=‘.’, interactive=not non_interactive)
File “/home/erpnext/.bench/bench/config/lets_encrypt.py”, line 41, in setup_letsencrypt
run_certbot_and_setup_ssl(site, custom_domain, bench_path, interactive)
File “/home/erpnext/.bench/bench/config/lets_encrypt.py”, line 80, in run_certbot_and_setup_ssl
service(‘nginx’, ‘start’)
File “/home/erpnext/.bench/bench/config/production_setup.py”, line 67, in service
exec_cmd(“sudo {service_manager} {option} {service}”.format(service_manager=‘systemctl’, option=option, service=service))
File “/home/erpnext/.bench/bench/utils.py”, line 161, in exec_cmd
raise CommandFailedError(cmd)
bench.utils.CommandFailedError: sudo systemctl start nginx

I used the easy install script, enabled multi-site and then ran the:

sudo bench setup lets-encrypt site.domain

Any ideas? Once this is resolved, we should have up to the setup wizard and then we can start setting up the system with users, items, BOMs etc.


I think this command only works, if nginx is not running. Check if it does with systemctl status nginx.service. :thinking:

Thank you… This led me to sudo nginx -t which shows that the conf generated by lets-encrypt added both TSLv1.2 and TSLv1.3. Removing TSLv1.3 fixed the problem.

I will rebuild the server to include these errors and include details of how to locate error.


Can you please also add auto renew lets encrypt?

@abbas - Just thought to add this link which details the solution you mentioned.