Cointainr

A self-hosted portfolio tracker for stocks, ETFs, crypto and cash across brokers, with live prices and my data on my own server.

Screenshot of Cointainr

The problem

My investments sit with different brokers, in different asset types and currencies. The apps that pull them together want my account data on their servers, and most of them can’t show everything in one view anyway. I wanted one dashboard that I host myself.

What I built

  • Backend. FastAPI with a REST API for assets, prices and portfolio calculations.
  • Prices. A service that fetches quotes from Finnhub and CoinGecko, falls back to the other source when one fails, respects rate limits and caches results.
  • Frontend. SvelteKit and TypeScript: portfolio list, distribution by asset type and broker, performance per asset and the top holdings.
  • Currencies. Totals in EUR, USD, GBP, CHF and other currencies, with cached exchange rates.
  • Deployment. Docker Compose, built by GitHub Actions and published to the GitHub Container Registry.

What it does

  • Keeps all data on your own server; nothing goes to third parties
  • Tracks stocks, ETFs, crypto and cash in one place
  • Updates prices live, with caching to stay inside API limits
  • Shows distribution, performance and the biggest positions
  • Works on a phone, in a dark theme

Stack

Python, FastAPI, SvelteKit, TypeScript, Docker, GitHub Actions.