bleedngreet
Public help

How bleedngreet works

bleedngreet is a private cycle and wellbeing tracker built around one simple idea: each day gets one main record, and that daily record can then hold more detailed entries.

How to get started

  1. Create an account with the Register button.
  2. Log in to reach your dashboard.
  3. Open a day and fill in the daily summary for that date.
  4. Add detailed entries like symptoms, mood, sleep, activity, and mitigations as needed.
  5. 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.
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.
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.
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.
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.
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.
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_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.
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.
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_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 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.
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_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.
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.
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.
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.
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.
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.
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.
id text
PK required
key text
UNIQUE required
label text
required
kind text
required
system_defined boolean
required
created_at datetime
required