Skip to content

Rishiidev/Nari

Repository files navigation

Nari — Privacy-First Cycle Tracker

Your most intimate health data belongs on your device, not a company's servers.

Stars CI License Version

Works in any browser · Installable as a PWA · Fully offline

Nari Social Preview

Nari is a menstrual cycle tracker that stores everything in your browser's IndexedDB. No account. No cloud. No tracking. Your cycle data stays on your device forever — including a Decoy Mode that shows fake data if someone forces you to unlock the app.


The Problem

Every major period tracking app — Flo, Clue, Glow — collects your cycle data, syncs it to their servers, and either sells it to data brokers or exposes it in breaches. In 2023, the FTC took action against Premom for sharing health data with third parties. In 2022, Flo received an FTC settlement for similar practices.

You track your period to understand your body. That data tells a story about your fertility, your health, your life decisions. It should be yours alone.

The Fix

Nari runs entirely in your browser. When you log a period or symptom:

Your phone  →  IndexedDB (local storage)

That's the entire data flow. There is no second arrow. No API call. No sync endpoint. Nothing leaves your device.

Install

Platform How
Any browser Visit nari-self.vercel.app
iPhone / iPad Safari → Share → Add to Home Screen
Android Chrome → Menu → Add to Home Screen
Desktop Chrome Address bar → Install icon

If Nari gives you peace of mind, a star helps others find it.
⭐ Star on GitHub

Features

Feature What it does
Local-only storage IndexedDB — data never leaves your device
Decoy Mode Enter a second PIN to show convincing fake data to someone coercing you
App Lock PIN or biometric lock for the whole app
Smart predictions Cycle and fertile window predictions with confidence levels (high / medium / low)
Quick Log Log flow intensity, symptoms, moods, and notes in a few taps
Calendar view Color-coded calendar showing logged days and predicted windows
Export JSON, CSV, PDF daily summary, and a formatted Doctor Report PDF
Import Merge entries from a previous JSON export (no duplicates)
Custom moods & symptoms Add your own mood and symptom labels
Offline PWA Install as a native-feeling app — works with no internet connection
Full data wipe One-tap deletion of all data from Settings

Decoy Mode

This is Nari's most privacy-critical feature. If someone forces you to unlock the app:

  1. Set up two PINs in Settings — your real PIN and a decoy PIN
  2. Entering the decoy PIN shows a completely plausible fake cycle with generated data
  3. Your real data is untouched and invisible
  4. The decoy session looks and behaves exactly like the real app

Decoy Mode was designed for situations where physical coercion is a real concern — abusive relationships, border crossings, or any scenario where "show me your phone" is not actually a choice.

Privacy Guarantees

What Status
Network requests for your cycle data Never
Third-party analytics or ads None
Account required No
Data stored on any server No
Exported data sent anywhere automatically No

What Gets Stored Locally

Stored Example
Period start/end dates { date: "2024-03-15", type: "period_start" }
Flow intensity light / medium / heavy
Symptoms cramps, bloating, headache
Moods tired, anxious, happy
Notes Free text per day
App settings Cycle length, lock PIN (hashed)

What Never Gets Touched

Protected Why
Contact list Not accessed
Location Not accessed
Camera / microphone Not accessed
Other apps' data Not accessed
Any network endpoint for health data No endpoint exists

Architecture

Layer Technology
UI React 19 + TypeScript
Styling Tailwind CSS v4
Animations Motion (Framer Motion)
Storage IndexedDB via idb
Date logic date-fns
PDF export jsPDF + jsPDF-autotable
Build Vite 6
PWA vite-plugin-pwa

Run Locally

git clone https://github.com/Rishiidev/Nari.git
cd Nari
npm install
npm run dev
# Open http://localhost:3000
npm run build    # Production build
npm run lint     # Type check
npm run preview  # Preview production build

Contributing

See CONTRIBUTING.md. Bug fixes and privacy-preserving features are welcome. Features requiring a server or account are out of scope.

Star History

Star History Chart

License

MIT — see LICENSE


Found Nari useful? A ⭐ helps others find a privacy-safe alternative.
⭐ Star this repo