First off... I love GnuCash!
Secondly... this is ~not~ GnuCash. At present, no GnuCash code is in use here. This tool works directly with gnucash.sqlite files only, by making direct calls to the database (it can also work with MySql and Postgres). Therefore, GnuCashew intends to replicate the functionality of the gnucash engine (lots to do there!).
This is an attempt to produce a web-based interface for the GnuCash program. Knowing that there have been several other attempts, this is based on my interest of hacking on GnuCash and also adding additional features, such as managed-bill-pay, mobile-friendly app and so forth.
If you are interested in an active demo, you can find it here;
https://gnucashew.lorimarksolutions.com/demo
Source Code Repository is found here;
https://github.com/lorimark/gnucashew-dev
This project uses Wt (https://www.webtoolkit.eu/wt) as the web rendering library. This is a very powerful c++ web-rendering library with features such as;
- multi-lingual
- super-fast table-views with editing
- multi-user integration
- Multi-lingual
- GnuCashew support multiple language capacity.
- Super Fast Table Views
- GnuCashew makes use of the "WTableView" object which provides fast-access to the table data. The view is scrollable, and will dynamically fetch data for display presentation. The view can handle millions of rows of data seamlessly with no visible degradation in performance. This provides nearly the same fluidity that GnuCash offers. It makes working with GnuCashew an easy transition for folks that are already familiar with GnuCash. The view-object is lightening fast and really quite impressive to work with.
- Mult-User Integration
- GnuCashew supports multiple users. It accomplishes this by adding some user-management data tables to the the GnuCash data file. The addition of these data tables does not impact the performance of GnuCash itself, as it does not touch the existing native GnuCash tables. This allows multiple users to be connected to the data file simultaneously. GnuCashew has a process that 'monitors' the data file for changes, and when it observes a change it will automatically propagate the change back in to the user interface. Obviously this can create issues when two users are editing the same item (don't do that!) but for the most part, one user is likely to be working in one area of the system (customer invoices) and another user is likely working in a different area (some account register). It's imperfect, but quite functional, and adds multi-user capability for a fairly small code payload.