Technex '26 | IIT(BHU) Varanasi | FinCal Innovation Hackathon
Co-sponsored by HDFC Mutual Fund
# 1. Install dependencies
npm install
# 2. Run in development mode
npm run dev
# → http://localhost:3000
# 3. Build for production
npm run build
# 4. Serve production build
npm run startA single-page Goal-Based Investment Calculator that helps users estimate the monthly SIP (Systematic Investment Plan) needed to reach a financial target, accounting for inflation and existing savings.
Users can interactively adjust:
- Current cost of goal (₹1L – ₹2Cr)
- Time horizon (1 – 30 years)
- Assumed inflation rate (2% – 15% p.a.)
- Expected rate of return (4% – 20% p.a.)
- Existing savings already allocated toward the goal
All projections update in real time. A trajectory chart and milestone breakdown table visualize the plan at a glance.
Goal-Based Investment Calculator — the only category implemented, as per hackathon rules.
All calculations follow the exact formulas specified in the hackathon brief.
FV = Present Cost × (1 + Inflation Rate)^Years
SIP = FV × r / [((1 + r)^n − 1) × (1 + r)]
where:
r = annual return / 12 (monthly rate)
n = years × 12 (total months)
Lump sum grows using the same monthly compounding as SIP for mathematical consistency:
Existing Growth = Savings × (1 + r)^n
Remaining Goal = max(0, FV − Existing Growth)
Adjusted SIP = Remaining Goal × r / [((1 + r)^n − 1) × (1 + r)]
All assumptions are clearly labeled as illustrative only and are fully user-editable.
| Dependency | Version | Purpose |
|---|---|---|
| Next.js | 15.5.9 | App Router, SSR, font optimization |
| React | 19.0.0 | UI rendering |
| Recharts | 3.8.0 | Area chart for trajectory visualization |
| Node.js | ≥22.11.0 | Runtime (per hackathon spec) |
| NPM | ≥10.9.0 | Package manager |
No additional third-party libraries are used.
| Element | Value | Usage |
|---|---|---|
| HDFC Blue | #224c87 |
Header, panels, sliders, chart accent |
| HDFC Red | #da3832 |
Section markers, insight card border, disclaimer |
| HDFC Grey | #919090 |
Decorative borders only (does not pass AA for text) |
| Primary Font | Montserrat | Loaded via next/font/google with swap |
| Fallbacks | Arial, Verdana | System font stack |
- Skip navigation link at the top of every page
- Semantic HTML:
<header>,<main>,<h1>→<h2>,<figure>,<aside> - ARIA attributes:
aria-valuemin,aria-valuemax,aria-valuenow,aria-valuetexton all sliders - Live regions:
aria-live="polite"on result display and insight card so screen readers announce changes - Screen reader fallback:
.sr-onlytext summarizing chart data for visually impaired users - Focus indicators:
3px solid #224c87via:focus-visible(meets WCAG 2.4.7) - Color contrast: all text exceeds 4.5:1 ratio on its background
#1a1a1aon white → 15.6:1#3d3d3don white → 11.0:1#224c87on white → ~8.9:1
| Breakpoint | Layout |
|---|---|
| Desktop (>800px) | Two-column hero, two-column slider grid |
| Mobile (≤800px) | Single-column stack, compact padding |
All interactive elements maintain a minimum 44×44px touch target.
The following disclaimer is displayed verbatim at the bottom of the page:
This tool has been designed for information purposes only. Actual results may vary depending on various factors involved in capital market. Investor should not consider above as a recommendation for any schemes of HDFC Mutual Fund. Past performance may or may not be sustained in future and is not a guarantee of any future returns.
fincal/
├── app/
│ ├── globals.css — CSS variables, reset, accessibility utilities
│ ├── layout.js — Root layout, Montserrat font, skip-nav, metadata
│ └── page.js — Page entry point (renders GoalCalculator)
├── components/
│ └── GoalCalculator.jsx — Self-contained calculator (UI + logic + scoped styles)
├── package.json — Dependencies and scripts
├── jsconfig.json — Path aliases (@/)
├── next.config.mjs — Next.js configuration
└── README.md
Route (app) Size First Load JS
┌ ○ / 114 kB 216 kB
└ ○ /_not-found 996 B 103 kB
○ (Static) prerendered as static content
Compiled successfully — 0 errors, 0 warnings
Built for the Technex '26 FinCal Innovation Hackathon. Not for commercial distribution.
