ERPNext is a comprehensive open-source ERP (Enterprise Resource Planning) system built on the Frappe Framework. It provides a full suite of business management modules including Accounting, CRM, Buying, Selling, Stock/Inventory, Manufacturing, Projects, Assets, Quality Management, Support, and more. The system uses a metadata-driven architecture where DocTypes (document types) define data models, business logic, and UI behavior. The codebase follows a modular structure with each business domain in its own directory (accounts, buying, selling, stock, manufacturing, projects, etc.). It includes a modern React/TypeScript banking module built with Vite for bank reconciliation and statement importing. The system supports multi-company, multi-currency, multi-language deployments with extensive regional/localization support for tax compliance across many countries. It has a robust patch/migration system for database schema evolution and a comprehensive test suite.
hledger is a cross-platform plain text accounting application that provides three user interfaces: a command-line tool (hledger), a terminal UI (hledger-ui), and a web UI (hledger-web). It implements double-entry bookkeeping with support for multiple currencies, investment lot tracking, budgeting, forecasting, and CSV import. Users maintain their financial data in human-readable journal files, and hledger generates reports such as balance sheets, income statements, cash flow, and transaction registers. The project is structured as a Haskell monolith with four packages: hledger-lib (core library for parsing, data models, reporting, and output), hledger (CLI with 30+ commands), hledger-ui (terminal interface using brick/vty), and hledger-web (web interface using Yesod). The core library handles reading multiple input formats (journal, CSV, timedot, timeclock), applying queries and filters, and writing reports in text, CSV, JSON, HTML, and ODS formats. The CSV import system uses a declarative rules engine for mapping external data to journal entries. The codebase demonstrates high craftsmanship with clean abstractions, extensive test coverage (unit tests, shell tests, browser-based Playwright tests), and active maintenance with CI/CD across Linux, macOS, and Windows. It has comprehensive documentation, internationalization support, and a well-defined contribution process. While the project has some technical drift (vendored old web dependencies, multiple build systems), it remains a robust and well-engineered application with several reusable components that could be extracted for other projects.
OpenBudgeteer is a personal budgeting application built with .NET 9.0 featuring a Blazor WebAssembly frontend and ASP.NET Core Web API backend. It implements the bucket budgeting methodology, allowing users to manage financial accounts, transactions, budget categories (buckets), automated transaction rules, recurring transactions, and financial reporting. The application supports multiple database providers (MySQL, PostgreSQL) and uses Redis for session storage and application settings. The architecture follows a layered approach with distinct data, service, presentation, and API layers. The data layer uses Entity Framework Core with a repository pattern for data access. The service layer provides business logic through generic and EF Core-specific services. The presentation layer employs the MVVM pattern with Blazor components and ViewModels handling UI state and logic. The API layer exposes RESTful endpoints for the frontend to interact with the backend. Key reusable components include a generic repository pattern, a generic service pattern, a ViewModel base class for Blazor, a fluent CSV bank transaction mapper, and a MudBlazor theme persistence service. These components demonstrate craftsmanship in abstraction and separation of concerns, making them suitable for extraction and reuse in other projects. The application is actively maintained with recent updates to .NET 9.0, MudBlazor, and ApexCharts, indicating low technical drift.
Odoo is a comprehensive, modular Enterprise Resource Planning (ERP) suite built on a Python backend and a JavaScript/TypeScript frontend. It functions as a full-stack web application framework, providing core business modules (Accounting, Sales, Inventory, HR, CRM) alongside a robust ORM and a component-based UI framework (Owl). The architecture is a modular monolith where the core `odoo/` directory defines the framework and `addons/` contains business logic, localization, and integrations. It relies heavily on PostgreSQL for data persistence and uses a registry pattern for extensibility in both backend and frontend code. The system is designed for high customization through model inheritance (`_inherit`) and frontend patching (`patch`), allowing developers to extend functionality without modifying core code directly. The codebase demonstrates significant craftsmanship in its ORM implementation, which handles complex relationships, computed fields, and access rights rules. The frontend utilizes the Owl framework for reactive components, with a sophisticated service registry for dependency injection. However, the heavy reliance on prototype patching in JavaScript and monkey-patching in Python introduces technical debt and potential fragility during framework upgrades. The repository is actively maintained with frequent commits, a large community, and extensive test coverage including unit tests, integration tests, and UI tours. Localization support is a major feature, with country-specific modules handling tax, invoicing, and compliance requirements.
Frappe Books is a full-featured, offline-first desktop accounting and inventory management application built with Electron, Vue 3, and a custom ORM framework (fyo) on top of SQLite. It supports double-entry bookkeeping, invoicing (Sales/Purchase/Returns), payment processing, stock management (batches, serial numbers, FIFO valuation), Point of Sale (classic and modern layouts), financial reports (Balance Sheet, P&L, Trial Balance, General Ledger, GST reports), loyalty programs, pricing rules, coupon codes, and multi-currency. The architecture is schema-driven: JSON schema files define document structures, and model classes add business logic via formulas, validations, and lifecycle hooks. The backend runs in the Electron main process and exposes IPC APIs for file operations, database access, and auto-updates. The frontend is a reactive Vue 3 SPA with a comprehensive component library. Regional support (India, Switzerland) is implemented through model overrides and schema extensions. The codebase demonstrates strong engineering practices with a layered architecture, but the custom framework introduces some coupling. It is actively maintained with CI/CD, automated tests, and regular patches.
Akaunting is a self-hosted accounting and invoicing platform for small businesses and freelancers. It manages invoices, bills, banking transactions, transfers, reconciliations, multi-currency, multi-tax, recurring documents, and financial reports. It includes a customer portal for invoice viewing and payment, and supports multi-company, multi-user with role-based permissions. The system is highly internationalized with 40+ language locales. The architecture is built on a custom PHP framework (Illuminate) that extends Laravel conventions. It uses an event-driven architecture with domain events, listeners, and a job queue for async processing. The frontend combines Blade templates, Vue.js components, and Livewire for interactivity. Multi-tenancy is achieved through company scoping via a global query scope. The system is extensible via a module system with an app store, and includes a CLI for maintenance tasks. Key entry points include the installation wizard (controllers under Install/), authentication flows, and core CRUD controllers for sales, purchases, banking, and settings. Data flows typically involve controllers dispatching jobs that emit events, which listeners handle to update related entities, send notifications, or trigger side effects. Reports use a filter/group/rows event system for extensibility. Import/export is handled via Excel with multi-sheet support. External dependencies include PHP 8.1+, Node 18-20, and a database (MariaDB, MySQL, PostgreSQL, SQLite). It uses Laravel Mix for asset compilation, integrates with payment gateways, email services, and error trackers (Sentry, Bugsnag), and relies on a module marketplace at api.akaunting.com.
This repository is a collection of Odoo modules extending financial reporting capabilities in the Odoo ERP system. It provides standardized financial reports (aged partner balance, general ledger, trial balance, VAT report, etc.), partner statements (activity, outstanding, detailed), tax balance reports, cash flow forecasting, and export functionality in multiple formats (PDF, HTML, XLSX). The architecture follows Odoo's modular pattern with models, views, reports, wizards, and data files. Key entry points are wizard-driven interfaces that collect user parameters and generate reports via QWeb templates or XLSX generators. The system relies on Odoo's core accounting models and reporting infrastructure, with data flowing from user input through ORM queries to report presentation. The codebase demonstrates good reuse through abstract base classes for reports and wizards, reducing duplication across report types.
Firefly III is a self-hosted personal finance management application built on the Laravel PHP framework. It provides comprehensive double-entry bookkeeping with support for multiple currencies, accounts, budgets, categories, bills, piggy banks, recurring transactions, and rules. The system exposes both a full web UI using Blade templates and Alpine.js (with legacy jQuery components) and a RESTful JSON API (v1) for programmatic access. Key features include transaction splitting, budget limits, auto-budgeting, rule-based transaction processing, exchange rate management, webhook integration, multi-user with group administration, and detailed reporting with charts. The codebase follows a repository pattern with interfaces, uses events and listeners for side effects, and includes a substantial set of artisan commands for maintenance, upgrades, and data corrections.
IDURAR is a free, open-source ERP and CRM application built on the MERN stack (MongoDB, Express.js, React.js, Node.js) with Ant Design and Redux. It provides modules for invoice management, payment processing, quote generation, customer relationship management, inventory tracking, and financial reporting. The system features multi-language support (44 languages), PDF generation for business documents, role-based access control, and a responsive user interface. The architecture separates concerns with a RESTful API backend and a modular frontend utilizing React, Redux for state management, and Ant Design for UI components.
KMyMoney is a mature, open-source personal finance manager for the KDE desktop environment. It provides double-entry accounting with support for multiple accounts, currencies, investments, loans, budgets, and scheduled transactions. The application features a plugin architecture for import/export (QIF, CSV, OFX, GnuCash, iCalendar), online banking (AqBanking, OFX Direct Connect, Woob), and storage backends (XML, SQLite with encryption). The core domain model includes MyMoneyTransaction, MyMoneySplit, MyMoneyAccount, and related entities, all built on Qt's model/view framework. The codebase is large (over 3600 files) and has been under active development for over two decades, resulting in a rich feature set but also some legacy patterns and conditional compilation for Qt5/Qt6 compatibility. The architecture is a monolithic desktop application with a well-defined plugin system, extensive unit tests for core data objects, and a sophisticated reporting engine with pivot tables and charts.
This repository is a collection of Odoo Community Association (OCA) addons focused on extending accounting and invoicing functionality in Odoo. It provides over 50 modules that automate invoice processing, manage taxes and discounts, handle refunds and returns, integrate stock operations with invoicing, and enhance partner-specific invoicing workflows. Each module follows standard Odoo module structure with models, views, wizards, and data files, extending core Odoo models like account.move, sale.order, and stock.picking via inheritance. The modules are loosely coupled but may have interdependencies declared in their manifests. The system is designed to be installed within an Odoo instance, with entry points defined in each module's __init__.py and __manifest__.py files. Recent activity (last commit 2026-09-25) and active maintenance indicate a healthy project, though the wide version support (some modules targeting Odoo 9.0c-18.0) requires careful dependency management.