Back to ProjectsJune 11, 2025

Bank Management System (Spring Boot)

Overview

This project documents the Bank Management System, which began as a simple monolithic Spring Boot web application and was evolved into a modern, production-ready, multi-container system. The architecture now features a decoupled static frontend (Vite + Tailwind CSS), a robust Spring Boot backend, and an Nginx reverse proxy, all orchestrated with Docker Compose. The system simulates core banking functionalities including user management (Manager, Staff, Customer), account management, loan/FD applications, and grievance filing.

To gain experience with modern DevOps practices, Nginx, and a decoupled frontend, the architecture was evolved into a multi-container system.

Features

  • Decoupled Frontend: Static landing page built with Vite and Tailwind CSS.
  • Powerful Backend: Spring Boot application handles all business logic.
  • Role-Based Access Control: Distinct views and permissions for Manager, Staff, and Customer.
  • Secure Login: Spring Security with form-based, session-cookie authentication.
  • Responsive UI: Dynamic interface built with Thymeleaf, fully responsive.

Architecture

The system consists of three main services:

  • Nginx Reverse Proxy (nginx service): Single entry point, serves static landing page, routes app requests to backend, handles SSL/TLS termination.
  • Frontend (frontend service): Static site (Vite + Tailwind CSS) served by Nginx, with a Login button linking to backend.
  • Backend (backend service): Spring Boot app following Clean Code Architecture, with layers for presentation, application, domain, persistence, and security.

Production Deployment

  • All containers run on a GCP Compute Engine VM.
  • Database is a managed Aiven for PostgreSQL instance.
  • VM firewall allows ports 80/443; backend connects securely to Cloud SQL.

Key Workflows

  • Manager Seed: Initial Manager user/password created via data.sql.
  • Staff Creation: Manager logs in → creates Staff user (username/password).
  • Customer & Account Creation: Staff logs in → fills form for Customer + Account → system creates disabled User, inactive Customer, and PENDING_APPROVAL Account.
  • Account Approval: Manager logs in → approves pending accounts → sets Account to ACTIVE, Customer to active, User to enabled.
  • Customer Login: Customer logs in with credentials set by Staff.
  • Loan/FD Application: Customer applies for Loan/FD → status is PENDING.
  • Loan/FD Approval: Manager approves/rejects → status updated, Customer sees status.
  • Grievance: Customer files grievance → status is PENDING, Staff/Manager can resolve, Customer sees status.

Technologies Used

Spring Boot
PostgreSQL
Java