🚀 FinOpsBank: Financial Transaction Control System

Java Gradle JUnit Kotlin Linux VS Code


🌟 Overview

Java FinOpsBank is a Java console application that simulates a basic banking system. This project was developed with a rigorous focus on Object-Oriented Programming (OOP) principles to consolidate concepts such as inheritance, encapsulation, polymorphism, and abstraction. The main objective is to provide a simple, yet robust, and well-structured software solution that manages financial transactions securely and efficiently.


🎯 Main Project Objectives

  • Apply OOP: Demonstrate a solid understanding of object-oriented programming paradigms through a practical project.
  • Modular Design: Create a clean, modular software architecture that separates responsibilities to facilitate scalability and maintenance.
  • Transaction Handling: Key banking operations such as deposits, withdrawals, and transfers, with adequate error handling.
  • Data History: Implement functionality to record and query the transaction history of each account.

🛠️ Technologies Used

Gradle

  • Java: Primary programming language, used to build backend logic.
  • Gradle: Build automation tool. Handles dependency management and the project lifecycle.
  • JDK 24: Java development environment.
  • JUnit 5: Unit testing framework used to ensure code quality and functionality.

🔒 Security and Scalability

Linux

  • Security: Data encapsulation (private attributes) in domain classes ensures the protection of critical information such as balances and customer data. Financial operations include validations to prevent invalid transactions (e.g., withdrawals with insufficient balance).
  • Scalability: The modular design allows for future expansion. For example, the data access layer can be replaced with a real database (such as PostgreSQL or MySQL) without requiring changes to the business logic. Additionally, the service layer can be adapted to be a REST API, allowing the system to connect to web or mobile user interfaces in the future.

📂 Project Structure

VS Code This backend uses a three-tier architecture to ensure a clear separation of responsibilities:

  • Service Layer: Exposes the system's core functionalities, acting as an orchestrator that coordinates user interface requests.
  • Business Logic Layer (Core): Contains the core domain logic with classes such as Customer, BankAccount, and Transaction.
  • Data Access Layer (In-Memory Repository): Simulates an in-memory database for storing and retrieving information. This layer allows business logic to be independent of persistence technology.

📈 Value Proposition

Problem to Solve: Software development often lacks a solid foundation in programming fundamentals, leading to disorganized projects that are difficult to maintain and scale. This project addresses that problem by providing a clear and functional example of how a clean architecture, even in a console application, can solve complexity.

Value Proposition: FinOpsBank is not just a functional application; it is a demonstration of good professional practices. Its modular architecture and use of quality control standards ensure that the code is readable, maintainable, and scalable. It is an ideal project for a portfolio that demonstrates the ability to build robust systems from scratch.


🚀 Getting Started

1. Clone the Repository

git clone https://github.com/CanduriFranklin/FinOpsBank.git

2. Navigate to the Project Directory

cd FinOpsBank

3. Build the Application

./gradlew build

4. Run the Application (Interactive Console)

java -cp app/build/libs/app.jar com.finopsbank.Main

Note: If you use ./gradlew run and encounter input issues, use the direct java command above.

5. Run the Unit Tests

./gradlew test

📜 Documentation

  • All technical documentation and testing evidence is in the docs/ directory.
  • Manual testing steps and results are in docs/PHASE4_MANUAL_TESTING.md.
  • Screenshots of the console session are included as:
    • docs/screenshot_manual_test_1.png
    • docs/screenshot_manual_test_2.png
    • docs/screenshot_manual_test_3.png
    • docs/screenshot_manual_test_4.png
    • docs/screenshot_manual_test_5.png

Refer to the documentation for detailed project phases, usage instructions, and real test results.

Built With

Share this project:

Updates