Self-Hosted Finance Dashboard
Most budgeting apps make you choose: link your bank and trust a third party with your financial life, or track spending by hand and give up on automation. I wanted the automation (auto-categorized spending, a real budget, a debt-payoff plan) without handing raw bank credentials to anyone but the bank’s own aggregator.
I built a self-hosted finance dashboard where Plaid handles the bank connection and the app never sees a login, only encrypted access tokens. Transactions sync via Plaid’s cursor-based endpoint, so ingestion is incremental and idempotent instead of a nightly full re-pull, and a signature-verified webhook triggers a sync the moment a transaction posts.
From there the app turns raw transactions into decisions: auto-categorized spending, recurring-charge detection (Plaid’s ML product plus a custom estimator for variable usage-based bills it can’t peg), a budget generated from income and spending with surplus auto-routed to debt then savings then investing, and an avalanche/snowball payoff planner that simulates APR month by month to a payoff date.
I also extended it past the web app with a Discord bot for quick manual logging (DM it “dinner out 45” and it parses amount, category, and date into the same backend), and a native iOS/Android app in Expo with Face ID unlock and push alerts for large charges. Backend, frontend, bot, and mobile client all share one authenticated API.
Screens shown with sample data.