A simple, educational web-based ATM simulation built with Flask (Python) on the backend and HTML/CSS on the frontend. It demonstrates basic OOP concepts, secure 4-digit PIN handling, and typical ATM operations like deposit, withdraw, and balance enquiry.
Live demo: Coming soon — you can run locally (instructions below).
- ✔️ Set and validate a secure 4-digit PIN
- ✔️ Deposit funds
- ✔️ Withdraw funds with validation (insufficient funds prevented)
- ✔️ View current balance
- ✔️ Clean, responsive HTML/CSS UI
- ✔️ Simple Flask backend with in-memory storage (easy to extend to DB)
Atm-Simulation-menu/
│
├── app.py # Main Flask app (backend)
├── requirements.txt # Dependencies file
│
├── static/
│ └── style.css # Custom CSS styling
│
├── templates/
│ ├── index.html # Home page (PIN setup)
│ ├── menu.html # ATM operations page
│
└── README.md # Project documentation
- Frontend: HTML5, CSS3
- Backend: Python + Flask
- (Optional) DB: SQLite / MySQL (future improvement)
- Deployment: GitHub + Render / Vercel or local Flask server
- Clone the repository
git clone https://github.com/Vivek-ML001/Atm-Simulation-menu.git
cd Atm-Simulation-menu- Create & activate a virtual environment (recommended)
python -m venv venv
# Windows
venv\Scripts\activate
# macOS / Linux
source venv/bin/activate- Install dependencies
pip install -r requirements.txt- Run the app
python app.py- Open your browser at http://127.0.0.1:5000/
- User sets a 4-digit PIN on the home page.
- After PIN setup, the user accesses the ATM menu (deposit, withdraw, check balance).
- Each operation validates the PIN and updates the in-memory balance.
- All state is stored in memory (non-persistent) — intended for learning/demo use.
Add screenshots in a /screenshots folder and reference them here:
Example:
/screenshots/
├── homepage.png
├── menu.png
└── deposit.png
- Persist data with a database (SQLite / MySQL)
- Add user accounts (login / signup)
- Transaction history / receipt generation
- Input validation & stronger security for production
- CI/CD and deployment to Render/Vercel
- To enable debugging while developing:
export FLASK_ENV=development
python app.py(Windows PowerShell: setx FLASK_ENV "development" or use environment settings.)
- Consider adding
python-dotenvto manage environment variables.
Vivek Kumar
Machine Learning Student | Tech & Web Enthusiast
This project is released under the MIT License. See LICENSE for details.
