🚀 FinOpsBank: Financial Transaction Control System
🌟 Overview
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

- 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

- 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
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 runand encounter input issues, use the directjavacommand 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.pngdocs/screenshot_manual_test_2.pngdocs/screenshot_manual_test_3.pngdocs/screenshot_manual_test_4.pngdocs/screenshot_manual_test_5.png
Refer to the documentation for detailed project phases, usage instructions, and real test results.
Log in or sign up for Devpost to join the conversation.