Skip to content

jaikostatham/java-console-atm

Repository files navigation

Java Console ATM

Java console application that simulates a basic ATM workflow for purchasing credits and printing tickets in ASCII format.

The project is designed with a focus on clean architecture, clear separation of responsibilities and maintainable code, keeping a realistic scope without overengineering.


Features

  • Credit purchase through console input
  • ASCII ticket printing
  • Support for 58mm and 80mm ticket printers
  • Dynamic active printer configuration
  • Printer status display
  • Interactive console menu with input validation

Project Structure

The project is organized into clearly defined layers:

ui → Console user interface and flow orchestration
application → Use cases and application services
domain → Core domain models and contracts
infrastructure → Technical implementations (ASCII, printers)

This structure helps keep the codebase readable, extensible and easy to maintain.


Requirements

  • Java 8 or higher
  • Gradle

How to Run

From the project root directory:

./gradlew run

On Windows:

gradlew run


Design Principles

  • Object-Oriented Programming (OOP)
  • Practical application of SOLID principles
  • Clean Code
  • Clear separation of responsibilities
  • Incremental development without overengineering

Documentation

For a detailed explanation of the architecture and design decisions, see the following documents:

  • DEVELOPMENT_EN.md
  • DEVELOPMENT_ES.md

License

This project is provided for demonstration and educational purposes only.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages