Epic Overview
Evolve the CPP ATM Simulator from its original single-user console demonstration into a more robust, maintainable, portable, and testable ATM application while preserving its educational focus on C++ and object-oriented design.
Goals
- Strengthen the ATM domain model and encapsulation.
- Improve authentication and sensitive-data handling.
- Support multiple accounts and persistent data.
- Make transactions safer and more realistic.
- Improve input validation and error handling.
- Reduce platform-specific dependencies where practical.
- Introduce automated tests for core banking behavior.
- Keep the project approachable as a C++ learning/reference project.
Phase Status
Planned Workstreams
1. Domain & Architecture
- Refactor the monolithic
atm class into focused components where appropriate.
- Separate account data, authentication, transactions, and user interaction.
- Introduce clear interfaces between the presentation and business layers.
2. Authentication & Security
- Mask PIN input.
- Avoid exposing PINs through public getters.
- Add failed-login limits and session handling.
- Replace hardcoded credentials with safer account storage.
3. Account & Transaction Management
- Support multiple accounts.
- Add deposits and transfers.
- Add transaction history.
- Validate withdrawal amounts and ATM/account constraints.
- Prevent invalid or negative monetary operations.
4. Persistence
- Persist account and transaction data between sessions.
- Define a simple storage format before considering a database.
- Handle corrupted or missing data gracefully.
5. Portability
- Remove or isolate Windows-specific
conio.h / _getch() usage.
- Support modern C++ compilers on Windows, Linux, and macOS where practical.
6. Testing & Quality
- Add unit tests for authentication, balance updates, withdrawals, deposits, and mobile-number changes.
- Cover invalid input and insufficient-funds scenarios.
- Add build instructions for the supported toolchains.
7. Documentation
- Keep the README aligned with the actual implementation.
- Document architecture, supported features, build/run instructions, and limitations.
- Add examples for representative ATM workflows.
Definition of Done
- Core ATM behavior is separated from console interaction.
- Sensitive authentication data is not unnecessarily exposed.
- Multiple accounts and persistent state are supported, or the remaining limitation is explicitly documented.
- Monetary operations have comprehensive validation.
- Core business logic has automated test coverage.
- The application builds using a documented modern C++ toolchain.
- README documentation accurately reflects the implementation.
Collaboration
This epic is assigned to aaqib-hafeez-khan-in and shruticparmar for shared ownership and implementation.
Workflow
Phase → Issue → implementation PR against main → request shruticparmar → self-review as a normal COMMENT → merge → update Epic.
Scope Principle
Implement these improvements incrementally. Each child issue should remain independently reviewable and should avoid unnecessary changes outside its stated scope.
Epic Overview
Evolve the CPP ATM Simulator from its original single-user console demonstration into a more robust, maintainable, portable, and testable ATM application while preserving its educational focus on C++ and object-oriented design.
Goals
Phase Status
Planned Workstreams
1. Domain & Architecture
atmclass into focused components where appropriate.2. Authentication & Security
3. Account & Transaction Management
4. Persistence
5. Portability
conio.h/_getch()usage.6. Testing & Quality
7. Documentation
Definition of Done
Collaboration
This epic is assigned to aaqib-hafeez-khan-in and shruticparmar for shared ownership and implementation.
Workflow
Phase → Issue → implementation PR against
main→ requestshruticparmar→ self-review as a normal COMMENT → merge → update Epic.Scope Principle
Implement these improvements incrementally. Each child issue should remain independently reviewable and should avoid unnecessary changes outside its stated scope.