Building
Full StackProduct Experiment

MoneyQuest

An interactive 12-month financial life simulation that makes everyday money decisions visible before they become expensive.

Status

Building

Focus

Full Stack, Product Experiment

Primary Stack

Java 21 + Spring Boot

Type

Case Study

See the year take shape

Four screens show MoneyQuest from first payday through monthly play, financial-health reflection, and the final year summary.

Landing experienceA focused entry point frames the product promise around a first payday and a year of real decisions.
Monthly simulationThe month view keeps available cash, commitments, progress, and transaction history visible together.
Financial healthA five-dimension view replaces a single score with a more useful picture of resilience, liquidity, debt, saving, and balance.
Year in MoneyThe end-of-year summary turns twelve months of choices into cash-flow charts, annualised costs, and defining moments.

Overview

MoneyQuest is a full-stack educational simulation for young South African professionals. Players navigate a Johannesburg first-job year, make choices about housing, transport, technology, savings, debt, and lifestyle, then see those choices reshape their cash flow and financial health.

Anonymous quest bootstrap with a signed token so players can start without an account

South African context with PAYE, UIF, Johannesburg costs, recurring commitments, debt, and life events

Five-dimensional financial health view covering resilience, liquidity, debt load, saving habit, and lifestyle balance

Year-in-Money summary with spending breakdowns, monthly cash flow, annualised surprises, and key decisions

What-if simulations and replay flows that make alternative choices inspectable

Why I Built It

MoneyQuest is an exploration of experiential financial education. Personal finance advice often arrives as a list of rules, but the hard part is understanding how ordinary choices interact over time.

The simulation gives a young professional a first year of independence to navigate. The goal is not to reward one perfect answer; it is to make trade-offs, recurring commitments, surprises, and consequences easier to feel and remember.

The Problem

Problem statement

Personal finance is often presented as isolated rules, while real decisions compound. A housing choice changes future cash flow, a phone contract creates a recurring commitment, and an unexpected event tests whether savings exist when they are needed.

A more expensive home changes what is available next month. A phone contract becomes a future commitment. A family emergency exposes whether savings exist when they are needed. These connections are difficult to understand when every decision is taught in isolation.

MoneyQuest also needed to feel locally relevant. PAYE, UIF, Johannesburg rent, Gautrain costs, store accounts, family support, and load-shedding surprises make the scenario concrete for the audience it is designed to teach.

The Solution

The product starts with a payslip and then moves month by month through a financial year. Each month combines income, recurring commitments, debt repayments, decisions, life events, and a transaction feed so the player can see what changed.

The experience continues after the simulation: a five-dimension financial-health view explains the current position, the Year in Money summary exposes annualised costs and defining decisions, What-If forks compare alternative choices, and Replay Quest makes the experiment repeatable.

Tech Stack

Java 21
Spring Boot
Next.js
TypeScript
PostgreSQL / SQLite
Docker

Technical Decisions

Keep the simulation state on the backend

Runs, commitments, debt, savings, transactions, decisions, and life events are persisted by the Spring Boot service. That gives the simulation one authoritative state model and makes the same run available to the health, summary, what-if, and replay screens.

Use anonymous quest bootstrap with a signed token

Players can start immediately without creating an account. The API returns a signed token for the quest, while registration and login remain available when persistent identity is needed.

Keep the frontend statically exportable

The Next.js frontend can be developed independently, then exported and served by the Spring Boot application in the production container. This keeps deployment compact without coupling local frontend iteration to the backend build.

Make scenario paths reproducible with seeds

An optional seed makes event selection inspectable and gives development and debugging a repeatable run. That is especially useful for a simulation whose value depends on the relationship between several months of state.

Challenges

Making consequences visible without turning the product into a spreadsheet

The interface has to surface enough financial detail to teach, while preserving the pace of a playable story. Cash displays, transaction history, compact health cards, and the annual summary give the numbers context without making every screen a ledger.

Keeping calculations consistent across views

The same run feeds the game, financial health, Year in Money, and What-If experiences. Persisting the domain state in the backend and mapping it through a typed service boundary prevents each screen from inventing its own version of the player’s finances.

Balancing realism with a deliberately finite simulation

MoneyQuest is an educational model, not a complete financial planner. A finite catalogue, a defined South African scenario, and explicit scope limits make the first experience understandable while leaving room for future datasets and hosted runs.

What I Learned

A financial lesson becomes more memorable when the player experiences the trade-off before reading the explanation.

A simulation needs a single source of truth for state if several views are going to explain the same journey.

Local context is part of product design: tax, transport, housing, and family obligations shape the meaning of a choice.

Reproducible scenarios make probabilistic behaviour easier to test, debug, and discuss.

Current Status

building

MoneyQuest is actively in development. The repository contains the current implementation, tests, and setup path; there is no public demo URL attached yet.

System Design

MoneyQuest — Eleazar Nhamuave