Personal Finance Manager/v1.0

Organize accounts, budgets, and savings in one focused system.

A structured platform to manage cash flow, categorize expenditures, monitor budget thresholds, and track progress toward financial milestones — with bank and UPI messages from your phone turned into transactions automatically.

dashboard.finwise.local
Total Net Balance
₹24,850.00
Across 3 active accounts
Monthly Spending
₹1,840.00 / ₹3,200.00
Savings Target
₹7,500.00 / ₹10,000.00
Recent Activity
Payroll Direct Deposit
Checking • Income
+₹4,200.00
Today
Grocery Market SMS import
Credit Card • Food & Dining
-₹142.50
Yesterday
Municipal Electric & Water
Checking • Utilities
-₹85.20
Oct 24

Features

Structured financial domain model

01. Accounts

Account Registry

Register multiple accounts per user with invariant-validated deposits, rename and deposit-adjustment operations, and per-account balance calculation.

02. Transactions

Income & Expense Ledger

Paged search and filtering across the ledger, per-account and monthly views, balance validation on expenses, and CSV export of the full transaction log.

03. Categories

Per-User Categories

Income and expense categories scoped to each user, unique by name, and referenced by transactions, budgets, and AI extraction.

04. Budgets

Category Budgets

Define caps per category over a date range, with usage and remaining amounts computed from matching expense transactions.

05. Goals

Savings Goals

Set target amounts with deadlines, add or withdraw savings, and track remaining amount and completion percentage.

06. AI & SMS Import

Automated Transaction Capture

Forward bank and UPI messages from your phone and have them parsed into transactions. Revocable per-device tokens, idempotent retries, an OTP content filter, and a review queue for anything uncertain.

07. Summary

Financial Summary

Total income, total expenses, net balance, and expenses grouped by category, surfaced on the dashboard as period-filtered charts.

08. Accounts & Access

Authentication

Email and password sign-up with hashed credentials, JWT-authenticated API access, and every query scoped server-side to the signed-in user.

09. Interface

Privacy & Theming

Light and dark themes, a privacy shutter that blurs amounts on demand, a notification centre, and snapshot comparison between periods.

System Design

Layered .NET 10 solution with an Angular 22 client

Dependencies point inward toward the domain. The domain has no external references, the application layer owns the use cases and abstractions, and infrastructure, AI, and the API sit at the edges as replaceable implementations.

FinanceApp.Domain
Entities & invariants

User, Account, Transaction, Category, Budget, SavingsGoal, AiIngestionLog, SmsImportDevice and SmsImportReceipt, each validating its own state. No dependencies on any other project.

FinanceApp.Application
Use cases & contracts

Repository and service interfaces plus the services that implement them, including validation, summaries, AI ingestion orchestration, and SMS device and content-filter logic.

FinanceApp.Infrastructure
EF Core 10 & SQLite

Code-first DbContext with migrations, nine repository implementations, unique indexes for identity and import idempotency, and the CSV transaction exporter.

FinanceApp.AI
Provider-agnostic extraction

A typed client for any OpenAI-compatible chat-completions endpoint, with prompt construction, retry and backoff, and lenient JSON and date parsing. Changing model or provider is configuration only.

FinanceApp.Api
ASP.NET Core Web API

Ten controllers over DTO mapping layers, JWT bearer auth alongside a separate device-token scheme, per-token rate limiting, ProblemDetails exception handling, a health endpoint, and Swagger in development.

FinanceApp.Frontend
Angular 22, SSR & Tailwind v4

Server-rendered SPA with guarded feature routes, typed API services and interceptors, CSS custom-property theming, and ApexCharts dashboards.

FinanceApp.Console
Original CLI client

The interactive menu the project started as, still running against the file-backed repositories. Kept as a second consumer of the same application layer.

FinanceApp.Xunit
Unit tests

xUnit coverage over the application and domain layers, concentrated on device tokens, message hashing, sensitive-content filtering, transactions, and categories.

Dependency direction
Inward only

Api and Console reference Application, Domain and Infrastructure. AI references Application alone. Domain references nothing, so business rules stay independent of storage and transport.

Solution Layout
FinanceApp.Domain/          Entities and business invariants
FinanceApp.Application/     Interfaces, Models, Services
FinanceApp.Infrastructure/  Persistence (EF Core + SQLite, Migrations), Export
FinanceApp.AI/              Configuration, Prompts, Providers
FinanceApp.Api/             Controllers, Dtos, Authentication, Middleware
FinanceApp.Console/         Program, MainMenu, Data
FinanceApp.Xunit/           Unit tests
FinanceApp.Frontend/        src/app/core, src/app/features
FinWise — Personal Finance Application
Designed for clear, reliable money management