explaingit

chaodeng060-source/period-tracker

Analysis updated 2026-05-18

16TypeScriptAudience · generalComplexity · 2/5LicenseSetup · easy

TLDR

A minimal self hosted period tracker that stores all your cycle data in one local JSON file, with no account or cloud service.

Mindmap

mindmap
  root((Period Tracker))
    What it does
      Log period start dates
      Auto cycle predictions
      Phase colored calendar
    Tech stack
      Python
      TypeScript
    Use cases
      Self host private tracking
      See cycle phase predictions
      Build on top of simple JSON store
    Audience
      Privacy minded individuals
      Self hosters

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Self host a private period tracker that keeps all data on your own machine

USE CASE 2

Log period start dates and see automatically calculated cycle phase and predictions

USE CASE 3

Build your own health tracking tool on top of a simple JSON file and two APIs

What is it built with?

PythonTypeScript

How does it compare?

chaodeng060-source/period-trackerachrefelouafi/basicproceduralbuildingacoyfellow/tuiport
Stars161616
LanguageTypeScriptTypeScriptTypeScript
Setup difficultyeasymoderatemoderate
Complexity2/53/54/5
Audiencegeneraldeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 5min

No authentication is built in, add your own if exposing it beyond your own machine.

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

In plain English

Period tracker is a minimal, self hosted app for logging your menstrual cycle. Everything is stored in a single JSON file on your own machine, there is no account to create, no cloud service, no ads, and no data sent anywhere else, so your health data stays entirely under your control. The app has one main action: tap a button to record that your period has started. You can also click any day on the calendar to add or remove a start date if you forgot to log it in real time. From the dates you log, the app automatically works out your average cycle length, when your next period is expected, which day of the current cycle you are on, and which phase you are likely in, such as menstrual, follicular, ovulation, or luteal. The calendar is color coded by phase, but only up through today, since it does not try to predict future days beyond the current one. If you accidentally tap the start button twice for the same period, the app recognizes the duplicate and does not let it throw off the cycle math. To run it, you install a small set of Python dependencies and start a server with a single command, then open the page in your browser. The frontend is already built and included, so you do not need Node.js installed just to use the app. A few environment variables let you change where the data file lives, which port the server uses, and which network address it listens on, and the README notes that if you expose the app beyond your own machine you need to add your own authentication, such as a reverse proxy with basic auth. If you want to modify the frontend itself, there is a separate development setup using npm, and a small pytest based test suite is included. The cycle math is based on the average gap between recorded start dates and estimates ovulation around fourteen days before the next expected period. The README is clear that predictions are not medical advice. The project is released under the MIT license.

Copy-paste prompts

Prompt 1
Help me run this period tracker locally with Python and open it in my browser.
Prompt 2
Explain how the average cycle length and ovulation window are calculated in this app.
Prompt 3
Show me how to add basic auth in front of this server if I want to access it remotely.

Frequently asked questions

What is period-tracker?

A minimal self hosted period tracker that stores all your cycle data in one local JSON file, with no account or cloud service.

What language is period-tracker written in?

Mainly TypeScript. The stack also includes Python, TypeScript.

What license does period-tracker use?

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

How hard is period-tracker to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is period-tracker for?

Mainly general.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.