timgabets / electron-atm

A simple free open-source NDC ATM emulator, written on JavaScript, jQuery and Electron framework.
GNU Lesser General Public License v2.1
96 stars 58 forks source link
atm atm-simulator ndc simulator

electron-atm

Travis CI build badge Maintainability Test Coverage

The project is not maintained anymore. If anybody would like to pick up the project and become its maintainer, just drop me an email to discuss the ownership transfer.

A simple free open-source APTRA™ Advance NDC ATM emulator, written from scratch using ES6 JavaScript, visjs, jQuery and Electron framework.

Profile selection on application start: profile selection

ATM tab: screenshot

States tab: states navigator

Financial Institutions tab: FITs page

Cards management tab: cards page

To Use

Windows and MacOS build installers may be downloaded from Releases page.

You may also build the app from sources. To do this, you'll need Git and Node.js version 8.x (which comes with npm) installed on your computer. From the command line:

# Clone this repository
git clone https://github.com/timgabets/electron-atm
# Go into the repository
cd electron-atm
# Install dependencies
npm install
# Check the test cases
npm test
# Run the app
npm start

Reasons of why this application was developed

Some reasons for the appearance of this application are described here.

Features

This is a side project of my full-time job and only the features that I currently need in my everyday work are implemented.

Currently only the basic stuff is working, such as:

Things to be implemented (very) soon:

FAQ

What is this about?

This is an implementation of ATM (Automatic Teller machine) simulator, working under APTRA™ Advance NDC protocol.

And why may I need it?

If you are working with ATM processing systems (a.k.a ATM Host - the systems to which ATMs are connected, and which process various messages from ATMs, including financial inquiries) - either developing applications or supporting them, you may need to emulate the ATM messages coming to the host. You're lucky if you have a real ATM nearby, but the chances are that your test ATM may be located on the other floor, or, the company that you're currently working in may not have a real ATM at all. Being fed up with closed-source self-written ATM-simulators, I decided to develop my own stable featureful open-source ATM simulator, which may be available to everyone in the Banking/Card processing community.

The application is ugly.

Yes, I know and I'm really sorry. I'm not a frontend developer (I'm not even a web-developer as my daytime job is related to soft-realtime payment processing, and my native language is C). Obviously, I'm not good at CSS at all, so, if you are strong enough in UI/UX, please, feel free to do something with this. And that. And that as well.

jQuery? Why not React?

To me, React is good for building user-interface-specific applications, while this application is considered as backend-centric (i.e. having tons of the protocol-specific code in the backend). As always, it started as a simple Electron app with "just a little jQuery", but now it's a whole mess of event-handlers and SetInterval functions, that already need to be rewritten. So, if you're brave enough to redesign it all using React, please send me a pull request! ;)

I would like to use the application, but it seems that the feature X that I really need is not yet implemented.

As I said, only the features that I needed were implemented. For example, all the ATM configurations that I've been working with don't have V-type states (Language select from a card), therefore, these states are not supported by the application. So, if there is a feature that you would like to have implemented, you may create an issue, or just drop me an email.

Something went wrong with the ATM configuration, and I would like to start from scratch

The application uses electron-settings package to store the ATM configuration (all the data is stored is a single json file). Please refer to the package' FAQ to know where the settings file is stored.

Issues

Please feel free to submit issues and enhancement requests, or simply drop me an email if you want to participate in the project or just give some feedback.

Contribute

Contributions are welcome, I would appreciate any help in application testing and development ;)

Modules

Here is the list of npm modules that originally were the part of the application, but later were moved to the separate packages:

License

LGPLv2