FinanceManager is an open-source personal finance tracker built with Blazor WebAssembly and ASP.NET Core. It lets you manage all your accounts — cash, stocks, and bonds — in one place, with a rich analytics dashboard, AI-powered insights, and real-time market data.
Get a complete picture of your finances at a glance — net worth, cash flow, asset allocation, and AI-generated insights all in one place.

View and manage all your financial accounts across multiple asset classes.

Drill into individual accounts to inspect transactions, trends, and performance metrics.

The dashboard aggregates data across all your accounts and presents it through a collection of interactive cards:
Three account types are fully supported, each with dedicated views:
| Account type | What it tracks |
|---|---|
| Currency | Cash balances and everyday transactions |
| Stock | Equity holdings with live price updates |
| Bond | Fixed-income securities, including inflation-linked bonds |
| Layer | Technology |
|---|---|
| Frontend | Blazor WebAssembly, MudBlazor (Material Design), ApexCharts.js |
| Backend | ASP.NET Core 10, SignalR, Entity Framework Core |
| Database | PostgreSQL (SQL Server also supported) |
| AI / LLM | OpenRouter, GitHub Models, Ollama, LM Studio |
| Market data | Alpha Vantage API |
| Observability | OpenTelemetry (OTLP export) |
| Local orchestration | .NET Aspire |
| Testing | xUnit, Moq, WebApplicationFactory, Coverlet |
The solution follows a layered modular monolith architecture:
Blazor component → typed HttpClient → API controller → application service → domain service → repository
Key design decisions worth noting for reviewers:
FinanceManager.DomainHttpClient directlydotnet run --project code/AppHost
This starts a PostgreSQL container and the API automatically.
# Restore and build
dotnet restore ./code
dotnet build ./code/FinanceManager.slnx
# Apply database migrations
dotnet ef database update -s code/FinanceManager.Api/FinanceManager.Api.csproj
# Start the API (also serves the Blazor WASM client)
dotnet run --project code/FinanceManager.Api
Then open https://localhost:5001 in your browser.
For production backup, restore, and rollback steps on Supabase, see RUNBOOK.md.
# All tests
dotnet test ./code/FinanceManager.slnx
# Unit tests only
dotnet test ./code/FinanceManager.Tests.Unit/FinanceManager.Tests.Unit.csproj
# Integration tests (uses in-memory DB)
UseInMemoryDatabase=true dotnet test ./code/FinanceManager.Tests.Integration/FinanceManager.Tests.Integration.csproj
Supply these via environment variables or .NET User Secrets — never commit them:
| Variable | Service |
|---|---|
AlphaVantage__ApiKey |
Live stock prices |
OpenRouter__ApiKey |
OpenRouter LLM |
GitHubModels__Token |
GitHub Models LLM |