Reviewed 2026-05-11
What Dorift knows about you
This is the full inventory. If it isn't on this page, we don't collect it. Every claim is traceable to something in our codebase or server configuration — we review and re-sign this page before every major release.
Data we store
- Your email address — used as your login identifier, nothing else.
- Your tasks, categories, tags, and notes — the content of the app. Encrypted in transit (TLS) and at rest (Supabase-managed).
- Your subscription state — tier, Stripe customer/subscription id, renewal date. No payment card data; that stays with Stripe.
- Crash reports — if the app crashes, we record your account id, the error type, a shortened error message (quoted text and email addresses removed), the stack trace, app version, platform (Android or web), the Dart runtime version, a fingerprint, severity, and the time. Stored only in our own
crash_reportstable in Supabase (EU), deleted after 90 days. No Sentry, no Crashlytics. You can turn this off in Settings → Data.
Data we don't collect
- Analytics events. No Firebase Analytics, Mixpanel, Segment, Amplitude, PostHog, Google Analytics, or in-house event pipeline.
- Advertising identifiers. No IDFA, GAID, or fingerprinting.
- Location. The app never asks.
- Contacts and photos. The app never asks for either.
- Calendar entries (opt-in setting, off by default). On the Android build we currently ship, turning this setting on writes nothing at all: the app requests no calendar permission, so it cannot create a calendar or add an event to one. Checked on 5 August 2026 against a device holding 40 calendars, 39 of them belonging to signed-in Google accounts — precisely the fallback an earlier version of this page warned about. After enabling the setting, the number of calendars and the number of events on that device were both unchanged, and the app reported: “Dorift could not create a local calendar here, so nothing has been written.” The intended design is a local-only calendar that syncs to no account. That path has been observed refusing; it has never been observed working, so we do not claim that it does.
- IP-based profiling. Supabase logs request IPs briefly for security, but we never aggregate, sell, or analyse them.
Where your data lives
Every server that holds your data is in the European Union. The short diagram:
| Layer | Provider | Region |
|---|---|---|
| Primary database (tasks, categories, tags) | Supabase (self-hosted Postgres 17) | AWS eu-central-1 · Frankfurt |
| Sync infrastructure | PowerSync | EU region — not independently verified |
| Marketing site + templates | Cloudflare Workers (static assets) | Global edge; origin is the above Supabase region |
| APK distribution | Cloudflare R2 | EU bucket |
We do not use any US-based database, analytics warehouse, or CDN edge as a primary store. The Cloudflare Worker edges are CDN caches of our EU origins — no data is persisted there.
Third-party services (and the data they see)
| Service | What they see | Why |
|---|---|---|
| Supabase (EU) | All your task data, email, tier, crash reports. | They host the database. |
| PowerSync | Sync messages (row-level change events). No authentication credentials beyond the signed JWT. | Offline-first sync engine. |
| Stripe | Your name, email, and payment method when you subscribe. | Payment processing. Stripe never shares card data with us. |
Your rights (GDPR)
You can exercise all of these directly inside the app or by emailing our privacy contact:
- Access (Art. 15). Settings → Export data. You get a JSON with everything we hold.
- Rectification (Art. 16). Edit any task, category, tag, or account field in the app.
- Erasure (Art. 17). Settings → Delete account. Hard-deletes all your rows within 30 days.
- Portability (Art. 20). The exported JSON is a machine-readable copy you can take to another app.