Skip to content

About

Privacy-first financial portfolio tracker. Track CDs, savings, 401k, trading accounts & I-bonds locally. No cloud, no tracking, complete data privacy.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Net Worth Tracker

A secure, privacy-first financial portfolio management application that runs locally on your machine. Track your investments across multiple account types with strong authenticated encryption and complete data privacy.

Important

Scope & Intended Use — This is a fully-featured single-user application meant to run locally on one trusted computer — not a demo, but also not built for hosted/multi-user deployment. It binds to 127.0.0.1 only, serves traffic over the Flask built-in server (no bundled production WSGI server), and does not use TLS. The production environment simply disables debug mode; it is not a hardened production deployment. Do not expose it to a LAN or the internet without significant hardening (real WSGI server, TLS, a fixed SECRET_KEY, and secure cookies). See the Deployment Guide for details.

Quick Start

# Clone or download the application
git clone https://github.com/agasthik/networth-tracker.git networth-tracker
cd networth-tracker

# Set up and start (automated)
./scripts/start.sh  # macOS/Linux
scripts\start.bat   # Windows

# Or manually
python3 -m venv venv
source venv/bin/activate  # macOS/Linux: venv\Scripts\activate on Windows
python -m pip install -r requirements.txt
python scripts/start.py

Open your browser to http://127.0.0.1:5000

Key Features

Privacy & Security First

  • Local-only storage - Your data never leaves your computer
  • Strong encryption - AES-128-CBC + HMAC-SHA256 (Fernet) protects sensitive financial fields
  • No cloud dependencies - Works completely offline
  • Zero data collection - No analytics, tracking, or telemetry

Comprehensive Portfolio Tracking

  • Multiple Account Types: CDs, Savings, 401k, Trading, I-bonds, HSA
  • Real-time Stock Prices - Automatic updates for trading accounts via yfinance
  • Historical Performance - Track your portfolio growth over time with automated snapshots
  • Multi-broker Support - Manage accounts across different institutions
  • Stock Watchlist - Monitor stocks without owning them

User-Friendly Features

  • Demo Database - Import realistic synthetic data to explore features
  • Export/Import - Encrypted backups for data portability
  • Cross-platform - Windows, macOS, and Linux support
  • Browser-based - Clean, responsive web interface
  • Comprehensive Error Handling - User-friendly error messages and recovery
  • Flexible Configuration - Environment-specific settings (development, production, testing)

Dashboard Preview

Networth Tracker Dashboard

The main dashboard provides a comprehensive overview of your portfolio with real-time account summaries, asset allocation charts, and quick stats. The clean, responsive interface makes it easy to track your financial progress across all account types.

Documentation

Getting Started

Configuration & Deployment

Support & Troubleshooting

Project Structure

networth-tracker/
├── app.py                 # Main Flask application entry point
├── config.py              # Configuration management (environments, settings)
├── requirements.txt       # Python dependencies
├── scripts/               # Startup and utility scripts
│   ├── start.py          # Main startup script with environment detection
│   ├── start.sh          # Unix/Linux/macOS launcher
│   ├── start.bat         # Windows launcher
│   ├── init_db.py        # Database initialization
│   └── generate_demo_database.py # Demo data generation
├── models/               # Data models and account types
│   └── accounts.py       # Account models, enums, factory patterns
├── services/             # Business logic services
│   ├── auth.py           # Authentication and session management
│   ├── database.py       # Encrypted SQLite operations
│   ├── encryption.py     # Fernet (AES-128-CBC + HMAC-SHA256) encryption service
│   ├── historical.py     # Historical data tracking
│   ├── stock_prices.py   # Real-time stock price fetching
│   ├── export_import.py  # Data backup/restore
│   ├── error_handler.py  # Centralized error handling
│   ├── logging_config.py # Logging configuration
│   └── watchlist.py      # Stock watchlist management
├── templates/            # Jinja2 HTML templates
├── static/              # CSS, JavaScript, and assets
├── docs/                # Comprehensive documentation
├── tests/               # Test suites with integration tests
├── logs/                # Application logs (secure permissions)
├── backups/             # Encrypted data backups
└── data/                # Database files location

System Requirements

Minimum Requirements

  • Python: 3.10 or higher
  • RAM: 512 MB available memory
  • Storage: 100 MB free disk space
  • OS: Windows 10+, macOS 10.14+, Linux (Ubuntu 18.04+)
  • Network: Internet connection for stock price updates (optional)

Recommended

  • Python: 3.11 or higher
  • RAM: 1 GB available memory
  • Storage: 500 MB free disk space (for data and backups)
  • Browser: Modern web browser (Chrome, Firefox, Safari, Edge)

Security Features

Data Protection

  • Authenticated Encryption: Sensitive financial fields encrypted at rest with AES-128-CBC + HMAC-SHA256 (Fernet); indexing/routing columns such as account name, institution, type, and timestamps remain in plaintext
  • PBKDF2 Key Derivation: 100,000 iterations with random salt
  • Master Password: Single password protects all your data
  • Secure File Permissions: Database files protected at OS level

Privacy Guarantees

  • No Cloud Storage: All data remains on your local machine
  • No External Transmission: Only stock symbols sent to APIs (no financial data)
  • No Analytics: Zero telemetry or usage tracking
  • Open Architecture: Code can be audited for security

Network Security

  • Localhost Only: Application binds to 127.0.0.1 only
  • No Remote Access: Cannot be accessed from other machines
  • Minimal API Usage: Only stock price lookups via yfinance (symbols only)
  • Rate Limited: Stock API calls are rate-limited to prevent abuse

Supported Account Types

Account Type Features
Certificate of Deposit (CD) Principal, interest rate, maturity tracking
Savings Accounts Balance tracking, interest monitoring
401k Retirement Balance, employer match, contribution limits
Trading Accounts Stock positions, real-time prices, multi-broker support
I-bonds Purchase amount, inflation adjustments, maturity tracking
HSA (Health Savings Account) Contribution limits, employer contributions, investment tracking

Technical Architecture

Core Technologies

  • Backend: Python 3.10+ with Flask web framework
  • Database: SQLite with field-level Fernet encryption (AES-128-CBC + HMAC-SHA256)
  • Frontend: HTML templates (Jinja2), CSS, JavaScript
  • Security: cryptography library for encryption, PBKDF2 key derivation
  • Stock Data: yfinance library for real-time stock prices

Key Design Patterns

  • Service Layer Pattern: Business logic separated into service modules
  • Factory Pattern: Extensible account creation through AccountFactory
  • Repository Pattern: Database operations abstracted through DatabaseService
  • Comprehensive Error Handling: Centralized error management with user-friendly messages

Environment Support

  • Development: Debug mode, verbose logging, development database
  • Production: Debug mode disabled, strict file permissions, production logging — still a local, single-user, 127.0.0.1-only setup on the Flask built-in server (see the Scope & Intended Use note above and the Deployment Guide)
  • Testing: In-memory database, comprehensive test coverage

Getting Help

Support Resources

  1. FAQ - Common questions and answers
  2. Troubleshooting - Issue resolution guide
  3. Log Files - Check logs/ directory for error details
  4. Demo Environment Guide - Test functionality with synthetic data in an isolated database

Development Resources

  • Installation Guide - Complete setup instructions
  • Configuration Reference - Environment and security settings
  • Test Suite - Run python -m pytest from an activated virtual environment for comprehensive testing

License

Released under the Creative Commons CC0 1.0 Universal public-domain dedication. This project is designed for personal financial management with a focus on privacy and security.

Contributing

Contributions are welcome! Please read the documentation for development setup and contribution guidelines.


About

Privacy-first financial portfolio tracker. Track CDs, savings, 401k, trading accounts & I-bonds locally. No cloud, no tracking, complete data privacy.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages