Privacy policy

What we don't collect.

WillItExpire runs without analytics, without advertising trackers, and without cookies unless you choose to sign in for cross-device pantry sync. Here is exactly what gets stored where.

The short version Browsing the site collects nothing. Using the pantry tracker without signing in stores items in your browser's localStorage (on your device only). Signing in stores those same items in a Supabase database tied to your email address, accessible only to you. There is no advertising, no analytics, no third-party tracking pixel.

What we collect when you browse

Browsing · Anonymous

Nothing identifying.

Item pages, the date-labels guide, the power-outage scenario page, this page, and every other static page on the site are served directly from the host (Hostinger) without analytics tracking. There is no Google Analytics, no Facebook pixel, no Plausible, no PostHog, no Hotjar — nothing on the page that phones home.

Your IP address may appear in the standard web-server access logs of the hosting provider, as it does on any website. We don't access those logs for any purpose other than diagnosing outages.

What we collect when you use the pantry tracker without signing in

Pantry tracker · Local-only mode

Items stored in your browser, never sent anywhere.

The default tracker mode keeps your saved items in your browser's localStorage. That data lives on your device only. We never see it; the hosting provider never sees it; no third party sees it.

Clearing your browser's site data, switching browsers, or switching devices will lose your tracked items unless you sign in.

What we collect when you sign in to sync

Pantry tracker · Signed-in mode

Email plus your saved items, stored in Supabase.

When you sign in via the tracker, we store your email address (used as your account identifier) and your saved pantry items in a Supabase database. Supabase is a third-party platform that provides authentication and a Postgres database. Our project is hosted in the us-west-1 region.

Inside Supabase, your data is protected by row-level security: only requests authenticated as you can read or write your rows. Nobody else on the platform, including the maintainer, queries your individual tracker contents.

What gets stored, exactly

For each saved pantry item:

For your account:

What we never collect

Third parties involved

WillItExpire uses a small, deliberately short list of third-party services:

Data processor · Sign-in and tracker sync

Supabase

Stores your email address and your saved pantry items when you sign in. Hosted in us-west-1. Supabase has its own privacy policy.

Host · Static file serving

Hostinger

Serves the static HTML / CSS / JS files of this site. Hostinger may keep server access logs containing IP addresses for diagnostic purposes. Hostinger has its own privacy policy.

Content delivery · Fonts and library code

jsDelivr, Google Fonts

Library code (React, Supabase JS client) is loaded from jsDelivr with subresource-integrity hashes. Fonts (Instrument Serif, Figtree) are loaded from Google Fonts. Both providers may receive your IP address when your browser requests these resources, as they do on any site that uses them. Neither provider has any information about you specific to this site.

How to delete your data

To delete your account and everything we have stored:

To clear locally-stored items (no sign-in), clear site data in your browser, or use the tracker's "Reset" action.

Children

WillItExpire is intended for adults managing a household pantry. We don't knowingly collect any information from anyone under 13. If you believe a child has signed up using an email they control, contact us via GitHub and we will delete the account.

Changes to this policy

If we change this policy materially, we will update the "last reviewed" date below and note the change in the project's GitHub commit history (which is publicly auditable). If a change affects what data we collect or who we share it with, we will surface the change in the tracker UI for signed-in users.

Questions

File a GitHub issue with the "privacy" label.