How to get started
- Create an account with the Register button.
- Log in to reach your dashboard.
- Open a day and fill in the daily summary for that date.
- Add detailed entries like symptoms, mood, sleep, activity, and mitigations as needed.
- Come back daily so the timeline becomes useful over time.
What you can track
- bleeding / not bleeding
- pain or cramps
- general wellbeing
- symptoms
- moods
- libido / sex-life notes
- sleep
- sports / activity
- mitigation actions that helped or didn’t help
How cycle prediction works
The app infers cycle timing from bleeding history, estimates ovulation 14 days before the next bleed, and keeps the visual language compact.
Cycle length
Uses recent completed cycles for the average and period length.
Ovulation
Ovulation is estimated from the next predicted bleed.
Fertile window
The fertile window sits around ovulation and is still adjustable in settings.
Where it appears
The ring is current-cycle only, while KPI tiles can still show next bleeding timing.
Account retention
If an account stays inactive for too long, it can be removed to keep the system tidy.
- Inactive accounts are deleted after 6 months without a login.
- Deletion removes the profile and all related tracking data.
- Turn off auto-delete in Settings if you want to keep the account.
- This keeps the test environment from filling up with stale accounts.
Data model
These cards are generated from the live model schema. They show the fields we store and how the tables connect, without exposing any row data.
Core accounts and preferences
Collapse or expand a group.
user_account
User account
Login identity and account ownership
Collapse or expand this table.
user_account
User account
id
text
PK
required
username
text
UNIQUE
required
password_hash
text
required
created_at
datetime
required
updated_at
datetime
required
last_login_at
datetime
nullable
user_profile
User profile
Display name and preference payloads
Collapse or expand this table.
user_profile
User profile
id
text
PK
required
user_id
text
FK → user_account.id
UNIQUE
required
display_name
text
nullable
preferences
json
nullable
privacy_settings
json
nullable
age
number
nullable
contraception_method
text
nullable
family_planning_intent
text
nullable
created_at
datetime
required
updated_at
datetime
required
Connects to
user_account.id
registration_request
Registration request
Pending signup approval workflow
Collapse or expand this table.
registration_request
Registration request
id
text
PK
required
requested_username
text
required
requested_display_name
text
nullable
password_hash
text
nullable
status
text
required
request_ip
text
nullable
user_agent
text
nullable
review_note
text
nullable
reviewed_by_user_id
text
FK → user_account.id
nullable
approved_user_id
text
FK → user_account.id
nullable
requested_at
datetime
required
reviewed_at
datetime
nullable
Connects to
user_account.id
Daily records and bleeding details
Collapse or expand a group.
daily_record
DailyRecord
One record per user per day
Collapse or expand this table.
daily_record
DailyRecord
id
text
PK
required
user_id
text
FK → user_account.id
required
record_date
date
required
bleeding_status
text
required
pain_level
number
nullable
wellbeing_level
number
nullable
wellbeing_note
text
nullable
notes
text
nullable
created_at
datetime
required
updated_at
datetime
required
Connects to
user_account.id
bleeding_detail
Bleeding detail
Detailed bleeding metadata for a day
Collapse or expand this table.
bleeding_detail
Bleeding detail
id
text
PK
required
user_id
text
FK → user_account.id
required
daily_record_id
text
FK → daily_record.id
required
entry_time
datetime
nullable
bleeding_kind
text
required
flow_level
text
nullable
bleeding_type
text
nullable
bleeding_start_bucket
text
nullable
color
text
nullable
clot_level
text
nullable
bleeding_note
text
nullable
notes
text
nullable
created_at
datetime
required
updated_at
datetime
required
Connects to
daily_record.id
user_account.id
bleeding_product_use
BleedingProductUse
Products used during a bleeding detail
Collapse or expand this table.
bleeding_product_use
BleedingProductUse
id
text
PK
required
bleeding_detail_id
text
FK → bleeding_detail.id
required
product_type
text
required
product_count
number
nullable
leak_flag
boolean
nullable
notes
text
nullable
created_at
datetime
required
updated_at
datetime
required
Connects to
bleeding_detail.id
Tracked entries and links
Collapse or expand a group.
symptom_entry
Symptom entry
Single symptom occurrence
Collapse or expand this table.
symptom_entry
Symptom entry
symptom_definition_id
text
FK → symptom_definition.id
required
severity
number
nullable
duration_minutes
number
nullable
id
text
PK
required
user_id
text
FK → user_account.id
required
daily_record_id
text
FK → daily_record.id
required
entry_time
datetime
nullable
notes
text
nullable
created_at
datetime
required
updated_at
datetime
required
Connects to
daily_record.id
symptom_definition.id
user_account.id
mitigation_entry
Mitigation entry
Mitigation action or relief attempt
Collapse or expand this table.
mitigation_entry
Mitigation entry
id
text
PK
required
user_id
text
FK → user_account.id
required
daily_record_id
text
FK → daily_record.id
required
mitigation_type
text
required
title
text
required
entry_time
datetime
nullable
notes
text
nullable
effectiveness
number
nullable
created_at
datetime
required
updated_at
datetime
required
Connects to
daily_record.id
user_account.id
symptom_mitigation_link
SymptomMitigationLink
Links symptoms to mitigations
Collapse or expand this table.
symptom_mitigation_link
SymptomMitigationLink
id
text
PK
required
symptom_entry_id
text
FK → symptom_entry.id
required
mitigation_entry_id
text
FK → mitigation_entry.id
required
effectiveness
number
nullable
Connects to
mitigation_entry.id
symptom_entry.id
medication_entry
Medication entry
Medication taken on a day
Collapse or expand this table.
medication_entry
Medication entry
medication_name
text
required
dose
text
nullable
reason
text
nullable
id
text
PK
required
user_id
text
FK → user_account.id
required
daily_record_id
text
FK → daily_record.id
required
entry_time
datetime
nullable
notes
text
nullable
created_at
datetime
required
updated_at
datetime
required
Connects to
daily_record.id
user_account.id
mood_entry
Mood entry
Mood and intensity on a day
Collapse or expand this table.
mood_entry
Mood entry
mood
text
required
intensity
number
nullable
id
text
PK
required
user_id
text
FK → user_account.id
required
daily_record_id
text
FK → daily_record.id
required
entry_time
datetime
nullable
notes
text
nullable
created_at
datetime
required
updated_at
datetime
required
Connects to
daily_record.id
user_account.id
libido_entry
Libido entry
Libido or sex-life notes
Collapse or expand this table.
libido_entry
Libido entry
encounter_type
text
required
orgasm
text
required
libido_level
number
nullable
id
text
PK
required
user_id
text
FK → user_account.id
required
daily_record_id
text
FK → daily_record.id
required
entry_time
datetime
nullable
notes
text
nullable
created_at
datetime
required
updated_at
datetime
required
Connects to
daily_record.id
user_account.id
sleep_entry
Sleep entry
Sleep quality and schedule details
Collapse or expand this table.
sleep_entry
Sleep entry
sleep_quality
number
nullable
bedtime
text
nullable
wake_time
text
nullable
interruptions_count
number
nullable
trouble_falling_asleep
text
nullable
id
text
PK
required
user_id
text
FK → user_account.id
required
daily_record_id
text
FK → daily_record.id
required
entry_time
datetime
nullable
notes
text
nullable
created_at
datetime
required
updated_at
datetime
required
Connects to
daily_record.id
user_account.id
sports_activity_entry
SportsActivity entry
Activity and workout details
Collapse or expand this table.
sports_activity_entry
SportsActivity entry
activity_name
text
nullable
activity_type
text
required
intensity
number
nullable
duration_minutes
number
nullable
id
text
PK
required
user_id
text
FK → user_account.id
required
daily_record_id
text
FK → daily_record.id
required
entry_time
datetime
nullable
notes
text
nullable
created_at
datetime
required
updated_at
datetime
required
Connects to
daily_record.id
user_account.id
mitigation_activity_link
MitigationActivityLink
Links mitigations to activities
Collapse or expand this table.
mitigation_activity_link
MitigationActivityLink
id
text
PK
required
mitigation_entry_id
text
FK → mitigation_entry.id
required
sports_activity_entry_id
text
FK → sports_activity_entry.id
required
Connects to
mitigation_entry.id
sports_activity_entry.id
Prediction storage
Collapse or expand a group.
prediction_calculation_batch
PredictionCalculation batch
One snapshot calculation pass
Collapse or expand this table.
prediction_calculation_batch
PredictionCalculation batch
id
text
PK
required
user_id
text
FK → user_account.id
required
calculation_version
text
required
created_at
datetime
required
Connects to
user_account.id
daily_prediction_snapshot
DailyPrediction snapshot
Stored prediction result for a date
Collapse or expand this table.
daily_prediction_snapshot
DailyPrediction snapshot
id
text
PK
required
user_id
text
FK → user_account.id
required
target_date
date
required
daily_record_id
text
FK → daily_record.id
nullable
calculation_batch_id
text
FK → prediction_calculation_batch.id
required
predicted_cycle_day
number
nullable
predicted_cycle_phase
text
nullable
predicted_fertile
boolean
required
predicted_ovulation
boolean
required
predicted_bleeding
boolean
required
fallback_mode
boolean
required
prediction_model_version
text
required
snapshot_created_at
datetime
required
Connects to
daily_record.id
prediction_calculation_batch.id
user_account.id
Reference catalogs
Collapse or expand a group.
scale_definition
ScaleDefinition
System-controlled rating scales
Collapse or expand this table.
scale_definition
ScaleDefinition
id
text
PK
required
key
text
UNIQUE
required
label
text
required
description
text
nullable
min_value
number
required
max_value
number
required
step
number
required
system_defined
boolean
required
created_at
datetime
required
symptom_definition
SymptomDefinition
Catalog of tracked symptoms
Collapse or expand this table.
symptom_definition
SymptomDefinition
id
text
PK
required
key
text
UNIQUE
required
label
text
required
description
text
nullable
category
text
required
system_defined
boolean
required
created_at
datetime
required
tag_definition
TagDefinition
Reusable label definitions
Collapse or expand this table.
tag_definition
TagDefinition
id
text
PK
required
key
text
UNIQUE
required
label
text
required
kind
text
required
system_defined
boolean
required
created_at
datetime
required