Abrar Mahir Esam
Résumé

Rebuilding a 2022 course project: MAT Bank v2

3 November 2026JavaJavaFXSQLiteTesting

Same screens, new foundations: how a JavaFX course project went from text files and plain-text passwords to SQLite, exact money and 84 tests.

On this page

MAT Bank began in 2022 as a JavaFX course project at MIST, built by me, Mehmil Khan and Farheen Mahjarin Trisha. In 2026 I went back to it. Version 2.0 keeps the same screens and ideas and replaces everything underneath.

What changed

In 2022In v2.0
Text filesSQLite, with versioned migrations
Money as doublesExact integer poisha, in one ledger with running balances
Plain-text passwordsbcrypt hashes, lockout after 5 attempts and an audit log
TransfersOne all-or-nothing database transaction

The money change is the one I'd tell anyone to make early. Floating point is fine for a lot of things and wrong for balances, so amounts are whole integers of the smallest unit, and every balance comes from the ledger.

Tested and shipped like a real app

  • 84 JUnit tests, including UI flows that run on a virtual display
  • Native deb, dmg and msi installers built by GitHub Actions
  • PDF statements, scheduled payments, live exchange rates and search
  • One window with light and dark themes, and an admin view
MAT Bank: Dashboard
Dashboard
MAT Bank: Dashboard, dark theme
Dashboard, dark theme
MAT Bank: Welcome
Welcome
MAT Bank: Send money
Send money
MAT Bank: Scheduled payments
Scheduled payments
MAT Bank: Statements
Statements
MAT Bank: History
History
MAT Bank: Currency
Currency
MAT Bank: Admin overview
Admin overview
MAT Bank: Admin clients
Admin clients

Built with Java 21, JavaFX 21, SQLite, JUnit and GitHub Actions.