A zero-build, single-file business analytics web tool. Upload an Excel spreadsheet of time-series financials and instantly get growth metrics, trend charts, forecasts, and best/base/worst scenario modelling — all client-side, no server, no backend.
- Excel upload (
.xlsx,.xls,.csv) parsed in-browser with SheetJS. - Auto-detection of date / period column and numeric metrics — no schema config needed.
- Key metrics — Latest, Mean, MoM Δ, YoY Δ, CAGR, Volatility (CV), Min / Max.
- Forecasting — choose between linear regression (least-squares) or moving average, project 1–60 future periods.
- Scenario modelling — Best / Base / Worst sliders apply compounding annual growth deltas to the base forecast.
- Charts — line or bar visualisation via Chart.js, with solid history and dashed forecast bands.
- Data preview — collapsible table of historical and forecast values.
- 100% client-side — drop the file open it locally, or host it as a static page.
git clone https://github.com/alfredang/financialtrend.git
cd financialtrend
# just open it
start index.html # Windows
open index.html # macOS
xdg-open index.html # LinuxNo npm, no build step, no dependencies to install. Libraries (SheetJS, Chart.js) are loaded from CDN.
Open the page with ?demo=1 (or click Load Sample) for a built-in
24-month synthetic revenue/COGS/OpEx/profit dataset.
The first column with date-like values becomes the x-axis; every other numeric column is selectable as a metric.
| Period | Revenue | COGS | OpEx | Net Profit |
|---|---|---|---|---|
| 2024-01 | 12000 | 4000 | 3000 | 5000 |
| 2024-02 | 13500 | 4200 | 3100 | 6200 |
| ... | ... | ... | ... | ... |
Supported period formats: YYYY-MM, YYYY-MM-DD, MM/YYYY, Q1 2024,
plain YYYY, and Excel date serials.
| Metric | Formula |
|---|---|
| MoM Δ | (v[n] − v[n−1]) / v[n−1] |
| YoY Δ | (v[n] − v[n−12]) / v[n−12] (or n−4 for quarterly) |
| CAGR | (v[end] / v[start])^(1 / years) − 1 |
| Volatility (CV) | stdev(v) / mean(v) |
| Linear forecast | Least-squares fit y = m·x + b, projected forward |
| Moving avg forecast | Rolling SMA, window = 3 |
| Scenario adjustment | forecast × (1 + Δ_annual)^(t / steps_per_year) |
- HTML + CSS Grid + vanilla JavaScript (ES2020)
- SheetJS / xlsx — Excel parsing
- Chart.js 4 — charts
Pushing to main triggers a GitHub Actions workflow
(.github/workflows/pages.yml) that
publishes the site to GitHub Pages. To enable:
- Settings → Pages → Source: GitHub Actions.
- Push a commit to
main— the workflow does the rest.
MIT.
