Skip to content

[Feature]: Menstrual cycle tracking (BBT) via Colmi overnight temperature #18

Description

@henribruvier

What problem does this solve?

Hi everyone,
First of all, thanks for this awesome app!

I recently ordered a Colmi R09 smart ring to test its capabilities, and my wife is an expert in symptothermia (currently using Femometer). Modern cycle tracking apps are often cluttered, expensive, and require tedious manual temperature logs every morning. Since the Colmi ring tracks skin temperature passively during sleep, I think PulseLoop is the perfect place to build a clean, minimalist, and premium menstrual cycle tracker.

The Idea:

  • Automatic BBT gathering: Use the existing sleep stages and nightly temperature measurements (already decoded in ColmiDecoder.swift!) to compute a clean overnight Basal Body Temperature (BBT) baseline.
  • Sensiplan/CLER Rules: Implement the classic "3-over-6" temperature shift rule to confirm ovulation and fertile windows.
  • Minimalist UX: The user only has to log the "Period Start Date" (which starts a new cycle) and an optional "Disturbed Night" toggle (for fever, illness, etc. to exclude outliers). No endless symptom questionnaires.
  • Visual UI: A premium SwiftUI calendar showing cycle phases, and a BBT curve chart with a coverline.

Implementation:

I am primarily a TypeScript developer, so I plan to implement this feature by "vibe-coding" in Swift once I receive the ring. I'll make sure the codebase architecture is respected and write unit tests for the algorithm.
Before I start, I wanted to align with you on the contribution:

  1. Are you open to integrating a menstrual cycle/BBT tracking feature into the official PulseLoop app via a Pull Request?
  2. If not, no worries at all! I will simply build it on my own personal fork for our private use.
  3. If you are open to it, do you have any preferences regarding the UI integration (e.g., a dedicated "Cycle" tab or a card within the "Vitals" tab)?
    Looking forward to your thoughts!

Proposed solution

  1. Sleep-Filtered Temperature Data: Build a service to extract nocturnal temperature values by averaging measurements taken strictly during SleepSession periods (excluding awake times).
  2. Symptothermal Algorithm: Implement the Sensiplan/CLER "3-over-6" temperature shift logic in Swift to identify ovulation and predict fertile windows.
  3. Data Model: Create a simple SwiftData model CycleDay to store manual records (Start of period, Disturbed/Fever flag, and notes).
  4. Minimalist UI:
    • A monthly grid calendar allowing the user to retrospectively log period starts or toggle disturbed nights.
    • A clean BBT chart rendering the nightly temperature points, the coverline, and the ovulation day.

Area

UI / DesignSystem

Alternatives considered

No response

Would you be willing to work on this?

Yes, I'd like to implement it

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions