/BitNow

Primary LanguageKotlin

BitNow Kotlin Android Bootstrap Bitcoin

Table of Contents

Project Description

This project is an android application written in Kotlin using fragments and the MVC (Model View Controller) Software Design Pattern. The project is a bitcoin live price tracker, which uses the coindesk API (referenced in credits and acknowledgements) to fetch the currrent price of bitcoin. The live price tracker supports currency conversion in CAD, USD, and EUR. The app also allows the user to input custom quantities of both bitcoin and fiat money, to which the app will convert the non-inputted value correctly. The app also contains a pricehistory feature which will show a line chart of the price of bitcoin over a specified date range*.

* - this feature has not yet been implemented and will be included in a later release. As of right now, the price history date range is hard-coded into the application.

Screenshots

The app on startup.

The app showing different currency selection and bitcoin quantity input.

Showcasing the currency dropdown.

Custom FIAT money input

Price History Screen

animated

The Price History Chart Animation

Installation Instructions

To install and run this application, please download the latest version of android studio from Here
The project was created with a minimum SDK of 19 and a target SDK of 30. This repository can then be cloned or downloaded and imported into android studio. Please ensure that your SDK version is correct.

Operating Instructions

This app can be run using android version 4.0 or greater. It can be run using the built-in emulator within android studio OR by using an actual android device.

How To Contribute

Any and all contributors are welcomed to this project.
To Contribute,

  • Clone the repo and create a new branch
  • Make changes, add features, and test.
  • Create a pull request. Ensure to include a consise description of the changes you made.

Project Manifest

The main files are contained within app/src/main


From there, /res/ contains all layout (xml) files

Or, /java/com/example/bitnow/ contains all kotlin files
  • /data/: contains all files used to communicate with the CoinDeskApi.
  • /ui/: contains all fragments and viewmodels
  • MainActivity.kt contains the main activity to connect to the fragments and nav bar.

Copyright

All data used in this app is retrieved from theCoindesk API

Bug List

  • ~~The Chart does not update once the asynchronous API call is complete~~
  • invalid character (non-digit) at the end of the fiat_price_edittext causes the app to crash
  • user-inputted values on livepricefragment resets upon switching to the price history fragment

Future Implementations

  • PriceHistory
    • Add Currency Conversion
    • Add User-Specified Date Ranges
  • LivePrice
    • Add feature which refreshes the API on a 30-second basis
  • Additional Features
    • Implement a third fragment which fetches tweets from Elon Musk that mention bitcoin using the twitter API and regex. This feature will notify the user whenever elon makes a tweet about bitcoin
    • Notify the user whenever bitcoin hits a new all-time high, all-time low, 60-day high, etc.

Credits and Acknowledgements

  • AACharts Used to create the price history chart
  • Moshi and Retrofit2 used to make API requests, handle responses, and parse JSON
  • CoinDesk Used to retrieve real-time bitcoin price updates and price history updates
  • Bootstrap used to help create UI
  • Canva used to create some images and logos
  • Markdown Badges