Announcing a new Frappe Books

For those unaware, Books was a basic accounting and inventory app built on Electron/Vue as a desktop app. Think of it like “ERPNext Lite”. It went unmaintained for quite some time due to lack of an owner.

That repo has now been archived and Books has officially reached its end of life. It is being succeeded by Frappe Books, pretty much the same app except this time built on the Frappe Framework with Frappe UI on top and a mobile app (PWA) to go along with it. Documentation has also been updated with the latest changes.

Do install it and check it out (develop branch only for now). If you find any issues, please make a GitHub issue accordingly.

We hope this new version does justice to the reputation of the old Books :slight_smile:

Good luck with this project!
I wonder why Frappe is leaning toward AGPL-3 license in their new GitHub projects?
How this license differs from GPL-3?

This is interesting. I’m curious how well it can integrate into a site running Frappe CRM. I think it could be a winning combo if it could have one set of customers/contacts, etc.

Maybe custom installer when adding Books to a site already running CRM.

It so cool to see what the framework has been able to achieve over the last few years, as it’s gotten more and more mature. Well done everyone!

I didn’t realize “Develop” branch would mean a minimum Frappe version > 17.

So, Frappe Books will be in the Development branch for a couple of years, yes?

This puts a production-ready/stable version a couple of years in the future?

@mihir-kandoi It looks like Frappe Version 17 has major architectural changes. I’m a bit confused by this excerpt from the documentation. Does the following apply to user-created doctypes when creating a custom app? Does this mean more code to be written vs. the “low code/no code” selling point that Frappe has been based on? Perhaps this is just over my head :wink:

  1. Put each fill, default and rule in the controller.
  2. If the form shows values that the server fills, add a whitelisted preview.
  3. In the DocType JSON, set each placeholder, and the depends_on rules.
  4. Write the model: extend FrappeDoc, set doctype, presentation and previewMethod, and use Frappe fieldnames.
  5. Give each table that needs one a row model in rowModels.
  6. Register the model in frappeModels.
  7. Find each link to the doctype (grep '"options": "Books X"' in the DocType JSON files). Set its filters and createFilters in Frappe fieldnames.
  8. Add route filters for the lists of the doctype (src/utils/filters.ts, sidebar, Get Started) in Frappe fieldnames.
  9. Add node tests for the model and the form layout, and a Playwright spec for the screens.
  10. Run the guards.