FemDash- a no B.S. approach to women's health

Haritha Mohan,designarchitectureperformance

For too long women have been overlooked, especially in the health sector. Even more so for women in marginalized groups such as Type 1 Diabetics like myself. Frustrated by the tooling for women and type 1 diabetes often being mutually exclusive, I decided to take matters into my own hands. I often found myself staring at the Apple Health app desperately trying to reason through the data, attempting to find some answer to put an end to my roller coaster of hormones I was experiencing on cyclic basis. As a software engineer, I know the important of data and the value of using good tech to visualize it. After all if it can be used to analyze random corporate business data, surely it can help me reason through my body's signals. As a woman I know the impact my cycle has on my lifestyle, whether it be mentally, physically, or emotionally. As a diabetic, I know that prevention triumphs reaction. So this tool, encapsulates these experiences into a data-visualizer tool tailored with these needs in mind with the eventual goal of providing proactive recommendations for activity, nutrition, and insulin needs so that we women can truly unlock our potential and be and feel our best selves while doing so.

You can find the tool here: https://femdash.netlify.app/ (opens in a new tab)

But I wanted to post on here about FemDash to dive into the technical details behind the tool and consider its implications on performance, maintainability, and user experience.

This was my first time taking a stab at creating a full stack app in a hot minute..since my college days I think. I can't lie it was super fun to use bleeding edge tech and see support posts from 2024 instead of 2008. Wrangling with CSS, however, was something I did not miss and am not aching to revisit anytime soon. ChatGPT was a nice ally to have in that regard..but when in came time to figure out the best design for the overall system especially when it came time for the backend stuff and don't even get me started on figuring how to find a successful deployment strategy it was classic trial and error and some good ol' thinking.

Photo

So anyways, going back to the intricacies of the tech stack..(also the diagram was designed with excalidraw- so great and intuitive! Fun act Andrej Kalpathy uses it too..)

So the flow of data in the tool can be split into three segments:

  1. Extraction: Getting what we need from the Export.XML file generated by the Apple Health app and storing the relevant data into a relational SQLite database
  2. Sanitization: Narrowing down the data to be more digestable by narrowing it down to a more recent time period and calculating averages/totals for the measured values
  3. Rendering: Use the Svelte ecosystem to create a visual of utility to help users detect noticeable trends in their health

Diving into more of the decisions made along the way: In an era where Roe v. Wade is still a topic of debate, dealing with data concerning feminine health is very sensitive and should be kept private. Keeping this important notion in mind during development, was one of the motivating factors in choosing SQLite as the data storage option of choice. Everything that's happening with the SQLite database doesn't leave the user's machine. Moreover SQLite offers a great lightweight and lightning fast option when it comes to data retrieval.

But using SQLite caused a fun plethora of issues when it came time for deployment. I attempted three different deployment strategies before finally settling on the tried and true Netlify.

The other two options explored were Vercel (which is what this site is hosted on..lol) and Github Pages. Vercel's big emphasis on serverless ended up catching up to me, no combination of configuration tactics could get the database up and running. And Github Pages..don't even get me started. It was just a hodge podge of pre-rendering with the Svelte framework I didn't even know where to begin with compatibility with SQLite.

But Netlify worked great! The setup was very straightforward and I found it to be a more seamless alternative to Vercel.

Svelte was chosen as the web dev framework because I was really intrigues by how they were going about getting the source compiled to HTML at build time instead of runtime (reminded me a lot of how we approach Ahead-of-Time (AOT) compilation in dotnet), so this had been on my list of tech to tinker with for awhile.

It also had very fluid integration with Tailwind, Chartjs, and SQLite so it made for a sensical technical decision.

The goal is to eventually shift the XML handling from Python to Typescript to be more well-adapted to the rest of the tool's infrastructure (maybe using fast-xml or some other helper lib). But ugh, can you blame me..python just knows how to get the job done fast and easy! So for this first go-around, when I wasn't even sure my vision had a possibility of coming to together to begin with, it made for the right choice at the time.

In the future, also plan to incoporate generative AI for recommendations surrounding activity (sleep, movement, social) and nutrition (think weekly meal plans and such).. the goal is to just make getting your health as a woman in check more accessible in a realistic way..cuz we deserve to feel good and honor our body's cues.

til next time! -hmtech

© Haritha Mohan.RSS