MoneyMoover is a Java CLI application for travelers to exchange between international currencies. MoneyMoover supports conversion for currencies across Asia, and pulls live exchange rates from the Internet using an API. MoneyMoover also helps track expenses and income, to ensure travelers stay within their budget.
Given below are my contributions to the project:
-
Code Contributed: RepoSense Link
-
New Feature: Forex objects to represent currency relationships #34
- What it does: Represents a relationship between two currencies on the platform.
- Justification: Forex objects are a core feature of MoneyMoover because they are the backbone of two key feature: exchanging and displaying exchange rates. Forex objects represent the relationship between two currencies
- Highlights: Used a single currency as an intermediary for conversions so that we would not need to store a 2D data structure of exchange rates.
-
New Feature: Exchange money between currencies #34
- What it does: Move money between currency accounts according to live exchange rates
- Justification: Exchanging money between currencies is the cornerstone of MoneyMoover. Exchanging with live rates is the purpose of our application, and what makes it useful to our users.
- Highlights: The exchange command makes use of Forex objects, which are used to represent the relationship between currencies.
-
New Feature: Display exchange rates between currencies #39
- What it does: Displays the exchange rate between two currencies.
- Justification: Prior to moving money between accounts, the user may want a preview of what the exchange rates are.
- Highlights: By default, this command will show the exchange rate of 1:X going both ways. The user can instead input a value if they want to see what a transaction might look like before its performed
-
Enhancement to Existing Features: Open Exchange Rates API #83
- Previously, exchange rates stored in the Forex class were manually entered from a source online
- Used Retrofit HTTP client and Open Exchange Rates API to fetch live exchange rates from the Internet
- Retrofit Documentation
- Open Exchange Rates Documentation
- Created classes for API client, API response, and fetched Exchange Rates
- Live exchange rates are now used, with old ones used in the event of no internet connection
-
Team
-
Contributions to UG
-
Contributions to DG
Exchange Command UG Documentation
Both an 'initial' and 'target' currency must be specified. The value provided will be subtracted from the balance of the 'initial' currency, and exchanged into the 'target currency', and will be added to the account of the target currency. You must have accounts for both the initial and target currency to perform this command.
Format: exchange <initialCurrency> <targetCurrency> <amount>
Examples of usage (assuming accounts are created) :
>> exchange SGD USD 100
// S$100 will be moved from your $SGD account, transferred into $USD, then added to your $USD account
>> exchange THB MYR 5000
// ฿5000 will be moved from your ฿THB account, transferred into $MYR, then added to your $MYR account
Examples of error messages:
>>> exchange THB SGD
>>> Please structure your exchange as 'exchange STARTING_CURRENCY TARGET_CURRENCY AMOUNT_IN_STARTING'
>>> exchange THB SGD 5000
>>> Please ensure you have enough money in your starting currency account to perform this transaction
>>> exchange THB SGD -10
>>> Please enter a valid number to exchange
Exchange Command Sequence Diagram
Show Rate Command Sequence Diagram
API Class Diagram