Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

README.md

🏦 DJ Bank: High-Performance CLI Banking Engine

A robust, enterprise-grade Console Banking Application built with Java 17, focusing on multithreading, data security, and high-performance data processing. This project demonstrates the transition from a simple CRUD application to a scalable system using modern Java design patterns.

🚀 Technical Highlights

  • Concurrency & Multithreading: Implemented a background Daemon Watchdog Thread using the Runnable interface and volatile keyword for real-time high-value transaction monitoring.
  • Parallel Computing: Utilized Java Parallel Streams (Fork-Join Framework) in the Admin Dashboard to calculate total bank liquidity across all accounts, optimizing for multi-core CPU performance.
  • Security: Implemented SHA-256 One-Way Password Hashing to ensure zero-knowledge storage of user credentials.
  • Database Integrity: Managed Atomic Transactions (ACID) via JDBC to handle complex money transfers, ensuring data consistency with manual commit and rollback logic.
  • Functional Programming: Extensive use of the Java Stream API for filtering, sorting, and reducing transaction history.
  • File I/O: Integrated a Statement Export Service using BufferedWriter and FileWriter with Try-with-Resources for memory-efficient reporting.

🏗️ Layered Architecture

The project follows a strict Three-Tier Architecture to ensure Separation of Concerns (SoC):

  1. Presentation Layer (UI): ConsoleMenu.java - Handles user interaction and simulated ATM UX (using Thread.sleep).
  2. Service Layer (Business Logic): BankingService.java, TransactionService.java - Manages the core banking rules, security, and analytical pipelines.
  3. Data Access Layer (Repository): UserRepository.java, AccountRepository.java - Handles raw SQL interaction with the PostgreSQL (Neon) database.

🛠️ Tech Stack

  • Language: Java 17+
  • Database: PostgreSQL (Hosted on Neon.tech)
  • Build Tool: Maven
  • Core Concepts: JDBC, Multithreading, Streams API, File I/O, Password Hashing.

🎮 Key Features

👤 User Features

  • Secure Authentication: Registration and Login with hashed passwords.
  • Account Management: Support for Savings and Current accounts.
  • Live ATM Simulation: Interactive withdrawal process with simulated hardware delays.
  • Smart History: View transaction history filtered by type (Deposits, Transfers, etc.) sorted by value.
  • Statement Download: Export history to a physical .txt file.

🛡️ Admin Features

  • Background Watchdog: System-wide alerts for transactions exceeding $5,000.
  • Liquidity Report: Instant calculation of total bank assets using parallel processing.

⚙️ Setup & Installation

  1. Clone the Repository:
    git clone https://github.com/DhanunjayJ/Java_SpringBoot.git
    cd Java_SpringBoot/Projects/banking-system
  2. Configure Database: Update src/main/java/com/dj/util/DBConnection.java with your PostgreSQL/Neon credentials.
  3. Build and Run:
    mvn clean install
    mvn exec:java -Dexec.mainClass="com.dj.App"

📈 Future Roadmap

  • Migration to Spring Boot & Spring Data JPA.
  • Implementation of Unit Testing with JUnit 5 and Mockito.
  • Building a REST API layer for web integration.

Author: Dhanunjay J
Focus: Backend Engineering | Java | High-Performance Systems