Account Management
- Create and manage multiple user accounts
- Unique account number enforcement
- Account lifecycle: ACTIVE / CLOSED
Transactions Engine
- Deposit, withdraw, and transfer funds
- Prevents overdraft (no negative balance)
- Prevents self-transfers
- Atomic database transactions
Authentication & Security
- JWT-based authentication
- Password hashing using bcrypt
- Protected API routes
Ledger System
- Every transaction is recorded
- Supports audit and tracking
- Foundation for analytics & fraud detection
System Operations
| Operation | Description |
|---|---|
| Create Account | Registers a new user account |
| Deposit | Adds money with validation |
| Withdraw | Removes money with balance checks |
| Transfer | Moves funds securely between accounts |
| Check Balance | Retrieves current account balance |
Internal Architecture
The system follows a modular, service-based architecture where each banking operation is isolated, testable, and transaction-safe.
create_account() → user onboarding
deposit() → fund addition logic
withdraw() → validation + deduction
transfer() → secure fund movement
check_balance() → state retrieval
Business Logic & Constraints
- Transaction limits enforced via configuration
- No negative balances allowed
- Only ACTIVE accounts can perform operations
- Ownership-based authorization checks
- All transactions are recorded for auditing
Example System Output
Advanced Banking System
1. Create Account
2. Deposit Money
3. Withdraw Money
4. Transfer Funds
5. Check Balance
ID: 102
Amount: 5000
Deposit successful
Updated Balance: 15000
Technologies Used
- Backend: FastAPI, Python
- Database: MySQL
- ORM: SQLAlchemy
- Validation: Pydantic
- API Design: RESTful APIs (GET, POST)
Project Links
Why This Project?
This system simulates real-world banking constraints with a strong focus on transactional integrity, validation, and scalable backend design.