The design adheres to MVC principles (Model-View-Controller). This creates layers of software with
Each of these components is controlled by configuration files. So rather than write software to maintain the database, the user develops configuration files which is a much quicker process and less likely to result in errors. The system comes with a program to check the configuration files for consistency and a program to report on the application.
The software and directory structure follows the pattern of an application generated by Express with minor modifications.
The application is designed to work with any relational or document database system. The system uses a database driver to isolate the controller from the details of the database management system. The drive has routines for connecting to the database, reading, writing and deleting records.
Many relational databases can be accessed via a generic driver which uses knex to generate SQL. This has been tested with SQLite3, MySQL, and Postgresql. Knex supports another six DBMS products. It would need testing and possibly modifying for those. The main issue is the procedure for getting the primary key of a newly added row.
The document databases supported are Mongodb.and CouchDB. There is also a partially tested driver for Google Firestore but the limitations of the database make SUDJS unsuitable for it.
You can switch between databases in the test system, but this is for demonstration and testing only. It isnot suitable for production use
The view is controlled by the view engine (defaults to EJS). It has not yet been tested with other view engines. It does not use any client framework such as Vue or React. It is just plain HTML plus Bootstrap.
This is bulk of the SUDSjs software.
There is a very flexible permission system which controls access to tables, groups of data items and individual data items.
Although no coding is needed for most requirements, there are points in the processing cycle where you can add small fragments of code. For example a function might merge first and second names to give a full name for reports, or total the value of order lines in a sales order.
The system comes with a set of test data for evaluation and testiong purposes. The test database is at different stages of development for each database supported.