← Projects

Australian Superannuation Growth Calculator

Personal Project · 2025

A fully client-side React app encoding Australian ATO superannuation rules for FY2025–26, built to give fellow Australians a genuinely useful and free super projection tool.

The problem

Most freely available superannuation calculators are either oversimplified or buried behind financial product sign-up flows. There was no clean, independent, client-side tool that encoded the full ATO ruleset — concessional caps, Division 293 tax, LISTO, salary sacrifice — and let users model their own scenarios without an account or backend dependency.

Architecture

Australian Superannuation Calculator architectureSystem architecture showing the client-side only data flow from user inputs through the ATO rules engine to projection outputs and chart visualisation.User inputsPersonal detailsAge, balance, retirementIncomeSalary, SG, sacrificeAssumptionsReturn, inflation, feesRules engineATO rules enginesuperRules.js — FY2025–26SG rate11.5% → 12%Concessional cap$30k limit + warningsDiv 293 / LISTOHigh earner & low incomeOutputProjected balanceNominal + realYear-by-year tableCollapsible breakdownScenario comparisonBaseline vs alternativeVisualisationChart.js projection chart40-year balance over time

Approach

Built entirely client-side using React, Vite, Tailwind CSS, and Chart.js — with no backend and no runtime AI calls. The full ATO rules engine was written as a standalone JavaScript module encoding FY2025–26 rules: Superannuation Guarantee rates, concessional contribution caps ($30k), Division 293 tax for high earners (>$250k), and the Low Income Super Tax Offset (LISTO). The UI was built in a two-column layout — inputs left, results and chart right — with reactive validation that surfaces cap breach warnings and Division 293 applicability as the user types. A scenario comparison mode was added to let users model a baseline versus an alternative contribution strategy side by side on the same chart. The app was deployed on Vercel as a fully static artifact.

Key decisions and trade-offs

Fully client-side, no backend

Deliberately avoided any backend or runtime API calls. All projection logic runs in the browser — which keeps the app free to host, instant to load, and privacy-preserving. The ATO rules are stable enough year-to-year that encoding them at build time is a valid approach.

Standalone rules engine module

Separated the ATO rules logic into a dedicated superRules.js module before building any UI. This made the calculation engine independently testable and kept the UI layer clean — a pattern that would scale if investment strategy modules were added later.

Scenario comparison mode

Added a comparison mode that renders two independent contribution strategies — baseline and alternative — on the same four-line chart (nominal and real for each). This was the most complex UI feature but meaningfully increases the tool's usefulness for anyone modelling salary sacrifice trade-offs.

Challenges

ATO ruleset accuracy

Encoding the full ATO ruleset accurately required careful research — rules like the concessional cap, LISTO income thresholds, and Division 293 interaction are non-trivial to implement correctly.

Scenario comparison layout

The scenario comparison layout required significant iteration to avoid disrupting the existing two-column layout on both desktop and mobile.

Outcome

A deployed, publicly accessible tool at aus-super-calculator.vercel.app. Demonstrates the ability to independently scope, build, and ship a domain-specific client-side application — encoding complex real-world rules into a clean, usable product — without any backend infrastructure.

My role

Sole developer. Scoped the feature set, authored the rules engine, built and iterated the UI, handled responsive layout, and deployed to Vercel. Used Claude Code throughout the build as a development accelerator.

What I would do differently

I would add investment strategy selection — letting users model different risk profiles and their historical return assumptions rather than a single fixed rate. I would also add account creation and persistent storage so users can save and return to their projections over time rather than re-entering inputs each session.

Personal FinanceClient-sideReactAustralian Tax RulesData Viz
ReactViteTailwind CSSChart.jsVercel