Retail Banking and Brokerage Platform
A retail banking and brokerage web application that models four connected roles instead of one isolated feature: public visitors browse assets, customers manage accounts, portfolios, transactions, watchlists, transfers, and trades, tellers handle account maintenance, and managers review and approve pending requests. I built it as a learning project to work through the problems real banking software has to solve — role boundaries, money movement, and approval state.
How it works
- Layered structure: JSP views for presentation, Jakarta Servlets for request handling, DAO classes for JDBC data access, and shared model and utility classes underneath.
- A normalized Oracle XE schema with stored procedures and views; SQL scripts define the schema, seed data, and verification steps.
- Transfers and trades execute through stored procedures, keeping money-movement logic in the database.
- Approval flows treat request state as explicit design — created, reviewed, approved, rejected, reflected in history — with application code and database records agreeing on what each status means.
- Every page maps to the data behind it: public browsing reads an asset snapshot view, customer dashboards read account, approval, and portfolio data, and manager review pages read pending-approval records. If a page can't be traced to its tables and procedures, the design isn't done.
Stack: Java, JSP, Jakarta Servlets, JDBC, Oracle XE, Apache Tomcat.
What I'd improve
The repository documents each role's workflows with screenshots; the next step is pairing them with a concise architecture diagram and a database-flow diagram. I'd also add automated tests around the approval-state transitions, since that's exactly where application state and database state can drift apart.
Code is on GitHub.