Software · Self-hosted · 2025

WealthTrack

A self-hosted family net-worth tracker with dead-simple data entry and beautiful charts.

Role
Full-stack design & build
Stack
Vue · TypeScript · Hono · Docker
The WealthTrack analytics dashboard showing net worth trend and asset allocation
Overview

Your money, on your machine

WealthTrack tracks a household’s net worth across stocks, real estate, crypto, cash and liabilities — no cloud, no subscriptions. Data lives in plain YAML and CSV files that are trivial to back up, edit and audit.

The challenge

Simple to use, correct under the hood

Personal finance tools tend to be either too simple to be useful or too complex to maintain. The brief was dead-simple monthly data entry with charts that make trends obvious — while keeping the storage layer robust and concurrency-safe.

The approach

Human-readable data, safe writes

The whole app runs as a single self-hosted container. Writes are built to survive a crash or a clash without corrupting data, and long-term projections compound properly rather than using a rough annual average — small correctness details that matter over years of data.

Architecture
A single container, human-readable data
  1. 01
    Data files
    database.yaml + datapoints.csv
  2. 02
    Hono API
    Atomic writes · global mutex
  3. 03
    Vue frontend
    Area, line, bar & pie charts
  4. 04
    Projections
    Compound monthly growth

Ships as one Docker image on a single port, with data persisted to a mounted volume created on first run.

What it does
  • Net worth across asset categories

    Stocks, real estate, crypto, cash and liabilities all live in one view, so the household number is never spread across five spreadsheets. Each category is colour-coded and carries its own projected yearly growth rate. Adding a category takes one entry in the config.

  • Interactive area, line, bar & pie charts

    Area and line charts show how net worth moves over time, while bar and pie views break down where the money actually sits. Time ranges are switchable, so a bad month reads differently against a five-year trend. The charts are the point of the app — data entry exists to feed them.

  • Projections with configurable growth

    Growth rates can be set per category or overridden for a single asset, so a rental property and an index fund are never forced to share the same assumption. Projections compound properly month to month rather than a rough annual average — over a decade of data, that difference adds up.

  • Income tracking

    A dedicated dashboard tracks cash coming in alongside the assets it builds up. Without it, a rising net worth says nothing about whether the household is actually saving. It keeps the inflow side visible next to the balance.

  • Dark / light theme

    The whole interface, charts included, switches between dark and light. Both themes are treated as first-class rather than one being an inverted afterthought. The choice persists between visits.

  • Plain text storage

    Everything lives in plain files you can open, edit and back up like any document. No database to migrate, nothing proprietary, nothing to lock you in.

  • Single self-hosted container

    The whole app runs as one self-hosted container — a single command to deploy, one place your data lives. No multi-service stack to babysit.

  • Audit log of every change

    Every change is logged, so a number that shifts unexpectedly can always be traced back to when and how. Writes are built to survive a crash or a clash — the data files can never be left half-updated.

Want the next one to be yours?

Start a project →