Re-developing SQL-Ledger: Intro

SQL-ledger GL Screen

SQL-Ledger, developed around 20 years ago, is one of the most robust and feature-rich free accounting systems, easily competing with offerings like Quickbooks and Xero. It supports over 20 languages and works out of the box in multiple linguistic contexts.

However, there are some issues with using SQL-Ledger today due to its age and the technology used in its development:

Use of CGI-Scripts:

SQL-Ledger is built using CGI-Scripts. This leads to two main issues:

  • Resource Consumption: Every action sends a new request to the server and requires all modules to reload. While this isn’t a problem for small installations, it becomes resource-intensive for large databases or multi-tenant use-cases.
  • Page Reloads: Each action necessitates a complete page reload, leading to a sub-optimal user experience compared to modern web applications developed with JavaScript, which run more like native applications.

User Interface:

SQL-Ledger boasts an extremely user-friendly and intuitive interface, further customizable with easily editable stylesheets. However, the interface, developed using HTML table tags, is not responsive. This severely restricts the potential for CSS-driven modifications. Almost no use of JavaScript in the interface results in slower interactions compared to more contemporary applications.

Re-Development Approach:

My approach will be two part. I’ll be developing a RESTFUL API for SQL-Ledger, which will act as our application backend. The goal will be make the API standalone such that it makes it simple for anyone to pair it with any existing SQL-Ledger installation. The goal will be to keep the database structure as close to the original as possible to keep backward compatibility. This should also allow a much easier integration of SQL-Ledger with other programs as needed.

This will be paired with a stand-alone SPA developed using Vue 3.0 Framework. I’ll be using Bootstrap 5.3 as a CSS framework to make things easier.

SQL-Ledger has already been developed with the front-end and back-end code being mostly separate. Back-end Processes are self-contained and in the “SL” folder, while the front-end code is part of the “/Bin/Mozilla” directory. The goal with the API to use the existing modules from “SL” as much as possible and create a wrapper for those modules but we will also be working with the database directly where needed. This should make the development much quicker and much less error-prone.

All development done will be open-source. I will be posting updates of development here.

Copyright © Hashim Saqib. All rights reserved.