Skip to content

Interactive, console-based ATM application with secure Docker-Compose setup, MySQL integration, and user-friendly CLI menu for deposits, withdrawals, PIN management, and receipt generation.

Notifications You must be signed in to change notification settings

ChocolateXmas/ATM-Application

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation


ATM Application

Shell UI ATM Aplication

🐞 Report Bug · ✨ Request Feature

Table of Contents
  1. About The Project 📝
  2. Getting Started 🚀

About The Project 📝

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.

Built With 🛠️

  • Python Badge
  • Curses Badge
  • Docker Badge
  • Bash Badge
  • MySQL Badge

Installation 🔧

📁 Step 1: Clone the Repository

git clone https://github.com/ChocolateXmas/ATM-Application.git
cd ATM-Application

🔐 Step 2: Set Up Docker Secrets

We 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.txt

Then 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!


🐳 Step 3: Run the Project with Docker Compose

Option 1 - Automatically (One Liner):

  • Runs the interactive shell menu automatically
docker compose run --rm app

Option 2 - Manually:

verbosely:

docker compose up --build

or detached:

docker compose up  --build -d
  1. run the interactive menu shell
docker exec -it atm_app python3 main.py

This will:

  • Build the Python app container (main.py)
  • Start a MySQL container
  • Mount secrets securely inside the containers
  • Initialize your database using schema.sql

✅ Optional: Test Access to Secrets Inside Containers

To check if the secrets are loaded correctly:

docker exec -it atm_app_container_name cat /run/secrets/db_user_password

🧪 Development Tips

  • 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

About

Interactive, console-based ATM application with secure Docker-Compose setup, MySQL integration, and user-friendly CLI menu for deposits, withdrawals, PIN management, and receipt generation.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •