Skip to content

Repository files navigation

canihavesex.today — Am I fertile today? One calm answer.

A private, open-source period & fertility-awareness app.

License: AGPL v3 Self-host with Docker PWA PRs welcome

canihavesex.today  ·  Live demo  ·  Self-host

Not medical advice, and not a contraceptive. See the Disclaimer.

What it is

canihavesex.today is a self-hosted, open-source period tracker — a private, privacy-first alternative to mainstream cycle apps. No ads, no tracking, no data-harvesting.

From the signals you log (bleeding, basal body temperature, cervical fluid, LH tests), one open-source engine estimates today's fertility status alongside your cycle context — cycle day, fertile window, next-period estimate. When the signal is unclear, it assumes you're fertile; it never implies contraceptive safety. It's grounded in the symptothermal method.

  • Fertility-led and honest — today's status is the headline, never a false sense of safety.
  • Calm and minimal — no ads, no upsells, no gamification.
  • Yours — your data stays on your own instance. Self-host it in minutes.

Features

  • Daily logging — flow, BBT, cervical fluid, LH tests, plus mood, energy, sleep, libido, notes
  • Today's fertility status with a confidence signal, and cycle context (calendar, trends)
  • Email + password out of the box; Google / OIDC optional
  • CSV export of your own data
  • Mobile-first PWA, light and dark themes

Demo

Open the live demo

Drops you straight into a sample account, no signup needed.

Self-hosting

The easiest path is Docker. One app container + Postgres, configured by a single .env.

docker pull ghcr.io/neizsche/canihavesex:latest
curl -O https://raw.githubusercontent.com/neizsche/canihavesex.today/main/docker-compose.yml
printf 'COOKIE_SECRET=%s\nPOSTGRES_PASSWORD=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 16)" > .env
docker compose up -d

Next steps: Open http://localhost:3112. Email/password works out of the box. Database migrations run automatically. (Optional: Set Google/OIDC variables in .env to enable SSO).

Maintenance Commands
Action Command
Update docker compose pull && docker compose up -d
Backup docker compose exec db pg_dump -U canihavesex canihavesex > backup.sql
Restore cat backup.sql | docker compose exec -T db psql -U canihavesex canihavesex
Reset Password docker compose exec app node apps/backend/dist/scripts/resetPassword.js user@email.com new_password

Learn more

Disclaimer

This is fertility-awareness software. It is not medical advice and not a contraceptive, and it does not guarantee pregnancy prevention. When in doubt, assume you are fertile, and consult a healthcare professional for medical decisions.

Contributing & License

Contributions welcome — see CONTRIBUTING.md. Licensed under GNU AGPL-3.0: run a modified version as a network service and you must share your source under the same license. Running it privately for a single household does not trigger that requirement.