2Miners Monitor: My First Personal Mobile Apps

After so many years developing an app (either for web or mobile), for clients, ultimately, I wrote and publish my personal app. I won’t dive into technical detail in this story, such as placing a widget in iOS and Android Home Screen, fetching and parsing API, or even choosing a state management framework. Today, I want to share my journey in building this app in a more general term, like determining the UI/UX design, translate the app, and eventually publish it.

But, before we got into that, I would like to give a little backstory about how I decide to write this mining monitor app.

At the end of last year, I joined the hype of the crypto-mining world, or to be more precise, VGA-mining. I tried to use my under-used NVIDIA 1080 TI graphic card (I’m pretty sure just operated for watching YouTube and Netflix is an insult to this GPU). After a month of messing around many mining pools out there, I got stuck to 2miners.com. Besides their broad range of supporting coins, simplicity yet straightforward design layout is the potent factor to make me stay and keep mining from them.

After doing some time at mining, I feel the need to monitor my mining growth activity. Yes, 2miners provide us the required info on their site regarding our mining activity. You go to their website, enter your rig address, and there is the progress info you craving for. Heck, you could indeed bookmark the URL for easier access. But, isn’t the world feel easier if it just one click away, opening no browser at all, or even better, with no click at all, you just unlock your phone, and there they are, ready to be consumed by you.

After going to PlayStore and search for a particular app, I can’t find an app that can fully satisfy my n̶e̶e̶d̶ eagerness, so I’m asking myself, why not creating an app that provides info that 2miners provide, if the 2miners users love the website, I’m pretty sure they’ll love the app that providing the same thing in a shortcut manner.

I used to have trouble guessing what a user wants from an app, my ideas are too generic or too complicated to implement, that’s why I take orders from clients. They had a dream; I make it come true. I’m a pure executor, after all. And since 2miners not having official apps themselves but provide a public API, this is a rare opportunity for me to publish an app of my own.

With no further ado, I contacted them to ask for permission and confirmation to create an app based on their content and rip off their design (more of this later). And kudos to them, they replied and give me that, as long as I stated that is an unofficial application, which is not a big deal for me, and that’s how my journey into publishing my own apps begun.

Building Phase

Flutter is the framework I choose to build this app. Other than cross-platform ability, Dart is an exciting language to code with. However, I’m still using Kotlin and Swift for some OS-related functionality in this app, like add a Home Screen widget and enabling Siri functionality.

Layout Design

UI/UX is always my weak spot, it’s outside of my skill set. I decide to mimic 2miners design, so users can feel at home using this app (lame excuse, I know).

Screenshot of their website and my app

Can you see the uncanny resemblance!? It even uses the same font! Isn’t it a legal thing to do, you may ask? Well, since they permitted me to do so, I should proceed. Besides, I would add functionality to this app to differentiate from the website (we would come to that later). For now, the first responsibility that I must take for using this gate-away plan is…


Yes, you read it right, translation. Having a diverse user in the term of region and culture, 2miners try their best to accommodate it. They pack a huge 20 different languages into their website. It’s maybe a trivial task for some, but for me? It still amazes me how could I survive that tedious task.

Then comes the real problem. Earlier, I say, this app must have additional features to differentiate it from the website, so the logical consequence is there: a sentence that exists in the app but not in the website. As for now, I use the Google Translate engine, but I’m sure the result is not good as it comes from a human being. So, I hope you guys could reach me to help translate it in your own language, then I could give you the PRO version for free and put your name in the apps about the page.

Another obstacle that I faced in translation is when translating to Arabic. I don’t have a problem with the script, as I’m familiar with it, but the so-called RTL (Right To Left) enough to disorientate me when dealing with Gesture Detector. For the layout, fortunately, Flutter supports it out of the box, freed me from the hassle.

Business Model

Freemium. This is the fairest business model for this app. This app should be usable, without users being harassed by ads, in the free version. And then, should users want to use extra exceptional features, they could pay for the PRO version. The bottom line is: This app should be great in the free version, and extremely cool in PRO.

In the v1 release, for the free version, a user could only add up to 5 addresses, while unlimited in PRO (there’s still your phone’s memory limitation, though). In v2, I added Home Screen widget functionality. At this time of writing, there are 3 widgets available: Balance Monitor, Workers Monitor, and Hashrate Monitor. Only Workers Monitor is available in the free version. Of course, there will be additional widgets in future releases, either for free or the PRO version.

Balance Monitor, Workers Monitor, and Hashrate Monitor widget

The future releases would also have another additional feature, on the top of my head right now is notification. I’m planning to integrate a 2miners telegram bot for this. I’ll update you and may create an article about it later. If you guys have an idea what feature it should implement, you could hit me up, and I will be forever grateful.

Publishing Phase

Google’s Play Store

There isn’t much problem publish this app to PlayStore. The initial review took 5 days, subsequent releases took only 1–2 days.

At this time of writing, there is about 400 download for this app. Even some outstanding persons already buy the PRO version. This encourages me to make this app even better and make a full article you reading right now.

Apple’s App Store

With Apple, there’s another story completely. In my first submission, they straight out rejected this app. This is the clause in their guideline that I violated.

4.1 Copycats

Come up with your own ideas. We know you have them, so make yours come to life. Don’t simply copy the latest popular app on the App Store, or make some minor changes to another app’s name or UI and pass it off as your own. In addition to risking an intellectual property infringement claim, it makes the App Store harder to navigate and just isn’t fair to your fellow developers.

Well, it’s a logical response, actually. This app is a copycat of 2miners.com. So, to straighten things out, I responded they already permitted me to make an app based on their content and layout design. I even embedded the email between me and 2miners support. Still, no luck.

After I have submitted an appeal and told them they can crosscheck it to 2miners themselves about the permission, this violation is lifted. Now, they reject me with this.

4.2 Minimum Functionality

Your app should include features, content, and UI that elevate it beyond a repackaged website. If your app is not particularly useful, unique, or “app-like,” it doesn’t belong on the App Store. If your App doesn’t provide some sort of lasting entertainment value, it may not be accepted. Apps that are simply a song or movie should be submitted to the iTunes Store. Apps that are simply a book or game guide should be submitted to the Apple Books Store.

Now, this baffling me. To think about it, this app is not that useful if a user doesn’t have a mining address at 2miners. But if one has, I could argue this app is beyond a repackaged website as it has Home Screen widget functionality. I already have submitted an appeal and explained it to them, but still no from them.

Home Screen widget in iPad

Okay, this widget may not good enough to leverage the iOS function, so I implemented the so-called Siri Shortcut to this app. What I’ve done is, so the user could instruct Siri to open their miner.

Siri Shortcut functionality

Apparently, this is still not enough. Rejection is not a new thing for me, I often been told that I’m not good enough for a particular somebody. But when it’s happened, it still sucks. Big time. However, give up is not an option. My next move would improve Siri functionality, so it not opening the app, but outputs the value the user wanted instead. Or maybe I’ll try to fulfill this sub-point of their guideline:

(ii) Make sure you include sufficient content in the binary for the app to function at launch.

Add a “tutorial-like” when a new user uses this app, “click this button to go there”, “explain this box contain what information”, you get the picture. But, if I should go this way, that’s mean I have to translate that new string into 20 languages. Ugh, that’s so frustrating.

Any way that works, I’ll update you and may post a new article to overcome this guideline violation.

Despite the rejection from Apple, my entire experience in building and publishing this app is good. It’s presented me with some exciting and new challenges.

That’s it for now. Have a great day. Peace out!