About
The Holiday Currency Converter app (formaly known as IceCo or IceConverter) is a 100% Java with JavaFX and @fxml mobile application for Android. It is also 100% opensource and free to use (Apache 2.0 license).
The mobile app converts any numerical input to and from a currency to another currency. I created it because I went to Iceland for a holiday and thought it would be a great tutorial project to create my own currency conversion app. That very first version only converted from Euros to Krónas using a harcoded conversion rate. But it was running on my mobile phone and was built using Java and JavaFX (with a @fxml scene), therefore it did the job!
Most conversion apps require an input and then convert your input to a selected currency. Just depending on the situation, I want to convert to a currency but in some other cases I meant converting from (just not caring what it is I wanted). The HoliCur app just accepts input and converts to and from both.
After the very first implementation, I wanted to change the behavior to show the numerical keyboard from your phone instead of text keyboard when you entered the input textfield. And, converting on focus-lost of the textfield should reduce clicks. But this would require some more interaction with the mobile phone (to show the numerical keyboard instead of the default one) and that would mean usage of the com.gluonhq packages. That would result in probably the show for the warning to use the commercial version of Gluon. For now, that’s not my intention.
Build
The HoliCur mobile Android application is developed in Intellij using GraalVM with Gluon 23 as an SDK (see their github page for more info) and Maven 3.9.9 as build tool. Check my [ubuntu-setup] blog to see how I have set up my environment. And check the [.apk] blog on how to put .apk files on your phone.
Features
Current version is v0.0.5 and features:
- Out of 22 countries, convert rates from and to in one step.
- Remember what 2 countries are selected to convert to and from the next time the HoliCur mobile applciation is started.
- Fetches list of currencies from a json file from a controlled location from [here]. I have a simple crontab running every day on my server which fetches 22 currencies and store them in a json format on a static webpage. The app fetches this page on startup.
- The fetched currencies are stored locally in the private storage inside the app-space on the mobile phone. When the fetch from internet fails (because there is no internet available), it loads the last saved file. If everything fails there is a fallback to the hardcoded country and conversion rate (like in version v0.0.1).
- Custom numerical keyboard present directly at startup. I’ve considered to add the ‘c’ (clear) as character instead of the ‘.’ value (indicating decimal values) for smaller conversions. Sometimes a decimal value can make the difference as it’s not always about the big bucks. So to clear, you have to tap the backspace a few times. Maybe I can add a double tap on the backspace to clear the amount field at once. Something todo later.
- Flags from around the world (free to use from https://flagpedia.net).
- Tap on flag to switch to another @fxml scene to select currencies to convert.
- Currency symbols drawn by my duaghter.
- Nice logo for the IceCo app.
- 100% Java and 100% open source.
Google Play Store / F-Droid
It is my first attempt to deploy a mobile application in the Google Play Store or on the F-Droid platform. It’s still something to get into and finish. See [F-Droid] for more information about F-Droid. You can check all source code on GitHub [here] and since F-Droid checks the application itself before placing it in their store, you can see for yourself the application does not collect any information about you and does not include any ads (I wouldn’t know (yet) how to program that in my application ; )
For now, I haven’t been succesful in doing so. I’ll keep this up to date with the latest developments.
Todo
- New nice logo for the HoliCur app.
- Use a custom font for the numerical input.
- Buy a (refurbished) Macbook and package an iPhone version.
- Actually getting it in the Google Play Store or on the F-Droid platform.
- Add more currencies to static, every day refreshed json file.
- Tap on 1 logo to change 1 (instead of always update both).
- Make a donate option.
Licence
I’ve created this open source application under Apache 2.0 License model, which means you can see, use, modify, distribute and contribute to this project, see [Apache] for more information.