An open API service indexing awesome lists of open source software.

https://github.com/inventixcity/inventix-bank

Advanced Banking Management System built with Java & JavaFX - Features dual authentication, real-time transactions, account management, and modern MVC architecture with SQLite database
https://github.com/inventixcity/inventix-bank

authantication clean-code java javafx javafx-application mvc-architecture sqlite sqlite3

Last synced: 2 months ago
JSON representation

Advanced Banking Management System built with Java & JavaFX - Features dual authentication, real-time transactions, account management, and modern MVC architecture with SQLite database

Awesome Lists containing this project

README

          

# 🏦 Inventix Bank - Advanced Banking Management System

[![Java](https://img.shields.io/badge/Java-15-orange.svg)](https://www.oracle.com/java/)
[![JavaFX](https://img.shields.io/badge/JavaFX-18.0.1-blue.svg)](https://openjfx.io/)
[![SQLite](https://img.shields.io/badge/SQLite-3.36.0-green.svg)](https://www.sqlite.org/)
[![Maven](https://img.shields.io/badge/Maven-3.8.1-red.svg)](https://maven.apache.org/)

## 📖 Overview

**Inventix Bank** is a sophisticated, enterprise-grade banking management system built with modern Java technologies. This application demonstrates advanced software engineering principles with a clean, scalable architecture that separates concerns effectively through the Model-View-Controller (MVC) pattern.

## ✨ Key Features

### 🔐 **Dual Authentication System**
- **Client Portal**: Secure login for customers with personalized dashboards
- **Admin Panel**: Administrative access for bank staff with comprehensive management tools
- **Role-based Access Control**: Different privileges for different user types

### 💰 **Advanced Account Management**
- **Dual Account Types**: Support for both Checking and Savings accounts
- **Real-time Balance Tracking**: Live updates of account balances
- **Account Summary**: Comprehensive overview of all client accounts
- **Transaction History**: Detailed records of all financial activities

### 🚀 **Money Transfer & Transactions**
- **Instant Money Transfer**: Send money between accounts seamlessly
- **Transaction Validation**: Robust validation for all financial operations
- **Transaction Categories**: Organized transaction types (Income/Expense tracking)
- **Recent Transactions**: Quick access to latest financial activities

### 👥 **Client Management (Admin)**
- **Client Creation**: Add new clients with account setup
- **Client Overview**: Comprehensive client database management
- **Account Monitoring**: Track client account activities
- **Deposit Operations**: Administrative deposit functionalities

### 📊 **Advanced Dashboard**
- **Financial Overview**: Income and expense summaries
- **Account Analytics**: Visual representation of account status
- **Transaction Timeline**: Chronological view of all activities
- **Personalized Greetings**: Dynamic user interface elements

### 🐛 **Bug Reporting System**
- **Integrated Bug Tracker**: In-app bug reporting functionality
- **Issue Management**: Systematic approach to handling user feedback
- **Quality Assurance**: Continuous improvement mechanism

## 🏗️ Architecture & Design

### **Model-View-Controller (MVC) Pattern**
```
📁 src/main/java/com/jmc/inventix/
├── 📁 Models/ # Data layer and business logic
│ ├── Client.java # Client entity with JavaFX properties
│ ├── Account.java # Account base class
│ ├── Transaction.java # Transaction entity
│ └── DatabaseDriver.java # Database operations
├── 📁 Views/ # UI presentation layer
│ ├── ViewFactory.java # Factory for creating views
│ └── Various enums for UI components
└── 📁 Controllers/ # Application logic layer
├── LoginController.java
├── 📁 Client/ # Client-specific controllers
└── 📁 Admin/ # Admin-specific controllers
```

### **Key Design Patterns**
- **Singleton Pattern**: Centralized model management
- **Factory Pattern**: Dynamic view creation
- **Observer Pattern**: Real-time data binding
- **MVC Pattern**: Clear separation of concerns

### **Database Design**
- **SQLite Database**: Lightweight, file-based database
- **Normalized Schema**: Efficient data organization
- **Transaction Integrity**: ACID compliance for financial operations
- **Prepared Statements**: SQL injection prevention

## 🛠️ Technology Stack

### **Core Technologies**
- **Java 15**: Modern language features and performance
- **JavaFX 18.0.1**: Rich desktop application framework
- **FXML**: Declarative UI design
- **SQLite 3.36.0**: Embedded database engine
- **Maven**: Dependency management and build automation

### **Libraries & Dependencies**
- **FontAwesome FX**: Professional iconography
- **JSR305**: Code annotations for better maintainability
- **JUnit 5**: Comprehensive testing framework

## 🚀 Getting Started

### **Prerequisites**
- Java 15 or higher
- Maven 3.8.1 or higher
- Git (for version control)

### **Installation**

1. **Clone the repository**
```bash
git clone https://github.com/inventixcity/inventix-bank.git
cd inventix-bank
```

2. **Build the project**
```bash
mvn clean compile
```

3. **Run the application**
```bash
mvn javafx:run
```

### **Alternative Run Method**
```bash
# Using Maven with specific main class
mvn clean javafx:run -Djavafx.mainClass="com.jmc.inventix.App"
```

## 📊 Database Schema

### **Main Tables**
- **Clients**: Customer information and authentication
- **CheckingAccounts**: Checking account details
- **SavingsAccounts**: Savings account information
- **Transactions**: Financial transaction records
- **BugReports**: User feedback and issue tracking

## 🔒 Security Features

- **Encrypted Authentication**: Secure login mechanism
- **Parameter Validation**: Input sanitization
- **Role-based Access**: User privilege management
- **Database Security**: Prepared statements prevent SQL injection

## 🎨 User Interface

### **Modern Design Elements**
- **Responsive Layout**: Adaptive UI components
- **Professional Styling**: Clean, banking-appropriate design
- **Intuitive Navigation**: User-friendly interface
- **Real-time Updates**: Dynamic content refresh

### **Key UI Components**
- **Login Screen**: Secure authentication interface
- **Client Dashboard**: Personalized financial overview
- **Admin Panel**: Comprehensive management tools
- **Transaction Views**: Detailed financial records

## 📈 Project Highlights

### **Advanced Features**
- **Real-time Data Binding**: JavaFX properties for live updates
- **Comprehensive Error Handling**: Robust exception management
- **Modular Architecture**: Scalable and maintainable codebase
- **Professional Documentation**: Extensive code comments

### **Code Quality**
- **Clean Code Principles**: Readable and maintainable
- **Design Patterns**: Industry-standard implementations
- **Type Safety**: Comprehensive use of generics
- **Null Safety**: JSR305 annotations for better reliability

## 🔧 Development

### **Project Structure**
```
inventix-bank/
├── src/main/java/ # Source code
├── src/main/resources/ # Resources (FXML, images)
├── target/ # Compiled classes
├── pom.xml # Maven configuration
└── inventix.db # SQLite database
```

### **Build Commands**
```bash
# Clean and compile
mvn clean compile

# Run tests
mvn test

# Package application
mvn package

# Run application
mvn javafx:run
```

## 🤝 Contributing

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

## 📝 License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## 👨‍💻 Author

**Umer Fraz Ahmed**
- GitHub: [@inventixcity](https://github.com/inventixcity)
- Email: inventixcui@gmail.com

## 🙏 Acknowledgments

- JavaFX community for excellent documentation
- SQLite team for the reliable database engine
- FontAwesome for professional icons
- Maven team for build automation tools

## 📞 Support

For support, email inventixcui@gmail.com or create an issue in the GitHub repository.

---

**⭐ Star this repository if you find it useful!**

*Built with ❤️ by Umer Fraz Ahmed*