Budget Master — Personal Finance Dashboard
A budgeting tool (inspired by the envelope method) — extended with deep asset analysis, loan simulation and crypto tracking
The Problem
For a long time, I managed my finances with Excel spreadsheets. It worked — up to a point. Budget in one tab, investments in another, crypto on a separate app, loan simulations done by hand. No global view, no projection, and every time I wanted to answer a simple question — 'if I take out this loan, what's my net worth in 5 years?' — I had to juggle three different files. I decided to build the tool I wished I had.
Approach
I started with the most immediate feature: monthly income and expense tracking with categorization, inspired by the envelope budgeting method. The goal was to have a clear cash flow view before tackling net worth.
I then built the net worth dashboard — broken down by asset class (cash, investments, real estate, crypto) with Recharts charts to visualize evolution over time.
The loan simulator was added to answer a concrete need: compare multiple financing scenarios, see the full amortization schedule and the real total cost of a loan.
The long-term projection engine lets you configure assumptions (savings rate, investment returns, inflation) and visualize net worth evolution over 10, 20 or 30 years.
Real-time crypto tracking via public APIs (CoinGecko) was integrated to get automatic position valuations without manual entry.
Technical Details
Transaction-centered data model: every financial movement is categorized, dated and tagged — allowing any aggregated view (monthly, annual, by category) to be reconstructed from a single source of truth.
Recharts was chosen for its customization flexibility and natural React integration — long-term projection charts required composite curves with multiple overlaid data series.
Financial data security is handled via Supabase Row Level Security: each user can only access their own data, with RLS policies defined at the database level rather than in application code.
For the public demo version, all data is fictional and generated client-side — no real data is persisted, allowing a recruiter to test the application without any risk.
Challenges & Solutions
The long-term projection engine was the most complex to model: making variables like monthly savings rate, investment returns, ongoing loan repayments and inflation interact coherently over 30 years, without results drifting toward incoherent figures.
Real-time crypto price synchronization posed a performance problem: calling the CoinGecko API on every render would have exhausted the free quota. I implemented a client-side cache with 5-minute invalidation to balance data freshness and performance.
Results & Impact
- Used personally every month since December 2025 — completely replaces Excel and 2 separate applications.
- Unified view of net worth, monthly budget and projections in a single interface.
- The loan simulator enabled concrete comparison of multiple financing scenarios before making a decision.
- Public demo version available for demonstration — fictional data, no real data persisted.
Architecture
User input (transactions, assets, parameters) → Supabase/PostgreSQL with RLS → React calculation layer (aggregations, projections, amortizations) → Recharts for visualization → CoinGecko API via 5-min client cache for real-time crypto prices.
What I Learned
Building a financial tool for yourself is a particular exercise: you're both the developer and the end user, which forces you to confront UX friction immediately rather than ignore it. This project taught me how to model systems with complex interdependent states — and how much clarity in visualization matters as much as accuracy in calculations.