Privacy Policy
Ta treść nie jest jeszcze dostępna w Twoim języku.
App: Kombine (Android, Wear OS, iOS, watchOS, web app at app.kombine.dev)
Controller: Adam Świderski, Poland (“we”, “us”)
Contact: hello@kombine.dev
Last updated: November 9, 2026
Summary
Section titled “Summary”- An account is optional. Without one, your data stays on your device.
- With an account, your data is stored on our servers so it can sync between your devices. We use it only to run Kombine.
- We don’t sell your data, show ads, or use advertising IDs.
- Deleting your account permanently removes your data from our servers.
1. Data we process
Section titled “1. Data we process”Without an account (Android, iOS)
Section titled “Without an account (Android, iOS)”Tasks, work sessions, goals, log entries, notes and settings are stored only in the app’s local database on your device. We cannot see them. Device backups are disabled on Android, so uninstalling the app deletes them.
With an account
Section titled “With an account”Account data. Email address, display name, and a password hash (bcrypt) if you set a password. Verification, password-reset and sign-in-link codes are stored only as hashes and expire after 24 hours, 1 hour and 15 minutes respectively.
Your content. Everything you create so it can sync:
- tasks (title, description, status, priority, energy, due dates, reminders, recurrence, tags, and an external ID if you imported the task from another tool)
- work sessions (start and end time, duration, mode, focus level, optional note)
- activities, goals, goal entries, period notes, log entries and task completions
- timer state and settings (timer durations, theme, language, time zone, reminder times)
Statistics and recommendations. From your sessions we compute statistics (daily and all-time) and a usage profile (for example, which hours and weekdays you usually focus and how you take breaks). It powers in-app suggestions only. It is not used for advertising and is not shared.
Devices and tokens. For each signed-in device: a device ID, the device type, when it last synced, and a push token (Firebase Cloud Messaging) or web-push subscription if you allow notifications. Refresh tokens (30 days) and personal access tokens (name, description, permissions, last 4 characters, last used time, up to 365 days) are stored as hashes.
Demo account (web app). Try demo on the sign-in screen creates a temporary account filled with sample data. You don’t give us an email address, name or password. It and everything created in it are permanently deleted one hour after it starts. Nothing from a demo is carried over if you then sign up.
Feedback. If you send in-app feedback, we store the rating, the text, and the email and name you choose to include.
Abuse prevention. To rate-limit sign-up and sign-in, we keep the email address and a timestamp of each attempt.
Technical data (all users)
Section titled “Technical data (all users)”- Crash reports and diagnostics (Sentry, EU region): device model, OS and app version, stack traces, recent in-app actions (for example “timer started”), and an install ID.
- Logs and traces (self-hosted): server logs record request details including your IP address and user ID, and email addresses on sign-in or sign-up errors. The apps send performance traces with device model, OS version, device ID and user ID.
- Push delivery diagnostics (Firebase Cloud Messaging): Google collects anonymous data about notification delivery. It is not linked to your account.
- Website analytics (Umami Cloud, kombine.dev only, not the apps): pages visited, referrer, campaign parameters in the link, browser, OS, device type, country and clicks on the store links. No cookies, and your IP address is not stored. It is not linked to your account.
2. Why we process it (legal basis)
Section titled “2. Why we process it (legal basis)”| Purpose | Legal basis (GDPR) |
|---|---|
| Running your account, syncing, sending notifications and account emails | Performance of a contract (Art. 6(1)(b)) |
| Statistics and suggestions shown in the app | Performance of a contract |
| Crash reports, logs, website analytics, security and rate limiting | Legitimate interest in a working, secure service (Art. 6(1)(f)) |
| Answering feedback | Legitimate interest / your request |
We do not use your data for advertising, sell it, or make decisions about you that have legal effects.
3. Who processes it for us
Section titled “3. Who processes it for us”| Service | What for | Location |
|---|---|---|
| Fly.io | Hosting the API and web app | Amsterdam, NL |
| Neon (AWS) | Database | Frankfurt, DE |
| Resend (SMTP provider as fallback) | Sending account emails | EU |
| Google Firebase Cloud Messaging (and Apple Push Notification service for iOS) | Push notifications | USA |
| Web-push services of your browser (Google, Mozilla, Apple, Microsoft) | Web notifications | Depends on browser |
| Sentry | Crash reports | EU (Germany) |
| Umami Cloud | Website analytics (kombine.dev) | EU |
| Our own server (mikr.us) | Logs and traces | Poland |
Transfers outside the EEA rely on the EU-US Data Privacy Framework or Standard Contractual Clauses.
Watch sync. Wear OS talks to your phone through Google’s Wearable Data Layer and does not contact our servers. Apple Watch uses WatchConnectivity with your iPhone and, when signed in, can also sync timer state and sessions directly with our API.
4. Cookies and local storage (web app)
Section titled “4. Cookies and local storage (web app)”We use only first-party cookies that the web app needs: __Host-kombine_session and __Host-kombine_refresh (sign-in, 30 days), __Host-kombine_device (device ID, 1 year), __Host-csrf_token (CSRF protection), __Host-kombine_demo (demo accounts only, until the demo ends), kombine_flash (one-off messages, 60 seconds), and kombine_task_group (remembered task grouping, 1 year). The __Host- cookies are sent only to app.kombine.dev, never to other kombine.dev addresses. Local storage holds timer state that has not synced yet, along with layout preferences. No tracking or advertising cookies. The kombine.dev website sets no cookies.
5. How long we keep it
Section titled “5. How long we keep it”- Account data and content: until you delete it or your account.
- Demo accounts: one hour after they start, with everything in them.
- Deleted items (tasks, sessions and so on) are kept as markers so the deletion syncs to your other devices. They are removed when you delete your account.
- Expired sign-in tokens: removed daily. Revoked refresh tokens: after 7 days.
- Devices: marked inactive after 30 days without sync, and deleted with your account.
- Sign-in-link requests: 1 hour. Sign-up attempts: 30 days.
- Logs: 30 days.
- Crash reports: Sentry’s retention (90 days max).
- Website analytics: Umami Cloud’s retention for our plan.
6. Deleting your data
Section titled “6. Deleting your data”- On one device: use Clear Local Data in Settings › Account, or uninstall the app.
- Everything: delete your account in the app or web app (Settings › Account). This immediately and permanently deletes your account and all synced data from our database. Copies in logs and crash reports expire as described above.
7. Your rights
Section titled “7. Your rights”Under the GDPR you can ask for access, correction, deletion, restriction, a copy of your data in a portable format, or object to processing based on legitimate interest. Email hello@kombine.dev and we will respond within one month. You can also complain to your data-protection authority (in Poland: UODO).
8. Security
Section titled “8. Security”All traffic between the apps and our API uses HTTPS. Passwords and tokens are stored only as hashes. On iOS and watchOS, tokens are kept in the Keychain. No system is perfectly secure; if a breach affects you, we will tell you as the law requires.
9. Children
Section titled “9. Children”Kombine is not directed at children under 16. We do not knowingly collect their data. If you believe a child has created an account, contact us and we will delete it.
10. Changes
Section titled “10. Changes”When we change this policy we update the date above. We will notify account holders by email of significant changes.
Contact
Section titled “Contact”Adam Świderski · hello@kombine.dev