Inspiration

As women, we know the challenges of tracking the menstrual cycle. Understanding what phase we're in and how to care for our bodies during each phase can be difficult. This inspired us to create an app that provides personalized nutrition and fitness recommendations in each cycle phase. We believe this would be a valuable tool to support women on their wellness journey.

What it does

Phase is an innovative web-based app designed to empower women to align their nutrition and fitness with the different phases of their menstrual cycle: Menstrual, Follicular, Ovulation, and Luteal. By analyzing cycle length, Phase offers tailored food and exercise recommendations to support hormonal balance and promote a long-term healthy lifestyle. Users can view their personalized food and exercise recommendations on any current day. Our mission is to foster inclusivity by accounting for diverse cycle types and making healthy living accessible for all. With Phase, women take control of their health—one cycle at a time.

How we built it

We used the programming Language Python. Also, we implemented several frameworks and libraries such as Flask: A lightweight web framework for building RESTful APIs, Flask-Bcrypt: For password hashing and user authentication, Flask-JWT-Extended: For implementing JSON Web Token (JWT)-based authentication, SQLAlchemy: ORM (Object Relational Mapper) used for database operations and models, Flask-SQLAlchemy: Extension that integrates SQLAlchemy with Flask, Datetime: Python’s standard library for date and time manipulations. We also used a Database called SQLite for development and testing which is configured with SQLAlchemy. For authentication and security, we implemented JWT (JSON Web Tokens), BCrypt to hash passwords for secure storage. and some environment configurations (e.g., JWT_SECRET_KEY, database URI).

Our backend processes user input such as login information, name, age, weight, and period start and end dates, storing this data in an SQL database. The backend algorithm, built in Flask, determines the menstrual phase based on each individual's cycle length and provides tailored recommendations for nutrients, their sources, and types of exercise. The frontend, developed using Streamlit, offers an intuitive interface for users to interact with.

Challenges we ran into

We encountered several challenges throughout the development process. One of our team members was unable to run iOS on their Windows setup, leading us to try Android Studio, but we faced many technical issues there as well. Eventually, we switched to Streamlit. Streamlit runs its own web server via the Tornado framework, and there’s no good way to embed a Streamlit app inside a Flask server. This might not be the right choice of platform for Frontend.

Additionally, we needed to conduct in-depth research on menstrual cycles, and accurately calculating the timing of each phase proved to be a complex task.

Accomplishments that we're proud of

Implementing Streamlit, being able to calculate the phases accordingly, and learning new information and a new programming language throughout the development of the project.

What we learned

We gained a deeper understanding of the menstrual cycle, how each phase impacts the body and what are the best approaches to implementing a healthy lifestyle through nutrition and fitness.

Through our attempts with Android Studio, we worked with JavaScript, a new and interesting skill for most of us. We also learned how to use Streamlit to develop a web-based app and gained foundational knowledge in creating both Android and iOS applications.

What's next for Phase

Our future goal is for users to receive personalized reminders via email, with seamless Google/Apple Calendar integration, ensuring effortless access.

Built With

Share this project:

Updates