A Python 3.13 + SQLite3 production-grade simulation handling authenticated transactions, admin privileges, and persistent storage with custom encryption algorithms.
DBANKITE³ was created to bridge the gap between theoretical Python programming and real-world system design. It simulates a core banking engine without the bloat of a web framework, focusing purely on logic, data integrity, and state management.
Built with strictly typed Python 3.13, the codebase adheres to PEP8 standards. It demonstrates how to structure a medium-sized application using object-oriented programming principles, separating concerns between interface, logic, and data storage.
Secure login/signup with hashed credentials.
Atomic transfers, deposits, and withdrawals.
Superuser dashboard for system oversight.
Track all movement of funds.
Data survives system reboots.
Retro-style command line interface.
The system relies on dbankite3ServerQL, a wrapper class that unifies:
.traversal().transactions().authentication().administrator().registration().accountactions()The system is designed with a plug-and-play driver architecture.
Default for local development. Zero configuration required. Creates a local .db file in the
project root.
Ready for scaling. Change the driver in __init__.py to connect to a remote MySQL server for
concurrent access.
Learn how to Create, Read, Update, and Delete records safely using Python's sqlite3 module.
Understand how real systems validate inputs, hash passwords, and manage sessions without a GUI.
Move beyond in-memory variables. See how data survives application restarts and crashes.
dbankite³ avoids standard libraries for educational depth, implementing a custom Caesar Cipher variant with numeric alteration.
User Encryption: Shift Key = 8
Admin Encryption: Shift Key = 53
# Authentic implementation from source code
class authentication:
def authenticate_password(self) -> bool:
self.cursor.execute('''SELECT password FROM users WHERE username = ?''', (self.username,))
# Validates input against stored hash with Shift 8
return self.cursor.fetchone()[0] == Encryption(self.password, shift=8, alterNumbers=True).encrypt()
Characters are shifted by the key value. If the key is 8, 'A' becomes 'I'.
Numbers are processed differently to ensure PINs and balances are obscured effectively.
Admins use a higher key (53) to separate privilege levels in the database.
users (table)
administrators (table)
All financial actions (Deposit, Withdraw, Transfer) utilize connection.commit() immediately
after execution to ensure data integrity.
We use parameterized queries to prevent SQL Injection.
# INSECURE (Vulnerable)
cursor.execute(f"SELECT * FROM users WHERE name = '{user_input}'")
# DBANKITE3 METHOD (Secure)
cursor.execute("SELECT * FROM users WHERE name = ?", (user_input,))
~ $ dbankite3 : ACTION [1-8] >> 2
ENTER AMOUNT: $ 1500.00
DEPOSIT SUCCESSFUL!
~ $ dbankite3 : ACTION [1-8] >> 1
BALANCE: $ 1500.0
Admins can push notices that appear on user dashboards upon login.
Delete accounts, freeze assets (planned), or reset passwords manually.
The system is robust against standard runtime errors.
Login Time
Records Supported
Lookup Speed
Memory Footprint
This project serves as the foundation for modern full-stack development. Here is the upgrade path:
Upgrade from SQLite3 to PostgreSQL or MySQL for concurrent user handling.
Wrap the Python logic in Flask/FastAPI to create RESTful endpoints.
Connect a React/Vue dashboard to the API, replacing the CLI.
v1.0.0 (Current)
- Initial release
- Added SQLite3 driver
- Implemented Caesar Cipher
v0.9.0 (Beta)
- Fixed user balance float precision error
- Added main.py entrypoint
# Clone repository
git clone https://github.com/ViratiAkiraNandhanReddy/dbankite3.git
# Install requirements
pip install -r requirements.txt
# Run entrypoint
python main.py
Edit __init__.py to toggle drivers.
# Select Driver: 'sqlite' or 'mysql'
DB_DRIVER = 'sqlite'
Minimalist design requires very few external libraries.
mysql-connector-python (Only if using MySQL)colorama (For CLI colors)tqdm (For loading bars)We welcome Pull Requests!
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)
MIT License
Copyright © 2025 VIRATI AKIRANANDHAN REDDY
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
No, this is a simulation engine for educational purposes only.
Absolutely not. This is not compliant with PCI-DSS standards.