Ovulab is a menstrual-tracking project with daily observations, cycle history, and explanatory views. This case study focuses on data engineering in the application, rather than medical advice or clinical validation.
Implementation focus#
My implementation focus is how edited observations affect derived history. Next.js, React, TypeScript, Supabase, PostgreSQL, Zod, and Recharts support the project. The inspected cycle synchronization and prediction modules provide evidence of the calculation path.
Rebuild records from their source observations#
The synchronization helper sorts recorded flow observations and groups nearby entries. A group must include a qualifying flow value to become a derived cycle record.
The synchronization process upserts tracker-generated records by user, start date, and source. It also removes stale tracker records whose starts are no longer derived from the current logs. Manually entered records are outside that removal query.
Preserve provenance#
The source field distinguishes generated history from manual history. That distinction lets the application refresh derived data without silently treating a person's manual record as disposable cache.
Prediction output needs a similar distinction between observed values and estimated labels. The inspected temperature rule uses an entry window; this study does not present its output as clinical confirmation or a validated accuracy figure.
Result and limits#
The source demonstrates traceable derived records and a public application preview. It does not establish clinical efficacy, diagnostic suitability, or a comprehensive privacy audit. Edited logs, deleted observations, and manual records remain useful engineering cases to exercise.
The companion article explains reconciliation after log edits.