← Back to Grocery List

Privacy & Accessibility

Grocery List is a shared household grocery list that updates live for everyone holding the link. It is free, carries no ads, and is made by Sky Wolf Studios.

Where your data goes

The list's title and description, every item anyone adds, the author name typed with it, whether it has been ticked into the cart, and any slots and claims is kept in Google Firestore, under the Firebase project `sws-apps-9646d`, and mirrored into this browser's IndexedDB offline cache so the list still opens in a supermarket dead zone. The only localStorage key this app writes is `gl-signin-email`, and only if you sign in by email link.

Some of it does leave this device, and we would rather say so plainly than bury it. Everything on a list is stored on Google's Firestore servers, because that is the only way the whole household sees the same list. This app therefore does not carry the 'nothing leaves your device' promise the rest of the portfolio makes. Concretely: the list title and description, every item body (capped at 2000 characters) and the author name (capped at 60) are written to Firestore and readable and editable by anyone holding the 6-character share link. The list owner is signed in — anonymously by default, or with Google or an email link if they choose — and Firebase Authentication issues a user id stored alongside each item.

That is the trade this app makes: sharing with other people needs a copy somewhere both of you can reach. Everything else about the promise still holds — no advertising, no analytics, no profile built about you, and nothing sold to anyone.

How to check that for yourself

Open DevTools → Network and load the page: you will see the Firebase SDK fetched from gstatic.com and nothing else. Open a list and you will see requests to firestore.googleapis.com — that is the shared list itself, and it is the only thing sent. There is no analytics call: apps/grocery-list/firebase-config.js has no measurementId, so Google Analytics is never initialised.

What we do not do

Permissions

The app asks for write-only clipboard access when you tap Copy link — most browsers show no prompt, and the app cannot read your clipboard, and only at the moment you use the feature that needs it. Your browser asks you, not us, and you can refuse — the rest of the app keeps working.

Who else is involved

Tips

The tip jar links out to a checkout page hosted by the payment provider on their own site. We never see or store card details. Tipping changes nothing in the app — every feature is free either way.

Hosting

The app's files are served by Google's Firebase Hosting, which — like any web host — keeps standard, short-lived server logs such as IP addresses, for security and operations. That log records that a browser fetched a page. It is separate from the shared data described above.

Children

This app is made for adults. It is not directed at children, and it collects no personal information from anyone, of any age.

Accessibility

We aim for WCAG 2.1 AA: labelled fields, keyboard-operable controls that keep their focus when the page redraws, visible focus rings, 44px touch targets that grow with the text-size setting, screen-reader announcements for changes, and colour contrast checked by build-time solver in both light and dark mode. The display panel in the header sets text size, spacing, contrast, reading style and motion, and those settings follow you across all of our apps.

If anything gets in your way, email us and we will fix it: stephenfurpahs@gmail.com.

Changes

If this policy ever changes in a way that affects what happens to your data, the change will appear here and the date below will move.