Personal AI-Powered Financial Advisor - A multiplatform desktop application for managing your finances with AI assistance, built with Tauri, Svelte, Praxis, and PluresDB.
FinancialAdvisor is a modern personal finance management system that combines:
- Tauri Desktop App - Cross-platform desktop application (Windows, macOS, Linux)
- SvelteKit UI - Modern, reactive user interface with Svelte 5
- Praxis Framework - Schema-driven application logic and business rules
- PluresDB - Local-first data storage with real-time sync and vector storage for AI
- AI Integration - Support for multiple AI providers (OpenAI, Ollama, etc.)
- MCP Protocol - Model Context Protocol for AI agent integration
FinancialAdvisor/
โโโ ๐ฑ src/ # SvelteKit frontend application
โ โโโ routes/ # Application pages
โ โ โโโ accounts/ # Account management
โ โ โโโ transactions/ # Transaction tracking
โ โ โโโ reports/ # Financial reports
โ โ โโโ settings/ # App settings
โ โโโ lib/ # Shared libraries
โ โโโ praxis/ # Praxis schema & logic
โ โโโ pluresdb/ # PluresDB integration
โ โโโ stores/ # Svelte stores
โ โโโ components/ # Reusable components
โโโ ๐ฆ src-tauri/ # Tauri Rust backend
โ โโโ src/ # Rust source code
โ โโโ Cargo.toml # Rust dependencies
โ โโโ tauri.conf.json # Tauri configuration
โโโ ๐ฆ packages/ # Legacy packages (being migrated)
โ โโโ shared/ # Common types and utilities
โ โโโ financial-tools/ # Core financial calculations
โ โโโ ai-integration/ # AI provider abstractions
โ โโโ mcp-server/ # MCP server implementation
โโโ ๐ docs/ # Documentation
- Account Tracking - Monitor multiple accounts (checking, savings, investment, etc.)
- Transaction Management - Add and categorize transactions
- Budget Planning - Create and track budgets (coming soon)
- Goal Setting - Set and monitor financial goals (coming soon)
- Investment Analysis - Portfolio tracking (coming soon)
- Smart Categorization - Automatic transaction categorization using AI
- Spending Analysis - AI-powered spending pattern recognition
- Financial Advice - Personalized recommendations based on your data
- Report Generation - Automated financial reports with insights
- Local-First Storage - All data stored locally using PluresDB
- No Cloud Dependencies - Complete offline operation capability
- Data Encryption - Secure storage of sensitive information
- Vector Storage - AI embeddings stored locally for privacy
- Praxis Schema - Declarative data models and business rules
- AI Provider Choice - Support for OpenAI, Anthropic, Ollama, and custom providers
- MCP Protocol - Standard Model Context Protocol for AI integration
- Multiplatform - Desktop support for Windows, macOS, and Linux
- Node.js 20+ (22+ recommended)
- Rust - Install from rustup.rs
- Platform-specific dependencies:
- Windows: Visual Studio with C++ tools, WebView2
- macOS: Xcode Command Line Tools
- Linux: Build essentials, webkit2gtk-4.1, libssl-dev
# Clone the repository
git clone https://github.com/plures/FinancialAdvisor.git
cd FinancialAdvisor
# Install dependencies
npm install
# Run in development mode
npm run tauri:dev
# Build for production
npm run tauri:build# One-command setup
make bootstrap
# Or manually:
npm install
npm run setup:hooks
npm run build
npm run test# Development
make build # Build the project
make watch # Watch for changes
make test # Run all tests
make lint # Run linting
make format # Format code
# Quality checks
make check-all # Run all quality checks
make coverage # Generate coverage report
make audit # Security audit
# Package & Release
make package # Create VSIX package
make release-check # Check release readinessโโโ src/
โ โโโ extension/ # VSCode extension code
โ โ โโโ providers/ # Financial advice providers
โ โ โโโ mcp/ # MCP server integration
โ โโโ mcp-server/ # MCP server implementation
โ โโโ shared/ # Shared types and utilities
โโโ test/
โ โโโ unit/ # Unit tests
โ โโโ integration/ # Integration tests
โโโ .github/
โ โโโ workflows/ # CI/CD pipelines
โ โโโ ISSUE_TEMPLATE/ # Issue templates
โโโ docs/ # Documentation
# Run all tests
npm test
# Run specific test suites
npm run test:unit
npm run test:integration
# With coverage
npm run coverage# Build TypeScript
npm run build
# Package extension
npm run package
# Publish (requires tokens)
npm run publish- Clone and Setup
git clone https://github.com/plures/FinancialAdvisor.git
cd FinancialAdvisor
npm install
npm run build- Install VSCode Extension
cd packages/vscode-extension
npm run package
code --install-extension financial-advisor-1.0.0.vsix- Configure MCP Server
# Set data directory
export FINANCIAL_ADVISOR_DATA_DIR="$HOME/.financial-advisor"
# Optional: Set encryption key
export FINANCIAL_ADVISOR_ENCRYPTION_KEY="your-secure-key"
# Start MCP server
npm run start --workspace=@financialadvisor/mcp-server- Open VSCode and activate the Financial Advisor extension
- Setup MCP Server via Command Palette:
Financial Advisor: Setup MCP Server - Add Your First Account using the dashboard or command:
Financial Advisor: Add Account - Import Transactions or add them manually
- Configure AI Provider for intelligent insights
The Add Account feature allows you to register your financial accounts for tracking and analysis.
- Open Command Palette (
Ctrl+Shift+P/Cmd+Shift+P) - Run Command:
Financial Advisor: Add Account - Fill in the details when prompted:
- Account Name: A unique identifier for your account
- Account Type: Choose from available types
- Current Balance: Enter the current account balance
- Institution (optional): Your bank or financial institution
checking- Primary checking accountssavings- Savings accounts and money market accountscredit_card- Credit card accounts (balances can be negative)investment- Investment and brokerage accountsloan- Personal loans and lines of creditmortgage- Home mortgages and property loansretirement- 401(k), IRA, and other retirement accounts
The system validates your input to ensure data integrity:
- โ Account names must be unique - Duplicate names are not allowed
- โ Required fields - Name, type, and balance are mandatory
- โ Valid account types - Only predefined types are accepted
- โ Numeric balance - Balance must be a valid number (negative allowed for credit cards)
- โ Whitespace handling - Leading/trailing spaces are automatically trimmed
Basic Checking Account:
Name: "Primary Checking"
Type: checking
Balance: 2,500.75
Institution: "Bank of America"
Credit Card (with negative balance):
Name: "Chase Freedom"
Type: credit_card
Balance: -1,250.00
Institution: "Chase Bank"
Investment Account:
Name: "Fidelity 401k"
Type: retirement
Balance: 125,000.00
Institution: "Fidelity Investments"
You can also add accounts programmatically via the MCP server:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "add_account",
"arguments": {
"name": "Savings Account",
"type": "savings",
"balance": 5000.00,
"currency": "USD",
"institution": "Local Credit Union"
}
}
}Common types, interfaces, and utilities used across all packages.
import { Account, Transaction, formatCurrency } from '@financialadvisor/shared';
const account: Account = {
id: 'acc-1',
name: 'Checking Account',
type: AccountType.CHECKING,
balance: 1500.00,
currency: 'USD',
lastUpdated: new Date(),
isActive: true
};
console.log(formatCurrency(account.balance)); // $1,500.00Core financial calculations and analysis tools.
import { BudgetCalculator, TransactionAnalyzer } from '@financialadvisor/financial-tools';
// Analyze spending patterns
const insights = TransactionAnalyzer.analyzeTransactions(transactions, timeframe);
console.log(`Savings rate: ${insights.savingsRate.toFixed(1)}%`);
// Budget analysis
const budgetAnalysis = BudgetCalculator.analyzeBudget(budget, transactions);
console.log(`Budget used: ${budgetAnalysis.percentageUsed.toFixed(1)}%`);AI provider abstractions for financial analysis.
import { AIProviderFactory, AIProviderType } from '@financialadvisor/ai-integration';
// OpenAI provider
const provider = AIProviderFactory.createProvider(AIProviderType.OPENAI, {
apiKey: 'your-api-key',
model: 'gpt-4'
});
// Analyze financial data
const response = await provider.analyzeFinancialData(context, {
type: 'analysis',
prompt: 'What are my spending patterns?'
});Secure local storage with MCP protocol support.
import { FinancialAdvisorMCPServer } from '@financialadvisor/mcp-server';
const server = new FinancialAdvisorMCPServer({
dbPath: './financial.db',
encryptionKey: 'your-encryption-key',
backupEnabled: true
});
await server.run();The VSCode extension provides a complete UI for managing your financial data:
Financial Advisor: Open Dashboard- Main financial dashboardFinancial Advisor: Add Transaction- Quick transaction entryFinancial Advisor: Add Account- Account managementFinancial Advisor: Analyze Spending- AI-powered spending analysisFinancial Advisor: Generate Report- Custom financial reportsFinancial Advisor: Configure AI- AI provider setup
- Accounts View - List and manage all accounts
- Transactions View - Recent transaction history
- Budgets View - Budget tracking and alerts
- Goals View - Financial goal monitoring
- Real-time account balances
- Transaction categorization
- Spending analysis charts
- Budget progress indicators
- Goal tracking widgets
Create a .financial-advisor-config.json file:
{
"aiModel": {
"provider": "local",
"model": "llama3",
"endpoint": "http://localhost:11434"
},
"privacy": {
"localOnly": true,
"encryptData": true
},
"features": {
"budgetTracking": true,
"investmentAdvice": true,
"goalSetting": true
}
}{
"financialAdvisor.autoStart": true,
"financialAdvisor.notifications": true,
"financialAdvisor.dataPath": "./financial-data"
}-
In VS Code, open Settings (Ctrl+,) and set:
- financialAdvisor.mcpServer.dataDir โ e.g., C:\Users\YOUR_USER\.financial-advisor
- financialAdvisor.mcpServer.path โ optional full path to financial-advisor-mcp if itโs not on PATH
-
Or add to your .vscode/settings.json:
- Optional: start the MCP server manually for troubleshooting:
# If installed globally or available on PATH
financial-advisor-mcp
# Or from the package (after building the monorepo)
pwsh -NoProfile -Command "npm run build:all:win; cd packages/mcp-server; node dist/cli.js"- Local-First: Financial data never leaves your machine by default
- Encryption: Sensitive data is encrypted at rest
- Audit Trail: All operations are logged for transparency
- No Telemetry: No usage data is collected without explicit consent
- ๐ End-to-end encryption for financial data
- ๐ก๏ธ Regular security scans (CodeQL, OSV)
- ๐ Dependency vulnerability monitoring
- ๐ SBOM generation for supply chain transparency
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make changes and add tests
- Run quality checks:
make check-all - Commit changes:
git commit -m 'feat: add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
- TypeScript with strict mode
- ESLint + Prettier for formatting
- Conventional Commits for commit messages
- 80%+ test coverage requirement
See docs/ROADMAP.md for the prioritized MVP and 1.0.0 plan.
- ๐ Issues
- ๐ฌ Discussions
- ๐ง Email: support@financial-advisor.dev
- ๐ Documentation
{ "financialAdvisor.mcpServer.dataDir": "C:\\Users\\YOUR_USER\\.financial-advisor", "financialAdvisor.security.encryptionEnabled": true }