Shell UI ATM Aplication
🐞 Report Bug
·
✨ Request Feature
Table of Contents
An interactive console-based ATM application that allows users to perform essential banking operations, including deposits, withdrawals, balance inquiries, and account management. The system supports multiple predefined users with unique PIN codes and balances. Users can securely log in, navigate an intuitive menu, and perform transactions with built-in validation to ensure proper cash handling. The ATM enforces rules such as deposit multipliers (20, 50, or 100) and withdrawal limits based on available balance. Additionally, advanced features include PIN code updates and a receipt generation option, enhancing user experience. The project is structured using loops, lists, and functions for efficient program flow.
git clone https://github.com/ChocolateXmas/ATM-Application.git
cd ATM-ApplicationWe don't include passwords directly in this repo for security reasons. Instead, we provide .example files. You need to copy and fill them in:
cp secrets/mysql_name.txt.example secrets/mysql_name.txt
cp secrets/mysql_password.txt.example secrets/mysql_password.txt
cp secrets/mysql_root_password.txt.example secrets/mysql_root_password.txt
cp secrets/mysql_user.txt.example secrets/mysql_user.txtThen open each file and add your own secure credentials:
# secrets/db_root_password.txt
MySuperSecretRootPass123
# secrets/db_user_password.txt
MyUserSecurePassword456
⚠️ Do not commit these secrets to Git!
- Runs the interactive shell menu automatically
docker compose run --rm appverbosely:
docker compose up --buildor detached:
docker compose up --build -d- run the interactive menu shell
docker exec -it atm_app python3 main.pyThis will:
- Build the Python app container (
main.py) - Start a MySQL container
- Mount secrets securely inside the containers
- Initialize your database using
schema.sql
To check if the secrets are loaded correctly:
docker exec -it atm_app_container_name cat /run/secrets/db_user_password- Edit your code on a feature/develop branch (like
develop / feat-sql-integration / other-branch) - Use Docker secrets for local dev, staging, and prod
- Never commit real credentials into GitHub