Privacy
A plain description of what this app actually collects and does — not boilerplate.
What's collected
Identity. Sign-in is handled by Clerk — your email address and a Clerk-issued user ID. This app never sees or stores your password.
Access. FlowMo is invite-only while it's still small — signing up needs an access code or a shared list's invite link. This app stores which access code you used (if any), or that you got in via an invite link, or that your account existed before this started and was let in automatically. It doesn't affect anything covered elsewhere on this page.
What you create. Flows (names, blocks, swappable options, reminder times), to-dos (title, due date, category, notes, recurrence), grocery items, and which blocks you've completed each day — used to show momentum and Lifetime Sparks, never a missed-day count or streak.
Push notifications. If you enable them, this app stores your device's push subscription endpoint so it can send reminders.
Feedback. If you use the in-app Feedback button, the text you write and the page/element you were looking at get saved, tied to your account if you're signed in.
Waitlist. If you don't have an access code or invite link yet, the landing page has a waitlist that stores just the email address you give it — nothing else about you, and not tied to any account (you might not even have one). It's used only so this app's builder can reach out by hand with an access code later; nothing here sends automated email today, and this address isn't used for anything else.
Anonymous feature usage. A small number of events — a flow was created, a block was completed, a list was shared — get logged with no user ID and no free text attached, so which features get used can be seen in aggregate. Each event also carries a random session marker that's generated on your device, never tied to your account, and reset at least every 24 hours — it lets events from the same browsing session be told apart from a different one, without ever building a per-person activity log. The app itself can't read this data back; it's only ever pulled by hand for a rough count of what's actually getting used.
Sharing with a partner
Sharing only happens when you invite someone yourself, through one of two doors — this app never shares your lists or flows with anyone you haven't invited. A 6-character code you generate and hand to someone doesn't grant access by itself: entering it sends a join request, visible only to the owner, who approves or denies it before that person gets in. An invite link works differently — anyone who opens it gets access immediately, with no approval step, so only send a link to someone you already want in. Once someone has access, other members can see their display name and permission level (read-only or read-write). Daily completion history stays private to each person even on a shared flow.
Live presence on a shared flow, to-do list, or grocery list. While you both have the same shared flow, to-do list, or grocery list open at the same time, each of you can see that the other is there right now. On a flow or to-do list, whether you also see what they're currently on — the flow's current block, or the to-do item they have open — depends on a setting each person controls separately in Settings → Presence detail (Detail or Light) — it's reciprocal, the same way read receipts work: you only see that detail if you're both set to Detail, and either person choosing Light drops both sides to just the ambient "they're here too" signal. Grocery-list presence is always just that ambient signal — there's no item-level detail there yet. That preference itself is stored against your account so it's remembered between sessions; the live presence data itself is not saved anywhere, and disappears the moment either of you closes the page.
Where it lives
App data (flows, to-dos, groceries, sharing) is stored in a Supabase-hosted Postgres database. Sign-in is handled by Clerk. The app itself is hosted on Vercel. No other third party receives your data — there's no ad network, no third-party analytics service, and nothing is sold. The anonymous feature-usage events described above stay in this app's own database, not sent anywhere else.
Your controls
Export. Settings has a full JSON export (flows, to-dos, groceries, sharing) and a CSV export of your to-dos — generated on your device, no request needed.
Leave or delete. You can leave any shared list or flow, delete individual flows/to-dos/grocery items, and stop sharing a list you own at any time.
Delete your account. Settings has a "Delete account" section that permanently removes your account and everything tied to it — flows, to-dos, groceries, any list or flow you own, push subscriptions, feedback. Lists and flows you've only joined stay with their owner; anything you personally added to them is removed too. This can't be undone, and there's no way to recover it after — export your data first if you want a copy.
Changes
If what's collected or how it's used changes in a way that matters, this page gets updated to reflect it — this describes what the app actually does today, not a fixed promise about forever.