I developed a Node.js console application that allows a user to select from a set of supported currencies, enter an amount, and convert that value into another currency using live exchange rate data fetched from an external API. The application includes input validation, error handling, retry logic for failed API requests, and a history system that stores previous conversions during the same program session.
I wrote this software with the goal of becoming more familiar with JavaScript fundamentals and, more specifically, the Node.js runtime environment. Through this project I gained experience working with asynchronous programming, making HTTP requests to an external API, structuring a procedural JavaScript program, and using native ES6 array functions. The project also helped reinforce good design practices such as separating validation logic from the core program flow and organizing code into small, reusable functions.
- Visual Studio Code
- Node.js runtime environment
- Chalk library
- Git / GitHub
- Node.js v25 Documentation
- Standard built-in objects
- Frankfurter Exchange Rates API
- Chalk NPM Package
- Refactor the program from a procedural to an object-oriented design.
- Add the ability to clear or export the conversion history.
- Expand the project into a backend service where JavaScript handles API requests instead of only running in a terminal.
- Allow the program to dynamically load supported currencies from the API instead of using a hardcoded list.
I used ChatGPT as a learning and reference tool throughout this project to help think through design decisions, clarify JavaScript and Node.js syntax, and review pseudocode ideas. I also used it to help better understand concepts such as asynchronous programming, API requests, and general program structure. All final code reflects my own understanding, with AI being primarily used to help me understand the language and tools available.