This is a large, actively maintained Ruby on Rails 8.1 monolith serving as a self-hostable personal finance management platform (a community fork of Maybe Finance). Its architecture is a classic MVC monolith with a Hotwired Turbo/Stimulus frontend, a Sidekiq background job layer, and a REST API consumed by Tauri desktop and Flutter mobile clients. The system is built around a PostgreSQL database with extensive use of UUIDs, JSONB, and pgvector for AI features. The core functionality revolves around aggregating financial data from over 20 external providers (Plaid, SimpleFin, Coinbase, etc.) using a sophisticated, extensible adapter pattern. It provides comprehensive budgeting, investment tracking, net worth calculations, bill management, and a powerful rule engine for automating transaction categorization and enrichment. A standout feature is its integrated AI assistant, which leverages OpenAI and Anthropic models for natural language queries, auto-categorization, and financial insights, backed by a structured evaluation framework. The codebase demonstrates exceptionally high craftsmanship in several areas. The Provider adapter pattern, Rule Engine, and AI Assistant framework are all cleanly abstracted, loosely coupled, and highly reusable. The custom Design System (DS:: components) provides a consistent, accessible UI toolkit. The balance calculation engine and financial modeling code show deep domain expertise. While the sheer number of provider integrations introduces some duplication, the core architectural patterns are genuinely exceptional and worth studying. The project is actively maintained with frequent commits, extensive CI/CD, and a large community. Technical drift is low, as the codebase actively migrates to modern libraries (e.g., GoodJob to Sidekiq) and adapts to provider API changes. The primary risks are the operational complexity of managing 20+ provider integrations and the dependency on external LLM APIs for AI features.
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.
Ghostfolio is an open-source wealth management application that enables individuals to track and analyze their personal investment portfolios. It supports multiple asset classes (stocks, ETFs, cryptocurrencies, bonds, real estate) and integrates with numerous financial data providers (Yahoo Finance, CoinGecko, Alpha Vantage, etc.) to automatically fetch market prices, historical data, and asset profiles. The system provides comprehensive portfolio performance calculations (ROAI, TWR, MWR), benchmark comparisons, dividend tracking, and a rule-based X-ray analysis for risk assessment (currency/asset class/regional cluster risk, emergency fund coverage, fee ratios). It also includes a FIRE calculator, watchlist, and import/export functionality for activities. The architecture follows a full-stack monorepo pattern using Nx, with an Angular 22 frontend (standalone components, Material Design, Chart.js) and a NestJS 11 backend (Prisma ORM with PostgreSQL, Redis caching, Bull queues for background data gathering). Authentication supports JWT, OAuth (Google, OIDC), API keys, and WebAuthn passkeys. The system is self-hostable via Docker Compose and includes a premium subscription tier managed through Stripe. The codebase is modular with shared libraries (`libs/common` for DTOs, interfaces, utilities; `libs/ui` for reusable Angular components) and a clear separation of concerns across API modules, services, and queue processors. Key highlights include a pluggable data provider abstraction, an abstract portfolio calculator with caching and retry logic, a comprehensive permission and scope system for fine-grained access control, and a rich UI component library with Storybook documentation. The project is actively maintained with frequent releases, extensive Prisma migrations, and a large test suite for portfolio calculations and import validation. While the codebase shows some technical drift (proliferation of environment variables, deprecated endpoints, and multiple data provider integrations), the overall engineering quality is strong, with well-structured modules and reusable patterns that could be extracted for other financial applications.
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.
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.
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.
This repository powers the personal finance blog 'OfDollarsAndData.com'. It is primarily a data research collection, consisting of hundreds of R scripts that import, clean, and analyze financial and economic datasets to produce publication-ready charts, tables, and interactive calculators for blog posts. The data lineage is clear: raw data is downloaded or read from external sources (Shiller S&P 500, FRED, BLS, Survey of Consumer Finances, YCharts, etc.) in import/ scripts, transformed and saved as RDS files in build/ scripts, and then consumed by analysis/ scripts that generate plots with a consistent ggplot theme. The repository also includes a webdev folder containing a WordPress theme with custom widgets and calculator embedding logic. While the codebase is not a packaged application and lacks testing or CI, the analysis is thorough and well-structured for its purpose. The hybrid nature includes both data research R scripts and web development PHP/JS code, but the dominant character is data research.
This repository is a Claude Code skill that enables an AI agent to audit bank transaction CSVs, identify recurring subscriptions, and automate cancellations via browser control. It contains no traditional application code; instead, it provides a structured instruction set (SKILL.md), an interactive HTML report template (template.html), a reference guide for cancellation URLs and dark patterns (common-services.md), and a JSON dataset of common subscription pricing (subscriptions.json). The skill is designed to be used with Anthropic's Claude Code CLI, which executes the workflow: reading CSV files, asking the user to categorize subscriptions, generating a local HTML audit report, and optionally using browser automation to cancel services. The repository is well-documented with a getting-started guide and a Vercel-hosted landing page, but it is not a standalone applicationβit is a configuration/prompt package for an AI agent.