Skip to content

A simple EVM portfolio tracker that gets data exclusively from user-provided RPC endpoints.

Notifications You must be signed in to change notification settings

gskril/evm-portfolio

Repository files navigation

EVM Portfolio Tracker

A local-first, privacy-focused EVM portfolio tracker that gets data exclusively from user-provided RPC endpoints.

EVM.Portfolio.Demo.mp4

Uses the 1inch Spot Price Aggregator to get asset values from onchain data.

The application explicitly doesn't care about transaction history to reduce complexity and maximize privacy. For more precise accounting, use Rotki.

Features

  • Add/edit accounts
  • Add/edit chains
  • Add/edit tokens
  • Add/edit manual balances for tracking assets on exchanges
  • View token balances
  • View token/portfolio value in USD/EUR/ETH
  • View portfolio value over time (chart appears after 3 days)

Getting Started

This is intended to be run on a private home server with access to an Ethereum node. There is no additional user auth.

Docker (recommended)

Use the following Docker Compose file to expose the web client on port 8580.

services:
  evm-portfolio:
    image: ghcr.io/gskril/evm-portfolio:latest
    container_name: evm-portfolio
    ports:
      - 8580:8580
    environment:
      - REDIS_URL=redis://redis:6379
      # Use this if you visit your local server from a different hostname
      # - __VITE_ADDITIONAL_SERVER_ALLOWED_HOSTS=
    depends_on:
      - redis
    volumes:
      - evm-portfolio_data:/app/data
    restart: unless-stopped

  redis:
    image: redis:latest
    container_name: redis
    restart: unless-stopped

volumes:
  evm-portfolio_data:

Development

Redis is used with BullMQ to manage background jobs. I don't like using Docker for local development, so you'll need to install and run redis-server separately on your machine.

# Install dependencies for all workspaces
bun install
# Run everything
bun run dev

# Or run individual parts
bun run dev:server
bun run dev:client

About

A simple EVM portfolio tracker that gets data exclusively from user-provided RPC endpoints.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Languages