Actual Budget is a mature, open-source personal finance application that operates on a local-first architecture with optional multi-device sync. In production, it provides envelope and tracking budgeting, transaction management, bank account synchronization via GoCardless/SimpleFIN/Pluggy, scheduled transactions, an advanced rules engine for auto-categorization, custom reports and dashboards (including Monte Carlo forecasting), and multi-user sync server capabilities. The system is built as a monorepo with distinct packages: `loot-core` (business logic, SQLite database, CRDT sync, custom AQL query language), `desktop-client` (React SPA with Redux and TanStack Query), `desktop-electron` (Electron wrapper), `mobile-client` (Capacitor-based), `sync-server` (Express with authentication and bank integrations), `cli` (headless management), `api` (public npm package), `component-library` (design system), and `crdt` (conflict-free replicated data type). Data flows from user input or bank imports into a local SQLite store, with optional sync to other devices via a CRDT protocol over a WebSocket/HTTP server. The project demonstrates high engineering craftsmanship with extensive tests, custom but well-documented systems, and a strong modular architecture. It is not a data research project.
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.
Wallos is a self-hosted PHP web application for tracking personal subscriptions, payments, and budgets. It provides a full CRUD interface for subscriptions with categories, currencies, payment methods, and household members. The backend is PHP 8.3 with SQLite, served via Nginx and PHP-FPM in a Docker container. It supports multi-user accounts, OIDC/OAuth login, TOTP two-factor authentication, and email/password reset flows. The application includes a rich set of notification channels (email, Discord, Telegram, Pushover, Gotify, ntfy, Web Push, webhooks, and more) triggered by cron jobs for upcoming payments and cancellations. A statistics dashboard aggregates costs, trends, and budget comparisons. The codebase is organized as a flat PHP application without a framework, using custom includes for shared logic and a simple API layer for external access. The architecture follows a page-based pattern where each PHP file serves as a route, with AJAX endpoints under `/endpoints/` for dynamic actions. The application demonstrates attention to security with CSRF tokens, prepared statements for all SQL queries, input validation, and a centralized SSRF protection module for outbound HTTP requests. A notable feature is the Web Push notification implementation that follows RFC 8290-8292 using VAPID and ECDH encryption. The currency conversion system uses a WeakMap-based cache per request to avoid repeated API calls. The codebase is actively maintained with frequent releases and a comprehensive migration system. However, the code exhibits significant repetition across notification channels and logo handling, with many nearly identical endpoint files. The i18n system is manually maintained across 20+ languages, leading to potential drift. The application lacks a formal testing framework beyond a custom test harness that checks security regressions and data integrity. The absence of a Composer dependency manager and reliance on vendored libraries (PHPMailer, Parsedown) adds maintenance overhead. Overall, Wallos is a functional, feature-rich self-hosted application with some well-crafted security components but suffers from code duplication and boilerplate typical of PHP applications without a framework.
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.
Cashew is a production-grade, cross-platform personal finance and budget tracking application built with Flutter/Dart. It manages transactions, multi-currency wallets, budgets with category-level spending limits, savings goals and loans, subscriptions, recurring/auto-pay rules, credit/debt tracking, and spending analytics (pie charts, line graphs, heatmaps, net worth summaries). It ships to Android (with home screen widgets), iOS, web (PWA), and desktop. Data persists locally in SQLite via the Drift ORM with 46 managed schema migrations, and synchronizes across devices through a custom Google Drive sync client, with shared-budget features on Firebase Auth/Firestore/Cloud Functions, plus optional Gmail and notification scanning for auto-generated transactions.