Privacy Policy
Plain-language summary: Rhythm remains local-first for supported local planning. Optional cloud sync stores an account-scoped copy of supported Rhythm data in Firebase. If you use a shared Rhythm, its contents and meeting-proposal responses are available to approved members. Private/device calendars are not exposed merely by joining a shared Rhythm. Calendar-provider entries and attached file contents are not copied into Rhythm cloud storage. The backend also supports live routes and Google Play purchase verification. Rhythm has no advertising or third-party analytics SDKs and does not sell personal data.
1. Overview
Service provider and data controller: Mad Forge Design, obrt za usluge, vl. Luka Brajković, Zagreb, Poljačka ulica 67, 10000 Zagreb, Croatia. We use Mad Forge Design as our public brand.
This Privacy Policy explains how Mad Forge Design ("Mad Forge Design", "we", "us" or "our") handles information in Rhythm Adaptive Calendar ("Rhythm" or the "App"). It applies to Android version 1.1.8 and later versions unless a later policy states otherwise.
Rhythm is a calendar and time-planning app. Its design is local-first: calendar information and Rhythm-specific planning data are processed and retained on the device whenever possible. Google sign-in creates a Rhythm account for optional online routes, cloud features or verified Pro purchase restoration. Basic local planning remains available without an account.
2. Information and data the App may handle
2.1 Calendar information
If you grant calendar permission, Rhythm can read calendars made available through the Android Calendar Provider and can write or update calendar events when you ask it to. Depending on the events you use, this can include event titles, dates and times, all-day status, locations, descriptions or notes, recurrence information and the calendar/account to which an event belongs.
Rhythm uses this information to display your schedule, search events, calculate free time, detect conflicts, support Adaptive Day, show NOW/NEXT information and keep edits synchronized with the calendar provider you selected.
2.2 Rhythm-specific planning data
The App may store information you enter or generate for Rhythm features, including tasks, priorities, flexible/fixed status, preparation and recovery time, travel estimates, distance and travel mode, reminders, Event Pack checklists, note fields, document names and local content references, completion status, actual start/end times when recorded, contact names or notes you choose to associate with events, Life Admin categories and expiry dates, display preferences and feature usage counters.
These data are stored locally in the App's private storage. If you enable cloud sync, Rhythm events, tasks, Rhythm-created local calendar lists and non-billing preferences are also stored in your account-scoped Cloud Firestore space. Entries read from Android Calendar Provider are not duplicated into Rhythm cloud storage. Android document URIs and attached file contents remain device-specific and are not uploaded by cloud sync.
Sign-in does not enable calendar sync. Signing in for routes or purchase verification authenticates your Rhythm account. Uploading your private Rhythm calendar data requires separately enabling Cloud sync. Android calendar accounts are managed separately by Android and their providers.
2.3 Location
Online routes: Google sign-in is required. Free includes three successful online route calculations in total per Google account, not per month or installation. Reinstalling the app, signing out or deleting the Rhythm account does not renew the trial. Pro includes three online route calculations per day, reset at midnight UTC. All supported online travel modes share the same allowance. Car routes include traffic; walking, cycling and public transport do not use road-traffic estimates. Offline estimates from a distance you enter are unlimited in both plans and run on your device.
Rhythm may request approximate or precise location permission when you use live Travel Intelligence. Rhythm reads the device's current location only when you request a live travel estimate. The App sends the current coordinates and event destination securely to the Rhythm serverless routing proxy, which forwards the request to Google Routes API and returns duration and distance. The proxy does not intentionally store coordinates or destinations, and Rhythm does not persist your current device coordinates.
The live route result is used to calculate travel and Leave by information for the current App session. Rhythm does not intentionally persist Google Maps Routes content as permanent calendar data. A separate manual/offline travel buffer can be stored locally when you choose to use it.
Google processes live routing requests under the Google Maps Platform Terms and Google Privacy Policy.
The routing proxy caches duration and distance under a hashed request key in memory and Cloud Firestore, with a validity period of ten minutes. Cache records do not contain raw coordinates or destinations. Expired records are not used; physical removal follows configured Firestore TTL cleanup and can occur later than the validity period.
2.4 Notifications and alarms
If you allow notifications, Rhythm can create local notifications for events and leave-by reminders. The App may also request permission to schedule exact alarms where Android requires it so that time-sensitive reminders can be delivered more accurately. These permissions are used for reminder functionality, not for advertising or tracking.
2.5 Purchases and subscriptions
Paid plans and one-time purchases are processed through Google Play Billing. The App sends a Google Play purchase token, package name and product identifier to the Rhythm serverless service, which verifies them with Google Play Developer API. Google Play lifecycle notifications may also be processed to validate renewals, cancellations, expiry, refunds and revocations. Mad Forge Design does not receive or store your full payment card details through the App.
2.6 Optional account and cloud synchronization
If you enable cloud sync, Firebase Authentication receives the Google account identifier, email address and basic account information needed to authenticate you. Cloud Firestore stores your private synchronized Rhythm data under your Firebase user ID; shared Rhythm data uses separate membership-protected records. The App uses account information to authenticate, synchronize, manage selected sharing and process deletion requests. Access controls protect owner-scoped and shared records, and Firebase App Check helps identify genuine App requests.
2.7 Shared Rhythms and meeting proposals
If you create or join a shared Rhythm, Firebase and the Rhythm backend process membership, invitations and approval status, together with the events and tasks saved in that shared calendar. Approved members can access its shared contents according to existing permissions. Creating or joining currently requires Pro. Joining does not grant access to members' separate private or device calendars.
“Agree on a time” stores the organizer, proposed times, response deadline, proposal state and members' acceptability responses. Approved members can see these responses, including whether a member has responded; the feature does not read other members' private schedules. Finalized, cancelled or expired proposals and their responses have a 30-day retention period after termination. Cleanup of proposal data does not delete the final calendar event. Attached document file contents are not automatically uploaded or shared.
Activity measurements are explicitly started and finished by the user. The duration-estimate calculation runs on the device; it does not infer activity duration from continuous monitoring. If you enable cloud sync, your personal recorded activity measurements and duration-estimate profile are synchronized under your account; these personal records are not made available to shared-calendar members.
When you select a device contact, Rhythm may read the contact details you choose, such as a name, phone number or email address. Selected details and contact notes saved on a Rhythm event can be synchronized with that event and become visible to approved members if you deliberately save the event in a shared Rhythm. Rhythm does not upload your whole address book.
2.8 Technical and analytics data
One-time route trial and anti-abuse records: the service keeps a one-way hash derived from your server-verified Google account identifier and the number of successful Free trial calculations. This ledger does not contain your email address, raw Google account identifier, calendar events, route coordinates or destination. It has no automatic expiry and remains after Rhythm account deletion so the same Google account cannot restart the three-calculation trial. This is pseudonymous data, not anonymous data. It is used for quota enforcement and prevention of repeated trial use, not advertising. You may contact privacy@rhythmcalendar.com about access, objection or erasure; retained records and the need for continued retention are reviewed in response to such requests and applicable law.
Rhythm does not include advertising SDKs or third-party analytics SDKs, and the serverless functions do not collect product analytics. We do not use the App to build advertising profiles or sell usage data. For security, quota enforcement and fraud prevention, the service processes a Firebase authentication identifier, Firebase App Check attestation, a one-way hash of Android App Set ID and limited network/operational metadata. Google Cloud and Firebase may process limited operational, authentication, security and error information required to operate and protect their services.
3. Android permissions
Depending on the features you use, Rhythm may request the following Android permissions:
- Read calendar: to display and work with calendars available through Android.
- Write calendar: to create, update or delete calendar events when you request those actions.
- Read contacts: to let you choose contact information to associate with an event. This is optional.
- Notifications: to show event and leave-by reminders.
- Exact alarms: to support time-sensitive reminders where permitted by Android.
- Device location: when you request a live travel estimate. Current coordinates and the event destination are transmitted to Google Routes API for routing. Rhythm does not persist the current device coordinates.
You can deny or revoke permissions through Android settings. Some features may then become unavailable, but the rest of the App should continue to work where technically possible.
Shared-calendar notifications use Firebase Cloud Messaging. Rhythm stores a messaging registration token and device registration under your account to deliver notifications. A shared activity inbox holds membership and meeting activity. Inbox entries have expiry timestamps normally 30 days after creation, or 30 days after an actionable deadline if later; physical removal depends on the configured server cleanup. Messaging registrations older than 90 days are ignored for delivery; this is not an automatic deletion guarantee. Account deletion removes your inbox and registrations.
4. When information may leave your device
Information can leave your device in these limited situations:
- Your calendar provider: if an event belongs to a synchronized account such as Google Calendar or another provider, edits made through Android Calendar Provider can be synchronized by that provider under its own privacy terms.
- Rhythm routing proxy and Google Routes: when you request a live travel estimate, current coordinates and the event destination are transmitted through our serverless proxy to Google Maps Platform. The proxy returns only route duration and distance and is not designed to retain the request.
- Rhythm billing verification and Google Play: purchase tokens and product identifiers are transmitted to our serverless service and Google Play Developer API to verify entitlements and process subscription lifecycle events.
- Optional Rhythm cloud sync: after Google sign-in, Rhythm events, tasks, local calendar lists and non-billing preferences are transmitted to Firebase Authentication and Cloud Firestore to synchronize your devices. The data is stored in the
europe-west1Firestore region. Google may process data from other locations as described in its applicable terms and privacy documentation. - Android backup and device transfer: if backup or device-transfer features are enabled on your device/account, Android may include Rhythm's local database and settings in a device backup or transfer. Mad Forge Design does not operate that backup service.
- Content you intentionally share: information leaves the App if you choose to export, copy or share it using Android or another application.
Shared-calendar content, membership information and meeting responses also leave the device when you choose these online features and are available to approved members of that shared Rhythm. Mad Forge Design does not sell personal data or share it with advertisers.
5. Storage and security
Rhythm-specific data are stored in the App's private Android storage, including a local Room database and app preference storage. Android's application sandbox and the security controls of your device help protect this data from other apps.
The local Rhythm database is not separately encrypted by a Rhythm-specific encryption layer. You should protect your device with an appropriate screen lock and keep Android security updates current.
When cloud sync is enabled, data is transmitted over encrypted HTTPS connections and stored by Google Cloud/Firebase. Access checks restrict private records to their owner and shared records to approved members with the applicable permissions. No online system can be guaranteed completely secure, so an independent manual backup remains important.
6. Retention and deletion
Routing requests are processed transiently. Operational cloud logs may retain limited request metadata and errors for security and reliability according to the configured Google Cloud retention period; application logs are designed not to contain coordinates, destinations or purchase tokens.
- Rhythm-specific local data remain on your device until you edit/delete them, clear the App's data or uninstall the App, subject to Android backup/restore behavior.
- Calendar events written to a connected calendar remain with that calendar provider until they are deleted there, and may be synchronized across your devices by that provider.
- Android backup copies may be retained according to your device, Google account or backup-provider settings.
- Google Play retains billing and transaction records according to Google's own legal and retention obligations.
- If cloud sync is enabled, use Delete cloud copy and disconnect to remove the private synchronized copy and disconnect while keeping the account identity, shared membership and local device data. The separate Delete Rhythm account action removes the Firebase identity and initiates retrying server cleanup of your personal cloud subtree, membership details, join requests, personal meeting replies, inbox and messaging registrations. It may require recent Google reauthentication.
- Deleting an account preserves other members' shared events and tasks and does not transfer ownership. Populated shared calendars and their event/task content may retain opaque creator/owner identifiers needed to preserve permissions and history; they no longer identify an active Rhythm account. Your organizer identifier on meeting proposals is replaced by a deleted-account marker and open proposals you organized are cancelled. Other members' copies of shared notices may remain under their applicable expiry period. Empty ownerless calendars are removed only after safety checks; ambiguous records require review.
- Limited billing ownership records contain a purchase-token hash, an opaque account identifier and product/entitlement information, not the raw purchase token or payment card. Ordinary subscription ownership records have expiry timestamps 730 days after the later of verification or entitlement expiry; removal depends on configured cleanup. Refunded or revoked purchase bindings may be retained without automatic expiry to prevent a refunded purchase from being claimed again; contact privacy support for review. A lifetime purchase binding has no scheduled expiry because it prevents the same non-expiring purchase from being claimed by another account. Limited security records follow configured quota/log retention. Google Play subscription cancellation is a separate action; account deletion does not cancel a subscription. See Delete cloud account and data for the request route and retained categories.
7. Your choices
You control whether to grant Android permissions, which calendars are visible, what information you enter into Rhythm, whether to enable cloud sync and whether to purchase paid features. You can use Rhythm without cloud sync, export an independent local backup, delete the cloud copy from Settings, change Android permissions from device settings and manage Google Play subscriptions through Google Play.
8. Children
Rhythm is a general productivity application and is not directed specifically to children under 13. We do not knowingly collect children's personal information. A child should not enable an account or cloud sync without authorization where parental consent is legally required.
9. International use
Rhythm can be used in different countries. If you enable cloud sync or another online feature, information may be processed by Google and its service providers outside your country. The primary Firestore database is configured in europe-west1; this region choice does not restrict where the App can be used. Other transfers may arise from your calendar provider, Google Play, Google Routes or Android backup.
10. Changes to this Privacy Policy
We may update this Privacy Policy when Rhythm's features, data practices, third-party integrations or legal requirements change. The current version will be published on this page with an updated effective or revision date. Material changes that require new permission or consent will also be presented in the App where required.
11. Contact
Rhythm Adaptive Calendar is created by Mad Forge Design, Luka Brajković, Poljačka ulica 67, 10000 Zagreb, Croatia.
For privacy questions or requests, contact: privacy@rhythmcalendar.com
For general support: support@rhythmcalendar.com
If these addresses change, the current contact details will be published on the Support page.