Skip to content

Latest commit

 

History

History
45 lines (42 loc) · 8 KB

File metadata and controls

45 lines (42 loc) · 8 KB

LedgerSMB ADR (Architecture Decision Records) Index

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