Skip to content

PRD-002: Financial Tracking

Field Value
ID PRD-002
Title Financial Tracking
Status Draft
Owner Loryth Team
Created 2026-02-18

1. Problem Statement

Personal finance tools fall into two extremes: oversimplified apps that only track expenses, and complex enterprise-grade tools that overwhelm non-financial users. Both categories typically require cloud accounts, harvest user data, and lock financial history behind paywalls or proprietary exports. Privacy-conscious users who want to track accounts, budgets, and savings goals in one place — on their own infrastructure — have few options.

Loryth's wallet service provides multi-currency account management, transaction tracking with hierarchical categories, budgets, and savings goals — all self-hosted and integrated with other Loryth services.

2. Target Personas

Persona Priority Relevance
Self-Hosting Tinkerer Primary Tracks all finances locally, uses multi-currency, wants API automation
Mindful Planner Primary Simple budgeting and expense awareness without anxiety
Household Coordinator Primary Shared family budgets, real-time spending visibility

3. User Stories

ID Story Priority
US-WAL-001 Create and manage accounts Must
US-WAL-002 Record transactions Must
US-WAL-003 Hierarchical categories Should
US-WAL-004 Set and track budgets Must
US-WAL-005 Track savings goals Should
US-WAL-006 Multi-currency support Should
US-WAL-007 Transfer between accounts Must
US-WAL-008 View spending reports Should

4. Functional Requirements

ID Requirement Priority
FR-1 CRUD operations for accounts with name, type, and currency (MonetaryAmount composite) Must
FR-2 Create INCOME, EXPENSE, and TRANSFER transactions with category and description Must
FR-3 Automatic balance updates on transaction creation via domain events Must
FR-4 Hierarchical category management with parent-child relationships Should
FR-5 Monthly budget creation per category with progress tracking Must
FR-6 Savings goals with target amount, deadline, and balance tracking Should
FR-7 Currency validation preventing operations across incompatible currencies Should
FR-8 Transfer transactions that debit one account and credit another atomically Must
FR-9 Spending reports by category and time period with trend comparison Should
FR-10 Budget threshold notifications at configurable percentages (e.g., 80%) Should

5. Non-Functional Requirements

  • MonetaryAmount arithmetic must prevent floating-point precision errors
  • Transaction creation and balance updates must be atomic within a single database transaction
  • Account dashboard must load in under 500ms with up to 10,000 transactions

6. Acceptance Criteria

  • User can create accounts in different currencies and view balances (FR-1)
  • Transactions update account balances automatically via events (FR-2, FR-3)
  • Categories support parent-child hierarchy with spending aggregation (FR-4)
  • Budget progress shows spent vs. target with notification at threshold (FR-5, FR-10)
  • Savings goals track balance and mark as completed when target is reached (FR-6)
  • Transfers atomically debit source and credit target account (FR-8)
  • Currency mismatches are rejected with clear error messages (FR-7)

7. Out of Scope

  • Bank account synchronization or automatic transaction import
  • Investment tracking, stock portfolios, or cryptocurrency
  • Tax calculation or reporting
  • Shared expense splitting (e.g., Splitwise-style)
  • Exchange rate management or automatic currency conversion

8. Traceability

Artifact Reference
Vision Vision — "budgeting" as a core domain
Roadmap Release 0.2
Stories Wallet Stories

9. Open Questions

  • Should the wallet support recurring transactions (e.g., monthly rent)?
  • How should budget rollovers work — carry unused budget to next month or reset?
  • Should savings goal contributions be modeled as transfers or a separate concept?

10. Changelog

Date Change
2026-02-18 Initial version