Personal AI-Powered Financial Advisor - A local-first multiplatform desktop application for managing your finances with AI assistance.
FinancialAdvisor is a privacy-focused personal finance management system built with modern web technologies:
- π₯οΈ Tauri Desktop App - Cross-platform desktop application (Windows, macOS, Linux)
- β‘ SvelteKit UI - Modern, reactive user interface with Svelte 5
- π€ AI Integration - Support for multiple AI providers (OpenAI, Ollama, Copilot)
- π MCP Protocol - Model Context Protocol server for AI agent integration
- π Local-First - All data stored locally with optional encryption
- π¦ Modular Architecture - Well-organized monorepo with shared packages
- Account Tracking - Monitor multiple accounts (checking, savings, investment, credit cards, loans)
- Transaction Management - Add, categorize, and analyze transactions
- Data Import - Support for OFX, QFX, and CSV file formats
- Financial Calculations - Budget analysis, goal tracking, and net worth calculations
- Multi-Provider Support - OpenAI, GitHub Copilot, Ollama, or custom providers
- Smart Categorization - Automatic transaction categorization
- Spending Analysis - AI-powered pattern recognition and insights
- Predictive Analytics - Spending trends, forecasts, and anomaly detection
- Confidence Scoring - AI response validation and accuracy measurement
- Performance Optimization - Batch processing, rate limiting, and intelligent caching
- Local-First Storage - All data stored locally in SQLite database
- No Cloud Dependencies - Complete offline operation capability
- Data Encryption - Optional encryption for sensitive information
- Audit Trail - All operations logged for transparency
- No Telemetry - No usage data collected
- Node.js 22+ (required for ES module support)
- Rust 1.70+ - 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 ci
# Run in development mode
npm run tauri:dev
# Build for production
npm run tauri:buildFinancialAdvisor/
βββ π± src/ # SvelteKit frontend
β βββ routes/ # Application pages
β βββ lib/ # Shared UI components
β βββ shared/ # Shared utilities
βββ π¦ src-tauri/ # Tauri Rust backend
β βββ src/ # Rust source code
β βββ Cargo.toml # Rust dependencies
β βββ tauri.conf.json # Tauri configuration
βββ π¦ packages/ # Monorepo packages
β βββ shared/ # Common types and utilities
β βββ financial-tools/ # Financial calculations
β βββ ai-integration/ # AI provider abstractions
β βββ mcp-server/ # MCP server implementation
βββ π§ͺ test/ # Test suites
βββ unit/ # Unit tests
βββ integration/ # Integration tests
# Development
npm run dev # Start SvelteKit dev server
npm run tauri:dev # Start Tauri app in dev mode
npm run build # Build SvelteKit frontend
npm run tauri:build # Build Tauri app for production
# Testing
npm run test # Run all tests
npm run test:unit # Run unit tests (80/80 passing)
npm run test:integration # Run integration tests
npm run coverage # Generate coverage report
# Code Quality
npm run lint # Run ESLint
npm run lint:fix # Fix linting issues
npm run format # Format code with Prettier
npm run format:check # Check code formatting
npm run check # Type check with svelte-check
# Package Management
npm run build:packages # Build all monorepo packagesThis project uses ES2020 modules with the following requirements:
- All imports must include
.jsextensions:import { foo } from './bar.js' package.jsonhas"type": "module"- TypeScript configured with
"module": "ES2020" - Node.js 22+ required for full ES module support
The project has comprehensive test coverage with 80 passing unit tests:
# Run all tests
npm test
# Run specific test suites
npm run test:unit # All unit tests
npm run test:integration # Integration tests including AI providers
# With coverage
npm run coverageIntegration tests validate real API connections to AI providers. Tests automatically skip when API keys are not available:
# Run with OpenAI API key
export OPENAI_API_KEY="sk-your-api-key-here"
npm run test:integration
# Tests skip gracefully without API key
npm run test:integrationSee docs/AI_INTEGRATION_TESTING.md for detailed testing documentation.
Common types, interfaces, and utilities used across all packages.
import { Account, Transaction, formatCurrency } from '@financialadvisor/shared';Core financial calculations and analysis tools including budget calculator, transaction analyzer, and predictive analytics.
import { BudgetCalculator, TransactionAnalyzer, PredictiveAnalytics }
from '@financialadvisor/financial-tools';AI provider abstractions with support for OpenAI, GitHub Copilot, and Ollama.
import { AIProviderFactory, AIProviderType } from '@financialadvisor/ai-integration';Secure local storage with Model Context Protocol support.
import { FinancialAdvisorMCPServer } from '@financialadvisor/mcp-server';Set environment variables for the MCP server:
# Data directory
export FINANCIAL_ADVISOR_DATA_DIR="$HOME/.financial-advisor"
# Optional encryption key
export FINANCIAL_ADVISOR_ENCRYPTION_KEY="your-secure-key"
# Start MCP server
npm run start --workspace=@financialadvisor/mcp-serverConfigure AI providers via environment variables:
# OpenAI
export OPENAI_API_KEY="sk-your-api-key"
# GitHub Copilot
export GITHUB_TOKEN="ghp_your-token"
# Ollama (local)
export OLLAMA_HOST="http://localhost:11434"We welcome contributions! Please follow these guidelines:
- Fork and Clone - Fork the repository and clone locally
- Create Branch -
git checkout -b feature/amazing-feature - Make Changes - Add tests for new functionality
- Quality Checks - Run
npm run lint && npm run test - Commit - Use conventional commits:
feat: add amazing feature - Push and PR - Push to your fork and open a pull request
- TypeScript with strict mode enabled
- ES2020 modules with
.jsextensions on imports - ESLint + Prettier for code formatting
- Conventional Commits for commit messages
- Test coverage for new features
- API Documentation
- Developer Guide
- AI Integration Testing
- Network Configuration
- Architecture Decisions
- β ES Module Migration - Migrated from CommonJS to ES2020 modules with proper import/export syntax
- β Test Suite - 80/80 unit tests passing with comprehensive coverage
- β AI Integration - Multi-provider support (OpenAI, Copilot, Ollama)
- β Predictive Analytics - Spending forecasts, trend detection, and anomaly detection
- β Performance Optimization - Batch processing, rate limiting, and intelligent caching
- β Build System - Robust CI/CD with per-package dependency installation and builds
- β Workflow Fixes - Fixed awk syntax errors and module resolution issues
- β Code Quality - Fixed failing tests, removed unused imports, improved workflow robustness
Module System:
- All packages and source files use ES2020 modules with explicit
.jsextensions - TypeScript configured to emit ES modules instead of CommonJS
- Proper CommonJS interop for dependencies like sqlite3
Build Pipeline:
- Per-package
npm ciand build steps ensure proper dependency resolution - Subshell-based workflow commands for robust package builds
- Fixed awk version bumping syntax for semantic versioning
Test Infrastructure:
- ES module imports throughout test suite with proper
.jsextensions - Coverage reporting via NYC with ES module support
- Integration tests for real AI provider connections
- Building out Tauri desktop application features
- Enhancing AI-powered financial insights
- Improving test coverage and documentation
- Security hardening and code quality improvements
- Local-First Architecture - Data never leaves your machine by default
- Encryption at Rest - Optional AES encryption for database
- Regular Security Scans - CodeQL and OSV scanner in CI/CD
- Dependency Monitoring - Automated vulnerability detection
- No Telemetry - Zero data collection without explicit consent
- π Issues - Bug reports and feature requests
- π¬ Discussions - Questions and community chat
- π Documentation - Guides and API documentation
MIT License - see LICENSE for details.
Built with β€οΈ using Tauri, SvelteKit, and TypeScript