Why an App?

Before we decided to develop an app, we defined what we realy needed; a way to save, evaluate and present our data. We wanted to give our users the opportunity to always have access to their data.
A display build onto the measuring device would provide the ability to save, evaluate and present the information. But carrying the measuring device with you all the time is not practical and the user would lose the advantage of having access to the data, at times when it is needed most.
An App satisfies all user needs. Deploying the app on a smartphone is the right choice, as it is readily accessible by the user and allows for less expensive and easy software updates. As you always need to have access to your data, an App is the optimal solution as most people carry their smart device with them all the time. So it is cost efficient, easy to update and save. This way you can check if you are fertile whenever and wherever you need to know. For people who do not own a smartphone the code of the App (.apk) is derived from (.py) and can be installed on a personal computer as well.

General information

The App was written in Python using the Python module Kivy. Kivy is a free open source Python module for developing apps, which can be deployed on Android and IOS devices. For the packaging we used buildozer.
Our App consists out of three different screens, the home screen (Figure 1), where you can insert your information for the day, receive the information and start the synchronization with the measuring device. The information that can be inserted includes, whether you are on your period or not, which can be entered via a checkbox. Additionally the users state of mood can be entered through radiobuttons. In the bottom right corner is a button which leads the user to the graph screen (Figure 2). Here a graph is displayed, which gives an overview of the measured hormone concentrations over the last 30 days (the 0th day being today). In the bottom right corner is a button leading the user to the third screen (Figure 3), which contains more information about our project.

Figure 1 View on the Home Screen of the App.

Figure 2 View on the Graph Screen of the App.

Figure 3 View on the Info Screen of the App.


When the app is connected to the Arduino mega and wants to synchronize, the app performs a handshake with the Arduino mega via Bluetooth over the Bluetooth extension (HM-10) on the Arduino mega, which then sends the last measured hormone concentrations to app. If a second measurement is performed on the same day, the first measurement is overwritten. The code for the connection was written but due to time constrains it could not be tested.

Figure 4 Simplified illustration of the data communication.


The app uses the latest measurement as well as the history of old measurements, to evaluate the users fertility-status on the current day, and also the position in the menstrual cycle. Our method becomes more reliable at predicating the individual trend of the menstrual cycle, with every iteration. This way the user can then be informed if she is fertile or not. Additionally, a graph is displayed that shows the last 30 days. A feature was planned which could calculate and display a fertility prediction for the next few days, if enough data was collected in beforehand.

Figure 5 Graphs generate with the App from randomized data.


Securing the safety of personal data, especially nowadays is important. Therefore our app only saves the data locally ensuring that only the user has access. It is possible to export the data and save it on a seperate device. That way the information would not be lost, in case the users phone gets damaged. We wanted to keep the information in the hand of the user, therefore we abstained to use a server with an account system. We as the developers have no access to the collected data.

Additional Features

The app offers the possibility to track the users daily well-being and if the user had menstrual bleeding. This information could be used to predict, days you may feel unwell, and days of the users menstrual bleeding. The app works with or without the insertion of mood and bleeding specific inputs.

Dependencies and Download

GitHub Download App

Packages needed for running in Python
  • Cython 0.29.21
  • Kivy 1.11.1
  • Kivy-Garden 0.1.4
  • Pygments 2.7.1
  • Certify 2020.6.20
  • Chardet 3.0.4
  • Kivy-deps.glew 0.3.0
  • Kivy-deps.gstreamer 0.3.1
  • Kivy-deps.sdl2 0.3.1
  • Kivy-garden.graph 0.4.0