The main view of the Projections page. A chart-dominant layout showing projected net worth growth over 30 years with interactive controls and milestone markers.
/projections. Uses projection-engine.ts for compound growth math. Chart data computed via computeProjectionCurve(currentValue, monthlyContribution, annualReturn, years). Milestones stored in app_settings as a JSON preference — no new DB table needed.
withdrawal: true, reaching the milestone triggers a deduction from the portfolio. The projection curve shows a visible dip at that point and continues from the reduced amount. A faint ghost line shows what growth would've been without the withdrawal. Cascading impact is shown three ways: (1) ghost dots on the SVG chart at original milestone positions with connecting lines to shifted positions, (2) .mpi-delay badges on affected milestone picker items, and (3) a .withdrawal-impact-panel summary table showing before → after ETAs with delay tags. Stored as { ...milestone, group, showOnChart, withdrawal: boolean, withdrawalAmount?, withdrawalScope? }.
matchesFilter(asset, filterKey) from dashboard-aggregation.ts. For example, selecting "Zerodha" shows only Zerodha assets and auto-applies the 3 SIP rules totaling ₹18,000/mo that target that account. Selecting "Investable Only" excludes property and vehicles, projecting only liquid/investable growth.
Create, organize, and manage all your financial milestones. Group them by category, toggle chart visibility, and configure withdrawal events that impact your projection curve.
app_settings as JSON preference — no new DB table needed. Each milestone has { id, label, target, group, color, showOnChart, withdrawal?, withdrawalAmount?, withdrawalScope? }. The showOnChart flag controls which milestones appear as reference lines on the projection chart (Tab 1).
showOnChart syncs between both views — toggling a milestone's chart visibility in either place updates both. The "Reach by" date calculator uses calculateRequiredContribution(currentValue, targetValue, annualReturn, monthsRemaining) from projection-engine.ts.
Use templates or free-text to generate milestone suggestions powered by AI. Leverages the existing chat AI infrastructure.
POST /api/chat endpoint. The AI reads current portfolio data (net worth, expenses, asset allocation) to generate personalized milestones. Results are returned as a structured list of { label, target, category } objects.