https://cdn-images-1.medium.com/max/800/1*CdcDYrG4hscdGooOyXao2w.png

Leveraging the Power of Open Source: The Story of Ovuli

Harshit Jain
The Skynox Blog

--

Ever wondered about creating an impact with your contribution to open source projects? I sure did.

How’re you all doing? I hope that you are spending your time productively. This article is about a wonderful open-source project that I’ve been working on for a while. It has been a great learning experience for me.

It all originated with a simple idea to help women in the estimation of their menstrual cycle date and setting up a reminder for future dates.

What’s the menstrual cycle?

The menstrual cycle is the monthly series of changes a woman’s body goes through in preparation for the possibility of pregnancy. Each month, one of the ovaries releases an egg — a process called ovulation. At the same time, hormonal changes prepare the uterus for pregnancy. If ovulation takes place and the egg isn’t fertilized, the lining of the uterus sheds through the vagina. This is a menstrual period.

Do you know when your last menstrual period began or how long it lasted? It’s something that can vary between women, so it’s worth paying attention to.

Tracking your menstrual cycles can help you understand what’s normal for you, time your ovulation, and identify important changes — such as a missed period or unpredictable menstrual bleeding. While menstrual cycle irregularities usually aren’t serious, sometimes they can signal health problems.

How did Ovuli start?

https://cdn-images-1.medium.com/max/800/1*BzIg6SaJrM5Bbl4g0jb0sA.png

At first, we started out with a terminal-based utility which we called “Ovulation Calculator in Terminal.” It starts with knowing your average cycle, last period date, and duration of your average cycle. The output gives you the details about the next period dates, fertility window, approximate ovulation, and Pregnancy Tests day.

https://cdn-images-1.medium.com/max/800/1*CX3fINiaPmmZprXzf9YC8Q.gif

Ovuli-CLI is a simple command-line utility that allows you to see when you may be ovulating to help find your most fertile days. Menstrual periods are different from woman to woman, and month to month. This utility was developed by Team XenoX 🔥.

While it was a great idea that was simple and useful, we realized it had some flaws:

  • A terminal-based utility would appeal to developers only
  • No reminder functionality
  • Difficult to set up and use for less technically-inclined people
  • Could only be used on computers, not phones

This is the repo for Ovuli-CLI:

You may clone this repo and run it to use the Ovuli-CLI utility. Feel free to solve any issues or add features, too!

But really, I know what you’re probably thinking right now. Is this utility really serviceable for most women out there? No, not really. Yeah, it’s a software, it solves a problem, and it works fine, but it has too many limitations to ultimately be of any use to the target demographic. And that is what differentiates software products from software solutions.

The difference between a software product and a software solution is a software solution always involves a services element, as it’s inherently custom-made. A software product is an out-of-the-box piece of software that’s been created to solve a more generic problem that regularly occurs within a specific segment.

This led us to start building Ovuli as a hybrid mobile application that works entirely offline. Let me tell you why.

Ovuli

Ovuli-CLI was the brainchild of Sarthak Sharma, who decided to take it one step further and make it into an actually usable mobile app for the masses, especially women from less privileged backgrounds. This is currently under development that consists of main functionality as using asynchronous local storage to work offline, use of Internationalization to support 20+ Languages. The app was designed in Figma. The development is done with Expo. This project started around the beginning of March ’20 under GirlScript Summer of Code. I was one of the mentees for this project with other major contributors. This project was mentored by Sarthak Sharma, narender2031, and Sahil Singh. You can look over the repository for more info.

Pros:

  • Works well on IOS and Android.
  • Supports 20+ languages.
  • Entirely offline.
  • Easy to use
  • Ability to create reminders
  • Saves history
  • Customization in profile

We have used Internationalization in React-native to get the offline working of the multilingual app which supports Hindi, English, Marathi, Assamese, Kashmiri, Tamil, Telugu, Bengali, Gujrati, Urdu, and many more. It doesn’t use any external API for any kind of functionality. More information can be found here.

The date and periods calculation is done locally and doesn’t require any sort of internet connection.

How you can contribute?

At GSSOC and Team XenoX, we’re big believers in the power of open source development. In the process, not only do the end-users of the product benefit, but the developers benefit from the experience as well. So if you’d like to clone this repo and add new features, go ahead and do that.

It’s possible that you may not be well-versed with React native, however, so here are a few other ways you can contribute:

  1. Design: If you feel like that your Design sense is awesome, join the party. This section is for you, we are using Figma to create the design. All the wireframes will be uploaded in wireframes dir.
  2. Documentation/Wiki: Documentation is an essential aspect of any open source project, and it is for this project as well. You might learn a lot while writing about it.
  3. Language Translation: We are not using Google translator to be precise. Also, the language conversion will be only for UI elements. Feel free to add your own language. We will be storing this info in translation dir.
  4. Report Issues: I consider this as one of the most important tasks. Follow the steps mentioned in the upcoming section.

And if you know how to code, it’s pretty simple. There are two ways you can do that:

  • HTML & CSS: We are using Atomic Design System so you can contribute by designing or improving even the smallest design elements, like buttons.
  • React Native: You can go into the screens and start writing React code to complete a feature or fix a bug.

And if you have any doubts, you may contact us as well!

https://cdn-images-1.medium.com/max/800/1*gAycji5iqy_T9URjQq-zqg.png
Points Distribution

Here’s how the points are distributed among team members for their contributions.

The app is currently on the final stage of development and nearly ready for launch, soon to be available to Play Store and App Store as well.

I hope that you like Ovuli and what we’re trying to achieve with it. Do let me know your thoughts down in the comments section! You can connect with me on LinkedIn as well.

https://cdn-images-1.medium.com/max/800/0*kyhqPhsqUhoO_kiK.gif

Leave some claps if this was informative or valuable to you!

--

--

Harshit Jain
The Skynox Blog

SDE Intern @Paytm | Final Undergrad at Shri G. S. Institute of Technology and Science | A little me on the internet at iharshit009.github.io