| ADR Link | Status | Summary |
|---|---|---|
| 0000 | Accepted | Addresses the design decision to use ADRs to describe most important decisions that impact the structure and future direction of the code base. |
| 0001 | Accepted | Addresses the design decision to use PostgreSQL instead of other relational database systems. |
| 0002 | Accepted | Addresses the design decision for assuring database consistency independently of any application accessing the database. |
| 0003 | Accepted | Addresses the design decision to use database roles as the authentication provider for the LedgerSMB application. |
| 0004 | Accepted | Addresses the design decision to use fine grained access rights in the the form of PostgreSQL roles for authorization in the LedgerSMB application. |
| 0005 | Accepted | Addresses the design decisions regarding the role of the Perl layer versus the database layer, web server and web browser. |
| 0006 | Accepted | Address the design decision regarding which template toolkit will be used to generate UI. |
| 0007 | Accepted | Addresses the design decisions regarding the acceptable use of Perl dependencies. |
| 0008 | Accepted | Addresses the design decision that super user rights should not be required to install and run LedgerSMB. |
| 0009 | Accepted | Addresses the design decision related to which database schemas the LedgerSMB data can reside. |
| 0010 | Accepted | Addresses the design decision to move from CGI to PSGI for web server integration. |
| 0011 | Superseded by ADR 0105 | Addresses the original design decision to use Dojo toolkit. |
| 0012 | Accepted | Addresses the design decisions to include all dependencies for JavaScript, images, CSS, etc. in the LedgerSMB distribution and to not use Content Distribution Networks for any browser related resources. |
| 0013 | Accepted | Addresses the design decision to not use Perl development frameworks like Catalyst, Dancer, Mojolicious etc. |
| 0014 | Accepted | Addresses the design decision regarding REST web service API, documented the API using OpenAPI, semantic versioning of the API, and thin client requirements. |
| 0015 | Accepted | Addresses the design decision to start incorporating Vue components into the UI, eventually removing the use of Dojo, but keeping the Dojo look and feel until after all components are converted. |
| 0016 | Accepted | Addresses the design decision to use state machines robot3 (XState) for UI state management. |
| 0017 | Accepted | Addresses the design decision to use state machines for managing resources like invoices, orders, e-mails, document templates, recurrence patterns, etc. |
| 0018 | Accepted | Addresses the design decisions regarding state machine usage in the Perl layer using the perl pod WorkFlow, the modification of database state using its procedural API, and the need for dependency injection in the state machine. |
| 0019 | Accepted | Addresses the design decision to use Beam::Wire, dependency injection, YAML for new configurations and deprecation of the INI configuration format. |
| 0020 | Accepted | Addresses the design decision to use TIMESTAMP WITHOUT TIME ZONE for all database timestamps. |
| 0021 | Accepted | Addresses the design decision to only use the listed in-core PostgreSQL extensions. |
| 0022 | Accepted | Addresses the design decision regarding the separation of responsibilities for web request serving, HTML composition, Template::Toolkit, and business logic. |
| 0023 | Accepted | Addresses the design decision for scripting use-cases using the ledgersmb-admin command line application, its environment variables, and its YAML configuration. |
| 0024 | Accepted | Addresses the design decision for the account and account_heading tables in LedgerSMB, specifically whether to move to inheritance across tables or use the current methods like triggers to maintain referential integrity. |
| 0025 | Accepted | Addresses the design decision regarding the database upgrade process. |
| 0026 | Accepted | Addresses the design decision to use a session concept for each logged in user which persists in the database. |
| 0027 | Accepted | Addresses the design decision to wrap Dojo widgets and adding abstractions which could make transitions to other other widget libraries in the future. |
| 0100 | Accepted | Addresses the design decision regarding reducing the use of global state to situations where no other choice is available, the deprecation of LedgerSMB::App_State, the use of local to limit Perl built in variables and the appropriate layer for state to be stored. |
| 0101 | Accepted | Addresses the design decisions regarding persisting workflow states, the use of actions, and overriding WorkFlow with LedgerSMB::Workflow. |
| 0102 | Accepted | Addresses the design decisions regarding the proper location and order for Perl pragmas, modules, and package declarations. Also defines where and when to declare minimum Perl versions. |
| 0103 | Accepted | Addresses the design decision for limited use of ON DELETE in REFERENCES table relations to reduce database clutter of unused rows. |
| 0104 | Accepted | Addresses the design decision regarding using the PostgreSQL layer to actively manage the consistency and correctness of the data. It also clarifies the responsibilities of the active and passive PostgreSQL layers. |
| 0105 | Accepted | Addresses the design decision to move the code base from Dojo to Vue and Quasar. |
| 0106 | Accepted | Addresses the design decisions regarding Perl coding style and the limited use of newer Perl syntax. |
| 0107 | Draft | Addresses the design decisions regarding the use of JSON and JSONB data types, and the preferential use of relational schema in the PostgreSQL database. |
| 0108 | Accepted | Addresses the considerations regarding journal lines resulting from e.g. manufacturing lots and fixed assets as to whether they are separate resources or can be combined into a single resource. |
| 0110 | Accepted | Addresses how to deal combine the requirement of having exactly one version of each function when redefining a function with a different argument list (as Pg supports simultaneous functions by the same name with different argument lists). |
Index Generated: Wed Oct 1 22:29:31 2025 UTC