RandWise is a South African personal finance coach built with a Svelte frontend and a Laravel API.
It turns bank statement CSVs into clear ZAR-based dashboards, spending insights, recurring debit order detection, and realistic savings goals.
Most budgeting apps feel generic. RandWise is designed around South African money habits: debit orders, prepaid electricity, airtime and data, fuel, local banks, and rand-based goal planning.
This repo is built as a portfolio project for a junior full-stack role. It shows product thinking, frontend polish, backend API design, file uploads, data processing, and tests.
/api/demo and /api/statements/previewThe current coaching layer is deterministic so the demo works without paid API keys. It is structured so an LLM summary provider can be added later.
randwise/
api/ Laravel API
web/ Svelte frontend
sample-data/ Demo bank statement CSVs
docs/ Portfolio and demo notes
Run the Laravel API:
cd api
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate
php artisan serve
Run the Svelte frontend in another terminal:
cd web
npm install
npm run dev
The frontend proxies /api requests to http://127.0.0.1:8000.
Use this sample CSV in the upload flow:
sample-data/capitec-demo-statement.csv
cd api
composer test
cd web
npm run check
npm run build
I built RandWise, a personal finance coach for South Africans. It imports bank statements, categorises local spending, detects recurring debit orders, and turns messy transaction history into practical monthly money actions.