Looking for a digital agency?

A Personal Mood Tracker

Steelkiwi Inc.
  • Score Awaiting client review
  • Date Published
  • Reading Time 3-Minute Read

A mood tracking app that lets users evaluate their thoughts, emotions, behavior, improve and foster their mental health.


People would rather prevent diseases and monitor their health daily than get sick. There are many severe illnesses. Some of the ones that are trickiest and hardest to detect relate to mental health. According to the World Health Organization, mental disorders affect one in four people. It’s estimated that 300 million people globally are affected by depression. Mental diseases often begin with deviations in mood patterns. To manage anxiety and depression, one can keep a paper journal of moods. But this takes time, persistence, and consistency. People usually lack the motivation to write in a journal daily or reread what they’ve written to detect deviations. However, a wisely designed mental health app can help people keep track of their moods and make entries in less than five seconds. A mobile mental health application can translate the boring routine of keeping a handwritten journal into a gamified experience. What’s more, it can help people better manage their lifestyle choices, make informed health decisions, and work towards a better overall quality of life.


Developed a Native iOS Application

Developing the Moodistory app was both challenging and interesting for us. The app is written in Swift and uses a custom architecture due to design requirements. We used a mix of Service-Oriented Architecture (SOA) and Model–View–View—Model (MVVM) patterns in order to build the proper structure and manage data calculations. The flow is built around the mediator pattern with a flexible header container common to all screens and a dynamic center container for the main content. Both containers are synchronized for smooth bouncing and scrolling behavior.

The app needed to store large amounts of user data, such as entries, so we used Core Data as a native persistent framework. We implemented import, export, and sharing functionality with the third-party Groot library.

Data manipulations are common across the app and are featured mostly in the analytics section. In order to achieve the best performance, we applied custom build services, combining them with GCD multithreading programming, which resulted in asynchronous data manipulations and smooth UI interactions.

The most exciting part of the app is the animations. To enable beautiful and sophisticated transitions, we applied native approaches. The animated header is built with the ZCAnimatedLabel and a charming wave animation. What’s more, the app is full of custom views, buttons, controls, and switches. Due to its unique custom design, we didn’t use third-party libraries but instead built our own. This resulted in bug-free and flexible software design. For example, some custom animations are made in code, showing users a smooth smile transition from one path to another.