← Back to Work

App

Ledger

A full-stack personal finance application with bank sync, intelligent duplicate detection, asset tracking with depreciation, and a modern user experience for ease of use.

Role

Creator

Timeline

2025 – Present

Team

Solo project

The challenge

Existing personal finance apps either lack the flexibility for detailed tracking or require expensive subscriptions. Managing multiple accounts, detecting duplicate transactions from bank sync, and tracking asset depreciation across different methods needed a purpose-built solution.

The approach

Built a full-stack TypeScript application with a React frontend and Express API. Implemented an easy-to-use budgeting table, a flexible transaction list, an API bank sync integration, and a net worth calcuator for financial accounts and depreciable assets

Process

Five phases from audit to launch.

01 Core Architecture Designed the database schema, API layer, and React component architecture. Set up TypeScript strict mode, ESLint, and a monorepo structure.
02 Transaction Management Built CRUD operations, categorization, filtering, and search. Implemented split transactions and transfer detection between accounts.
03 Bank Sync & Dedup Integrated SimpleFIN for automatic bank imports. Built three-tier duplicate detection: exact match, fuzzy matching, and temporal proximity analysis.
04 Asset Tracking Added asset management with multiple depreciation methods, historical value tracking, and net worth calculations including depreciating assets.
05 Design System Created a comprehensive design system with dark/light themes, consistent component patterns, and responsive layouts.

User Interface

Ledger dashboard screenshot Ledger transactions list screenshot Ledger budget screenshot Ledger reports screenshot Ledger net worth screenshot Ledger import screenshot

Outcomes

3-tier

Duplicate and transaction detection

Automatic

Bank sync and import

10x

Time savings versus spreadsheets

Complete

UX/UI design system

Tools & Disciplines

React Express TypeScript SQLite