Problem
FIRE planning questions are hard to answer with static spreadsheets when assumptions change frequently.
This case study shows how a local financial forecasting prototype was migrated into a publishable web app while maintaining parity in calculation behaviour.
Quick overview
FIRE planning questions are hard to answer with static spreadsheets when assumptions change frequently.
A browser-based forecasting app that lets users vary income, spending, assets, mortgage terms, and growth assumptions.
Users can compare realistic life choices, such as property decisions, and see how those choices shift FI timing.
Clear assumptions, transparent calculations, and fast scenario recompute for iterative decision-making.
Model design
This section uses a conceptual model to show how user assumptions are transformed into forecast outputs. It is the application equivalent of a traditional data model diagram.
The app models household finances month by month so users can test how savings, investments, pension, and housing choices affect FI timing.
The model is scenario-driven: users set assumptions once, then the engine projects trajectories and FI signals across the selected forecast horizon.
| Component | Role | Resolution | Purpose |
|---|---|---|---|
forecast_input_contract | Input contract module | One scenario payload per run | Captures assumptions for income, expenses, rates, contributions, inflation, and property or mortgage context. |
monthly_projection_series | Projection engine output | One monthly state per step in the forecast horizon | Tracks ISA, non-ISA, pension, home equity, income, expenses, and savings over time. |
fi_signal_outputs | FI signal calculator | One summary output per scenario run | Summarises FI date, years-until-FI, and passive-income indicators based on extraction-rate assumptions. |
chart_view_model | Presentation view model | One chart or table-ready element | Shapes trend lines, comparison views, and metrics cards for the UI. |
Delivery architecture
The delivery flow keeps Python as the calculation baseline and uses fixture snapshots to validate migration parity in the web implementation.
This improves confidence that published outputs match the reference model, while still enabling faster iteration in the frontend.
Outputs
The published app demonstrates how forecast assumptions translate into FI date estimates, passive income projections, and long-horizon trend views.
Reproducibility
python -m venv .venv && .venv\Scripts\activate && pip install -e ".[dev]"
python scripts/generate_forecast_fixtures.py
cd web && npm install && npm run test
cd web && npm run build Technical delivery detail
This case study documents a financial independence planning app built to answer a practical question: when could a household reach FIRE under different real-life choices. The core use case is scenario comparison, including how property decisions can accelerate or delay the FI timeline.
The project started from a personal planning need rather than a technology migration objective. I wanted a tool that could quickly answer “what happens if…” questions across savings rate, investment growth, pension contributions, and housing choices.
The app uses a deterministic projection engine and a browser UI optimised for rapid parameter changes. Inputs are translated into a monthly projection series, then summarised into FI signals and chart-ready outputs.
src/financial_forecaster/forecast.pyscripts/generate_forecast_fixtures.pyweb/src/application/buildForecastViewModel.test.tshttps://axiomatic-bi.github.io/financial-independence-forecaster/Transformation here means turning raw assumptions into decision-ready indicators. The pipeline is: assumptions -> monthly simulation -> FI signal calculation -> chart and metric view models.
The app provides a practical planning surface for FIRE exploration, not just a technical demonstration.