Frappe HRMS is a full-featured Human Resource and Payroll management system built as a Frappe/ERPNext application. It covers the complete employee lifecycle including recruitment, onboarding, attendance and shift management, leave administration, payroll processing, expense claims, performance appraisals, and separation. The system provides both a desktop interface via the Frappe framework and a mobile-first Progressive Web App (PWA) built with Vue.js and Ionic for employee self-service. A separate roster application handles shift scheduling and assignment. The architecture follows Frappe's monolithic pattern with custom DocTypes, server-side Python controllers, client-side JavaScript, and extensive reporting. Payroll processing is a key strength, supporting salary structures with formula-based components, tax slabs, multi-currency, gratuity, and benefit claims. The codebase demonstrates strong engineering practices with comprehensive test coverage, data migration patches across versions, and reusable patterns such as safe formula evaluation, immutable leave ledger entries, and push notification mixins. It integrates tightly with ERPNext for accounting entries and payment processing.
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.