Real double-entry
Every transaction is a journal with debits equal to credits — checked by the database, not by the form. An invoice, a bill, a bank match and a depreciation run all post through the same code, so there is one ledger and no side-tables pretending to be one.