Systems & Ops

brFinancier

Private

Why this label: It's private work: the app and its code are closed to the public, so there's no link, and these screens use made-up data.

Sync every account into one ledger, catch duplicate imports, and track net worth and recurring subscriptions.

brFinancier showing an import batch of sample charges, each marked duplicate or new with an import or skip choice

Captured

Current status

Runs on a self-hosted server that's closed to the public, and the screens here show sample accounts.

Interactive tourNextGen Interactive LLC · Engineering ShowcaseInteractive Architecture Tour
A quick tour of brFinancier
Each step shows a real screen filled with made-up data.
brFinancier showing an import batch of sample charges, each marked duplicate or new with an import or skip choice
Import reviewMade-up data
Import review: A bank statement checked against the ledger before anything is written: duplicates skipped, new charges imported.
Import review
A bank statement checked against the ledger before anything is written: duplicates skipped, new charges imported.
How it works under the hood: This work is closed to the public, so the write-up covers the stack and what was hard to build.
Try → See → Get: Pick a preset below to update the preview screen and see the exact output.
Where to read morepreset_pills
The showcase page has the full write-up.
What you getWrite-up
Step progress & response previewstep=1/2 · mode=write_up
12
The overview lists the stack and the hardest parts of building it.
Tour step state:action=tour_interstitial_open·step=brFinancier-brfinancier-import·steward=nextgen_interactive
surface=work_slug_interstitial · saved locally in your browser

Overview

A self-hosted personal finance dashboard that mirrors accounts from a self-hosted budgeting server into one ledger, checks imports for duplicates, and tracks net worth and recurring subscriptions.

Why it was built

Commercial budgeting apps keep your financial history on their own servers instead of one you run.

Why it helps

The full history sits in a database you run, and a charge imported twice is caught before it is saved.

Built with

TypeScriptReactFastifyPostgreSQL

What was hard

  • Matching the same charge across overlapping imports without counting it twice
  • Checking every import with a dry run first, so nothing is written unless the counts match
  • Testing against a real database instead of mocks, so the numbers match what's stored

What you can do

  • Syncs every linked account into one ledger
  • Account rules that suggest where spare cash should go
  • Net worth and recurring subscription views
  • Amounts stored in whole cents across every account