crypto-portfolio-tracker: A Coin PnL Tracker That Locks SQLite Without the Cloud

Lowbetweentrim/crypto-portfolio-tracker

·2026.11.06 21:48

A web application that stores cryptocurrency transaction history and wallet addresses locally to calculate real-time profit and loss (PnL). It requires no account creation or IP tracking, keeping all data on the user's device or server to fully guarantee financial data sovereignty. Unlike centralized services, it has no subscription fees or cloud dependencies.

Past transaction history can be imported via exchange APIs such as Binance and Coinbase, or through CSV files. It supports Ethereum, Bitcoin, Solana, and EVM-based chains, and queries the latest prices and wallet balances via the CoinGecko API and Binance WebSockets. It only requires public addresses or read-only API keys and does not ask for private keys.

Data is stored in a SQLite database encrypted with SQLCipher. Portfolio allocation and performance trends are visualized with interactive charts, and realized/unrealized PnL CSV reports for tax filing can be exported. It can be deployed with a single command using Docker Compose, simplifying server environment setup.

It is suitable for developers who prioritize privacy or are concerned about data leaks from existing cloud-based portfolio management tools. Built with the Next.js, TypeScript, and React stack, it is released under the MIT license, allowing free modification and redistribution. Locking the database with a local master password is provided as the default security measure.

GitHub
GitHub repository

Lowbetweentrim/crypto-portfolio-tracker

Self-hosted, privacy-first crypto portfolio tracker. Import transactions via CSV, track real-time PnL, and manage your assets locally. No cloud, no subscriptions. Open-source

Python

This introduction was generated automatically by AI. Check the original for the author's claims and context. Copyright belongs to the original author.

Our guide explains how the AI works. Report errors, attribution issues, or removal requests via Contact.