Skip to content

rawfilejson/ATM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

ATM

A small terminal ATM I built to mess around with Python. Started as a homework-style toy and grew into something a bit more fun — multiple accounts, persistence between runs, transfers, history, the works.

Runs fully offline. Account state lives in accounts.json, transactions in history.json. Delete those files to reset.

  ┌─────────────────────────────────────┐
  │       PINNACLE BANK ATM v2          │
  │     insert card to begin            │
  └─────────────────────────────────────┘

What it does

  • multiple cards, each with its own pin and balance
  • pin entry hidden with getpass (no shoulder surfing)
  • 3 wrong pins = card locked for 60 seconds (and the lockout sticks across restarts)
  • withdraw in GEL / USD / EUR with a 1.5% commission
  • deposit money back in
  • transfer between cards
  • change pin without touching the file
  • per-card transaction history (last 10 shown)
  • colored output (works on Windows 10+ too)

Run it

python ATM.py

No dependencies. Python 3.7+.

Default cards to play with:

card pin balance
card 1111 10000 ₾
demo 0000 500 ₾

Tweak

Rates and the commission live at the top of ATM.py:

RATES = {
    "GEL": (1.0, "₾"),
    "USD": (2.68, "$"),
    "EUR": (3.08, "€"),
}
COMMISSION = 0.015
LOCKOUT_SECONDS = 60

Buy Me a Coffee

About

Terminal ATM simulator with multi-account support, currency conversion, and a lockout system that actually bites. Deposits, transfers, pin changes, transaction history — the whole flow, no GUI needed.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages