With this simple app, you can keep track of your favourite cryptocurrency on your wrist.

Last update: Jun 18, 2022

GitHub release (latest by date)

Capstone project crypto Tracker

🏁 Final Product (05-06) V1.1 "somebody toucha my spaghet"

feature set State Note
Track the current price of a crypto coin βœ”οΈ With the use of the Coin Gecko API
Add coins to keep track of βœ”οΈ
Detailed screen with statistics of selected coin βœ”οΈ
Option to set a coin as a favourite for the Tile βœ”οΈ Is will be the coin that should be on the Tile
Show quick statistics on a Tile ❌ Making a tile is nothing like Compose
Remove a coin for the tracking list βœ”οΈ
Show a chart of the price history βœ”οΈ
Option to change the currency βœ”οΈ Done with SharedPreferences
Optional to set the history dept in days βœ”οΈ Done with SharedPreferences
Option to change styling of the app ❌
Per devices a collection of coins to track βœ”οΈ With the use of SharedPreferences instead of FireStore
Optimized API call ❌ In need of a new API for the project

See the GIF below for a short overview of the final (for now) product.

πŸ“² Download APK

V1.1 "somebody toucha my spaghet"

see the release notes for more information and release notes per version:

Releases notes

πŸ”œ What is next

The app still is missing a Tile, so that is the first thing that needs work.

Furthermore the CoinGecko API is oke, but the need of API that can handle a list of coin is high. Now for each coin the app makes about 2/3 calls. And when the users has a bunch of coin in their app, the amount of API calls grows very quickly.

The app has been tested on a single device, but when the app is used by multiple user, there is no way yet to keep track of a separate list of "favorite coins" per device, so that every device can have a unique list.

Rolling the app out into the app store.

πŸ›  Built With

  • Kotlin - First class and official programming language for Android development.
  • Jetpack Compose - Jetpack Compose is Android’s modern toolkit for building native UI.
  • Coroutines - A coroutine is a concurrency design pattern that you can use on Android to simplify code that executes asynchronously.
  • Flow - A flow is an asynchronous version of a Sequence, a type of collection whose values are lazily produced.
  • Firebase - Firebase is an app development platform that helps you build and grow apps users love. Backed by Google and trusted by millions of businesses.
  • CoinGecko Kotlin - Multiplatform Kotlin wrapper for the CoinGecko API using Ktor.
  • Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
    • Stateflow - StateFlow is a state-holder observable flow that emits the current and new state updates to its collectors.
    • Flow - A flow is an asynchronous version of a Sequence, a type of collection whose values are lazily produced.
    • ViewModel - Stores UI-related data that isn"t destroyed on UI changes.
    • Jetpack Compose Navigation - The Navigation component provides support for Jetpack Compose applications.
  • Material Components for Android
    • Modular and customizable Material Design UI components for Android.
  • Figma - Figma is a vector graphics editor and prototyping tool which is primarily web-based.

πŸ“¦ Package Structure

com.krakert.tracker
β”œβ”€β”€ model                 # Model class for [Coins], [Coin] & [Favorite]
β”œβ”€β”€ navigation            # For navigation handling
β”œβ”€β”€ repository            # Used to handle all data operations
β”œβ”€β”€ state                 # State class to handle state of the data
β”œβ”€β”€ theme                 # Theme setup for this app
β”œβ”€β”€ tile                  # Tile and custom repository for it
β”œβ”€β”€ ui                    # All composables screens root folder
β”œβ”€β”€ viewmodel             # ViewModels 
β”œβ”€β”€ SharedPreference.kt   # SharedPreference to save user settings
└── MainActivity.kt       # MainActivity 

⌚ About the capstone (idea)

For the capstone, I'm going to create an app that can display crypto statistics. During the IoT theme semester I made a similar application, only this one was not for mobile. So now I'm going to recreate this for Android. Furthermore, the app will be a complete stand-alone app for Wear OS to challenge myself.

Make

The app will consist of 2 parts, a tile, and the overlay. Via the tile, the user can retrieve the latest statistics of his favorite currency in an easy and simple way. The overlay provides more information about different coins and here users can get more details about a coin.

overlay

To realize this app I will make a simple layout where the user will see a simple graph per coin, in which the lowest, highest and current price of the coin is displayed. Navigation will be within the overlay with swipes. For example, the user can retrieve additional information about a coin by swiping right on the coin of his choice. this screen will become a small list about the coins and will contain additional stats, this will display things like price and 'market cap'. At the bottom of the list in the overlay is the option to add additional coins to the list.

Tile

Tiles provide easy access to the information and actions users need to get things done in seconds. With a simple swipe from the watch face, a user can see how their favorite coin is doing. This tile does not offer too much information so that the user can see at a glance what it is all about.

User stories

Epic: As a user I want an app that allows me to keep track of my favorite crypto coins on my watch. Per coin I have a graph showing the price of the market. With a few swipes I want to know everything about the coin and add or remove coins from my list.

  • Objective
    • As a user I want to be able to see the current price of a coin so that I can see whether it is rising or falling
    • As a user I want to see more stats about a coin like
    • As a developer, you want to be able to make an API call via Wear OS
    • As a developer likes to use different elements and gain basic knowledge
  • Optional
    • As a user I would like to be able to quickly retrieve extra information about my favorite coin
    • As a developer I would like to make a graph of current data of the coin

🎨 UI Design

Overlay Add a coin to track Details about a selected coin Tile

πŸͺ² Connect watch to debugger

  • On the phone, open the Wear OS companion app.
  • Scroll down to Advanced Settings and tap to view the Advanced Settings options.
  • Enable Debugging over Bluetooth. A status message appears under the option. It looks like this:
Host: disconnected
Target: connected

At this point the development machine (the host) is not communicating with the watch (the target). You need to complete the link.

In this final step, you'll use everything: the debugger, the phone, and the watch.

  • Connect the phone to your development machine with a USB cable.
  • Run these two commands in the debugger/terminal:
adb forward tcp:4444 localabstract:/adb-hub
adb connect 127.0.0.1:4444
  • After you type the connect command, look at the watch. It will ask you to confirm that you are allowing ADB Debugging.
  • On the phone, check the status display in the Wear OS companion app. It should look like this:
Host: connected
Target: connected

The watch is now connected to the debugger and you're ready to start debugging.

When you debug a watch using Bluetooth, adb always uses the IP address 127.0.0.1 plus the port that you assigned. In this example, the port is 4444. All adb commands use the following format:

adb -s 127.0.0.1:4444  

❀️ Support my work

Buy Me A Coffee

GitHub

https://github.com/Krakert/Crypto-Tracker
You might also like...

Money Manager app that helps you to add your daily small incomes and expenses and track them easily.

Money Manager app that helps you to add your daily small incomes and expenses and track them easily.

Simple Money Manager This app is a simple money manager app which helps you to add your daily small incomes and expenses and track them easily. Screen

Nov 21, 2021

A minimalist but powerful productivity timer designed to keep you focused and free of distractions.

A minimalist but powerful productivity timer designed to keep you focused and free of distractions.

Goodtime A minimalist but powerful productivity timer designed to keep you focused and free of distractions. Alternate between focused work sessions a

Jun 1, 2022

Cryptac is a mobile application that allows you to track the main important information about your favorite cryptos

Cryptac is a mobile application that allows you to track the main important information about your favorite cryptos

Cryptac is a mobile application that allows you to track the main important information about your favorite cryptos.

Jan 21, 2022

Healthify - An app to track your daily water intake and sleep and boost your work efficiency. Healthify is built using Kotlin and follows all modern android Development practices and hence is a good learning resource for beginners

Healthify - An app to track your daily water intake and sleep and boost your work efficiency. Healthify is built using Kotlin and follows all modern android Development practices and hence is a good learning resource for beginners

Healthify Healthify is an app to track your daily water intake and sleep and boost your work efficiency. Video Introduction πŸ“Ή This is a small introdu

Jun 21, 2022

A distribution of performance-oriented Bukkit patches that aims to keep stability and vanilla behaviour

A distribution of performance-oriented Bukkit patches that aims to keep stability and vanilla behaviour

Patina A distribution of performance-oriented Bukkit patches that aims to keep stability and vanilla behaviour. You can find explanation of configurat

Jun 21, 2022

Cryptac - Mobile application to track your favorite cryptos information. πŸš€

Cryptac - Mobile application to track your favorite cryptos information. πŸš€

What is it? πŸ€” Cryptac is a mobile application that allows you to track the main important information about your favorite cryptos. It is currently av

Feb 25, 2022

How-Many-People-Are-In-Space - Do you wonder how many people are in space? Now you can check instantly with this app

How Many People Are In Space? Do you wonder how many people are in space right n

May 10, 2022

This app to track realtime location

✨ hacktoberfest2021 πŸ’« 🌱 Contributing to hacktoberfest 2021 Welcome to hacktoberfest 2021 Public Repository. πŸ‘¨πŸ»β€πŸ’» A month-long celebration from Oc

Nov 16, 2021
Comments
  • 1. Homepage is scrollable when no coins are present

    The home activity becomes scrollable after removing all coins from the list. This behavior is not present when loading the app for the first time. The steps to reproduce are:

    1. Start app
    2. Add coins
    3. Remove all coins
    Reviewed by Bart2000 at 2022-06-07 12:28
  • 2. Project is still not state effect free

    The project is nog state effect free and therefore it does too many API Calls and recomposes the Lay-out too much. We can see this best on slower hardware.

    Reviewed by Krakert at 2022-06-07 07:37
AnimApp is an app that recommends you random anime and you can add it to your favourite if you like it.
AnimApp is an app that recommends you random anime and you can add it to your favourite if you like it.

papb-team6 AnimApp is an app that recommends you animes and you can add it to your favourite if you like it. Team members: Firdaus Bisma Suryakusuma (

Mar 9, 2022
Task Timer - An android app that helps you to keep a track of how much time you spend on each task
Task Timer - An android app that helps you to keep a track of how much time you spend on each task

Task Timer - An android app that helps you to keep a track of how much time you spend on each task

Feb 24, 2022
This app aims at helping people keep track of their job applications, and remind them regularly about the same.
This app aims at helping people keep track of their job applications, and remind them regularly about the same.

Applications Tracker Lately I have been applying for many roles, and it has become a hard task to keep track of all the applications. Spreadsheets are

Feb 20, 2022
A simple and minimal app to track how long you've been sober from anything you want.
A simple and minimal app to track how long you've been sober from anything you want.

Sobriety A simple and minimal app to track how long you've been sober from anything you want. I mostly designed this out of spite for "I Am Sober", wh

Jun 17, 2022
A Clean Architecture Cryptocurrency App (MVVM, Use Cases, Compose)

A Clean Architecture Cryptocurrency App (MVVM, Use Cases, Compose)

Mar 9, 2022
A cryptocurrency data aggregator that tracks price, volume, social stats.
A cryptocurrency data aggregator that tracks price, volume, social stats.

CryptoMania A cryptocurrency data aggregator that tracks price, volume, social stats. Challenge description Design & implement an Android application

Mar 5, 2022
an attempt to learn basics of blockchain and cryptocurrency

basicBiedaCoin An attempt to learn basics of blockchain and cryptocurrency Useful sources: But how does bitcoin actually work? Implementing a Simple B

Oct 29, 2021
A news app made using android studio in Java with features like favourite news, Location detector for local news, and especially made with HUAWEI APIs

HuaweiGlobalNewsApp A news app made using android studio in Java with features like favourite news, Location detector for local news, and especially m

Oct 30, 2021
Sunlight Apk - Sunlight App where You can decide Your Mood and Relative suggestions of what you can do will be displayed
Sunlight Apk - Sunlight App where You can decide Your Mood and Relative suggestions of what you can do will be displayed

Sunlight_Apk This Is a App where You can decide Your Mood and Relative suggestio

Feb 5, 2022
An interesting workout app, that can track your progress (unfinished)
An interesting workout app, that can track your progress (unfinished)

7MinuteWorkout An interesting workout app, that can track your progress (unfinished) U planu mi je da odradim bolji dizajn za ovu aplikaciju. Za sada

May 8, 2022