Skip to content

afadil/wealthfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Logo

Wealthfolio

A Beautiful and Boring Desktop Investment Tracker

Website Β· Discord Β· Twitter Β· Releases

Buy me a coffee button

Introduction

Wealthfolio App is a Beautiful and Boring Investment Tracker, with Local Data Storage. No Subscriptions, No Cloud.

Visit the app website at Wealthfolio App.

Screenshot

✨ Key Features

  • πŸ“Š Portfolio Tracking - Track your investments across multiple accounts and asset types
  • πŸ“ˆ Performance Analytics - Detailed performance metrics and historical analysis
  • πŸ’° Activity Management - Import and manage all your trading activities
  • 🎯 Goal Planning - Set and track financial goals with allocation management
  • πŸ”’ Local Data - All data stored locally with no cloud dependencies
  • 🧩 Extensible - Powerful addon system for custom functionality
  • 🌍 Multi-Currency - Support for multiple currencies with exchange rate management
  • πŸ“± Cross-Platform - Available on Windows, macOS, and Linux

🧩 Addon System

Wealthfolio features a powerful addon system that allows developers to extend functionality:

  • πŸ”Œ Easy Development - TypeScript SDK with full type safety and hot reload
  • πŸ”’ Secure - Comprehensive permission system with user consent
  • ⚑ High Performance - Optimized for speed with minimal overhead
  • 🎨 UI Integration - Add custom pages, navigation items, and components
  • πŸ“‘ Real-time Events - Listen to portfolio updates, market sync, and user actions
  • πŸ—„οΈ Full Data Access - Access to accounts, holdings, activities, and market data
  • πŸ” Secrets Management - Secure storage for API keys and sensitive data

Get started building addons: Addon Developer Guide

Documentation for all Activity types, including the required form fields, is available in docs/activities/activity-types.md.

Roadmap

See ROADMAP.md.

πŸ“– Documentation

Core Application

  • Activity Types - Complete guide to all supported activity types and their required fields
  • Roadmap - Future plans and development roadmap

Addon Development

Quick Links

Getting Started

Prerequisites

Ensure you have the following installed on your machine:

Building from Source

  1. Clone the repository:

    git clone https://github.com/afadil/wealthfolio.git
    cd wealthfolio
  2. Install dependencies using pnpm:

    pnpm install
  3. Run in Development Mode:

Build and run the desktop application using Tauri:

pnpm tauri dev
  1. Build for Production:

Build the application for production:

pnpm tauri build

Development with DevContainer

For a consistent development environment across all platforms, you can use the provided DevContainer configuration. This method requires fewer manual setup steps and provides an isolated environment with all necessary dependencies.

Prerequisites

Features

  • Pre-configured Tauri development environment
  • X11 virtual display with VNC access (port 5900)
  • Complete Rust development setup
  • GPU support (via Docker's --gpus=all flag)
  • Persistent data and build caches
  • Essential VS Code extensions pre-installed

Starting Development with DevContainer

  1. Clone the repository (if you haven't already):

    git clone https://github.com/afadil/wealthfolio.git
    cd wealthfolio
  2. Open in VS Code:

    • Open VS Code
    • Go to File > Open Folder
    • Select the wealthfolio directory
  3. Launch DevContainer:

    • Press F1 or Ctrl+Shift+P
    • Type "Remote-Containers: Reopen in Container"
    • Press Enter
  4. Wait for container build:

    • VS Code will build and configure the development container
    • This may take a few minutes on first run
  5. Start Development:

    • Once the container is ready, you can start development
    • All necessary tools and dependencies will be available

Addon Development

Wealthfolio supports a powerful addon ecosystem that allows developers to extend functionality with custom features.

Quick Start with Addons

  1. Create a new addon:

    npx @wealthfolio/addon-dev-tools create my-addon
    cd my-addon
    npm install
  2. Start development server:

    npm run dev:server
  3. Start Wealthfolio in development mode (in another terminal):

    pnpm tauri dev

Your addon will be automatically discovered and loaded with hot reload support!

Addon Features

  • 🎨 UI Integration: Add custom pages and navigation items
  • πŸ“Š Data Access: Full access to portfolio, accounts, and market data
  • πŸ“‘ Real-time Events: React to portfolio updates and user actions
  • πŸ” Secure Storage: Store API keys and sensitive data securely
  • ⚑ Hot Reload: Seamless development experience
  • πŸ”’ Permission System: Transparent security with user consent

Example Addons

Check out the addons/ directory for sample addons including:

  • Goal Progress Tracker: Visual goal tracking with calendar like interface
  • More examples in the documentation

Resources

Technologies Used

Frontend

  • React: JavaScript library for building user interfaces.
  • React Router: Declarative routing for React.
  • Tailwind CSS: Utility-first CSS framework for styling.
  • Radix UI/Shadcn: Accessible UI components.
  • Recharts: Charting library built with React.
  • React Query: Data-fetching library for React.
  • Zod: TypeScript-first schema declaration and validation library.

Backend

  • Tauri: Framework for building tiny, secure, and fast desktop applications.
  • Rust: Systems programming language for core backend functionality.
  • SQLite: Embedded database for local data storage.
  • Diesel: Safe, extensible ORM and query builder for Rust.

Addon System

  • @wealthfolio/addon-sdk: TypeScript SDK for addon development with full type safety.
  • @wealthfolio/addon-dev-tools: CLI tools and development server for hot reload.
  • @wealthfolio/ui: Shared UI component library for consistent styling.

Development Tools

  • Vite: Next-generation frontend tooling.
  • TypeScript: Typed superset of JavaScript.
  • ESLint: Pluggable linting utility for JavaScript and JSX.
  • Prettier: Code formatter.
  • pnpm: Fast, disk space efficient package manager.
  • Turborepo: High-performance build system for JavaScript and TypeScript codebases.

Folder Structure

wealthfolio/
β”œβ”€β”€ src/                         # Main source code for the React application
β”‚   β”œβ”€β”€ addons/                  # Addon system core functionality
β”‚   β”œβ”€β”€ components/              # React components
β”‚   β”œβ”€β”€ pages/                   # Application pages and routes
β”‚   β”œβ”€β”€ hooks/                   # Custom React hooks
β”‚   └── lib/                     # Utility libraries and helpers
β”œβ”€β”€ src-core/                    # Core backend functionality (Rust)
β”œβ”€β”€ src-tauri/                   # Tauri-specific code for desktop app functionality
β”œβ”€β”€ addons/                      # Example and sample addons
β”‚   └── goal-progress-tracker/   # Goal Progress tracker addon example
β”œβ”€β”€ packages/                    # Shared packages and tools
β”‚   β”œβ”€β”€ addon-sdk/               # Addon SDK for developers
β”‚   β”œβ”€β”€ addon-dev-tools/         # Development tools and CLI
β”‚   └── ui/                      # Shared UI components library
β”œβ”€β”€ docs/                        # Documentation
β”‚   β”œβ”€β”€ addons/                  # Addon development documentation
β”‚   └── activities/              # Activity types documentation
β”œβ”€β”€ public/                      # Public assets
β”œβ”€β”€ db/                          # Database files and migrations
β”œβ”€β”€ LICENSE                      # License file
β”œβ”€β”€ README.md                    # Project documentation
β”œβ”€β”€ ROADMAP.md                   # Future plans and roadmap
β”œβ”€β”€ components.json              # Component configuration
β”œβ”€β”€ package.json                 # Node.js dependencies and scripts
β”œβ”€β”€ pnpm-lock.yaml               # Lock file for pnpm
β”œβ”€β”€ postcss.config.js            # PostCSS configuration
β”œβ”€β”€ tailwind.config.js           # Tailwind CSS configuration
β”œβ”€β”€ tsconfig.json                # TypeScript configuration
└── vite.config.ts               # Vite build tool configuration

Security & Data Storage

Local Data Storage

All your financial data is stored locally using SQLite database with no cloud dependencies:

  • Portfolio holdings and performance data
  • Trading activities and transaction history
  • Account information and settings
  • Goals and contribution limits

API Keys & Secrets

API credentials are securely stored using the operating system keyring through the keyring crate:

  • Core App: Use set_secret and get_secret commands for external services
  • Addons: Use the Secrets API (ctx.api.secrets) for addon-specific sensitive data
  • No Disk Storage: Keys never written to disk or configuration files

Permission System

Addons operate under a comprehensive permission system:

  • Automatic code analysis during installation
  • User consent required for data access
  • Risk-based security warnings
  • Transparent permission declarations

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository.
  2. Create a new branch (git checkout -b feature-branch).
  3. Make your changes.
  4. Commit your changes (git commit -m 'Add some feature').
  5. Push to the branch (git push origin feature-branch).
  6. Open a pull request.

License

This project is licensed under the AGPL-3.0 license. See the LICENSE file for details.

🌟 Star History

Star History Chart

Enjoy managing your wealth with Wealthfolio! πŸš€

About

A Beautiful Private and Secure Desktop Investment Tracking Application

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project