Development
March 11, 2021

How to sculpt a lean, successful app from a complex vision? CheerMeOn case study.

Artur Schroeder
Frontend / mobile developer

CheerMeOn is a startup that wished to create an app, which would measure any goal a person might set for themselves. They knew that this was impossible, so they came to us with a shortlist of the objectives. We persuaded them that, for starters, they should go with one goal only. They agreed. And together, we developed a successful app.

First things first, the MVP

It is not unusual that the Partner asks us to create an application with several functionalities. But seldom do we develop such a product from the start. The complicated software is hard to test and hard to pitch to the VCs. We had to create something small and simple at first, the MVP. We cut CheerMeOn’s initial idea down to setting and tracking progress for the weight loss only. To this day, the app is quite similar to the MVP and is thriving.

How does this successful app work?

CheerMeOn is a simple weight loss tracker. The user puts in,

  • Their current weight
  • Their target weight
  • The time in which they want to achieve the target weight

The app encourages the users to share their progress on social media too. Two psychological insights underlie this functionality. On the one hand, letting other people know about your targets makes you feel accountable; on the other, it triggers peer pressure from those who learned about your goal.

CheerMeOn is a successful app not only because of top-notch development but also due to its eye-candy UI and intuitive UX
Intent designed eye-candy UI and intuitive UX for CheerMeOn.
Download the app from Google Play or App Store and check for yourself!

The technologies we used

We used React Native and Firebase, joined with Hasura hosted on Heroku. Thanks to this conjunction, we could use a relational Postgres database with graphQL API instead of the NoSQL Firebase Firestore database. We preferred the relational database because CheerMeOn benefits from uploading the feed with posts and comments. This functionality is much easier to implement with the use of the relational database.

And we are still developing!

The Partner is so happy with us that we are still working together today.

One of our long-term targets is the further development of the application so the users could set various goals like quitting smoking, creating a habit of regular training and so on. Our other long-term target is making the app more and more engaging to attract new users faster.

The collaboration

The collaboration has been going smoothly so far. The Partner had his bold vision when they came to us, but as I already mentioned, they agreed to reduce it to just one goal. They trusted us fully, and we are very thankful for it!

During our bi-weekly sprints, CheerMeOn usually praised us. They were pleased with our job’s results and not really interested in the processes that led to them.

Takeaways

  • CheerMeOn is an example of a successful app that started as a complex idea
  • For now the app tracks weight loss only
  • We plan to enrich it with the functions the Partner desired at the beginning

Bonus; how to optimize Firebase Cloud Storage?

The genuine challenge we encountered while working with various Firebase projects was Cloud Storage Optimization. Below I will describe this problem based on an example from my experience.

Even though we didn’t have any Cloud Storage files, the indicator showed almost 425 MB of data.

sometimes even a successful app in Firebase might have unidentified data
424.6 MB of unidentified data

Surprisingly, we found 63 objects in the Cloud Storage, even though we hadn’t kept any files there!

We went to https://console.cloud.google.com/storage/browser to find the Cloud Storage Buckets list. We have found the eu.artifacts mentioned above on this list. They were cache files that hadn’t been removed automatically.

Our further research showed that these files were connected to Cloud Function in Node Js v10 environment. More specifically, 4 small cloud functions (which had 10 to 15 lines of code). Each time we upgraded our functions (deployed them on the Firebase), new artifacts were generated. 

To optimize this issue, you need to go to console.cloud.google.com (link above), choose artifacts bucket, and click on the lifecycle tab.

Optimizing your Google Cloud is one of the important things in creating a successful app
Lifecycle tab in the Google Cloud Platform Console

Then, you need to add a new rule, “Delete object.”

After you click “Continue,” you should choose “Age” and fill the bracket with the number of days after which the artifacts should be removed automatically (we have decided to go with 3). Press continue and confirm with “Create” button.

To lower costs of your successful app, add object lifecycle rule to remove the unwanted files from Google Cloud
Adding object lifecycle rule

Thanks to learning this, we know we can reduce the cost of the projects that use Firebase. The free limit of Cloud Storage is 5 only GB and some projects can generate even a few dozen of gigabytes with the mechanism I described above. The knowledge and experience we gained allow us to give you a better price for the apps that we develop using Firebase.

Design Sprint
From a bold idea to prototype
Learn more
Written by
Artur Schroeder
Frontend / mobile developer

You may also like

Like what you read?
Get monthly business and technology insights straight to your inbox.