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.
- 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
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.
- Java 8 or higher
- Gradle
From the project root directory:
./gradlew run
On Windows:
gradlew run
- Object-Oriented Programming (OOP)
- Practical application of SOLID principles
- Clean Code
- Clear separation of responsibilities
- Incremental development without overengineering
For a detailed explanation of the architecture and design decisions, see the following documents:
- DEVELOPMENT_EN.md
- DEVELOPMENT_ES.md
This project is provided for demonstration and educational purposes only.