Privacy Policy
How VuCalendar
Handles Your Data
This Privacy Policy explains what information VuCalendar collects, where it is stored, why it is used, and what rights you have. VuCalendar is a local-first application — all task and planning data stays on your device. However, user accounts, purchases, and certain optional features involve data that is transmitted to external services — and the website uses consent-based analytics. This policy covers all of it accurately.
At a Glance
Who We Are
The VuCalendar application and website are developed and maintained by VuCalendar ("VuCalendar," "we," "us," "our"). For the purposes of applicable data protection law, we are the data controller in respect of any personal data processed in connection with your use of the App and website.
Contact details for privacy-related matters are in Section 18.
Scope of This Policy
This Privacy Policy applies to the VuCalendar mobile application available on Android (Google Play) and iOS (Apple App Store), and to the VuCalendar website (vucalendar.company), including all features: task planning, task tracking, user accounts, in-app and web purchases, weather-adaptive backgrounds, push notifications, the import tray, calendar export, personal library, and all associated settings.
It does not apply to third-party websites, services, or applications that may be linked from or interact with the App. We encourage you to review the privacy policies of any third parties you engage with.
All Data We Collect
The following table is a complete inventory of all data involved in the operation of VuCalendar. The "Where Stored" column uses colour-coded badges: On Device means it never leaves your device; Our Server means it is stored in Supabase under our control; Third Party means it is transmitted to an external service we do not control; Optional means the data is only collected if you use a specific optional feature.
| Data Type | What It Includes | Where Stored | Collected by Us? |
|---|---|---|---|
| Task & Planning Data | Tasks, groups, super-groups, regiments, bulk sets, tracking modes, schedules, completion states, colors, notes, dates, artifacts | On Device | No — never transmitted |
| App Settings | Theme, background mode, notification prefs, calendar settings, onboarding state | On Device | No — never transmitted |
| Email Address | Your account email (if you create an account) | Our Server (Supabase) | Yes — required for account |
| Password (Hashed) | One-way cryptographic hash — never stored in plain text | Our Server (Supabase) | Yes — required for password auth |
| First Name | Entered at sign-up; used for in-app personalization | Our Server (Supabase) + On Device cache | Yes — stored in account profile |
| Google OAuth Profile | Email and display name via "Continue with Google" | Our Server (Supabase) | Yes — if Google Sign-In used |
| Session Tokens | Auth access token (1-hr JWT) and refresh token | On Device + Our Server | Yes — required for auth |
| Account ID (UUID) | Randomly generated unique identifier | Our Server + Third Party (RevenueCat) | Yes — shared with RevenueCat |
| Purchase Receipts | In-app and web purchase receipts and entitlement state | Third Party (RevenueCat) | Managed by RevenueCat |
| Payment & Billing Data | Name, email, payment card details, billing address, and IP address — for web purchases | Third Party (Stripe, via RevenueCat) Optional | Not stored by us — card data handled by Stripe |
| Purchase Ledger (Web) | Account ID, product purchased, date, and amount — for web purchases | Our Server (Supabase) Optional | Yes — recorded for web purchases |
| Email Permission Record | Email, source, platform, subscription prefs & unsubscribe status | Our Server Optional | Yes — only if you opt in |
| Device Location (GPS) | Coordinates for weather lookup (foreground only) | Third Party (OpenWeather) Optional | Not stored by us |
| City Name (Manual) | City name for weather; label cached locally | On Device + Third Party Optional | Not stored by us |
| Weather Cache | Conditions returned by OpenWeather; refreshed per session | On Device Optional | No |
| Personal Library Photos | Photos selected for app backgrounds | On Device Optional | No — copied locally only |
| Imported Files / URLs | Files, links, YouTube videos, PDFs via share sheet | On Device Optional | No — staged locally |
| Exported Files | ICS or CSV files generated from task data | On Device Optional | No — generated locally |
| Biometric Data | Face ID or fingerprint for destructive action confirmation | Device OS only Optional | No — device OS handles entirely |
| App Crash / Analytics | — | Not collected | No — no analytics or crash SDK in the app |
| Website Analytics | Aggregate usage: pages viewed, referring source, approximate region (from IP, not stored), device & browser type | Third Party (Google Analytics) Optional | Website only — only with your consent |
Local Data — Task & App Data
All task and planning data you create in VuCalendar — tasks, groups, super-groups, regiments, bulk sets, tracking mode selections, schedules, completion states, colors, notes, task dates, inbox notices, and artifacts — is stored in a local SQLite database on your device via expo-sqlite. This database is private to the App and is not accessible to other applications under normal OS conditions.
App preferences and settings (theme, background mode, notification configuration, onboarding state, entitlement flags, calendar settings) are stored locally via AsyncStorage. This data is also private to the App.
Neither the SQLite database nor AsyncStorage settings are transmitted to our servers at any time. We have no access to your task data.
Account Data — Supabase
VuCalendar uses Supabase, a third-party authentication platform, to manage user accounts. Supabase is the only server-side data store under our direct control. Creating an account is optional for core task planning, but required for purchases and future cross-device features.
5.1 — What Supabase Stores
When you create an account, the following data is stored in Supabase:
- Email address — your login identifier; used for authentication and password reset emails
- Hashed password — stored as a one-way cryptographic hash; your plain-text password is never stored
- First name — stored in
user_metadata; used solely to personalize your in-app experience - Account UUID — a randomly generated unique identifier assigned to your account
- Sign-in timestamps and session data — standard authentication metadata maintained by Supabase's GoTrue auth system
- Google OAuth data — if you use "Continue with Google," Supabase stores your Google email and display name
5.2 — What Else Supabase Stores (and What It Does Not)
Beyond authentication, Supabase stores a minimal purchase-ledger record for purchases made on the VuCalendar website: your account ID, which product was purchased, when, and the amount. These ledger records contain no task data and no payment card data — card details are handled by Stripe and are never stored in Supabase.
Supabase does not hold any of your task data, groups, schedules, settings, or any other planning content. That claim stands without exception: your task and planning data never leaves your device.
5.3 — Session Persistence
Your authentication session (access token and refresh token) is persisted locally on your device via AsyncStorage. The access token is a short-lived JWT (1 hour) silently refreshed before expiry. A user who opens the App regularly stays signed in indefinitely. Signing out destroys both tokens from the device and from Supabase's session store.
5.4 — Google Sign-In
If you choose "Continue with Google," VuCalendar initiates an OAuth flow through Supabase and Google. During this flow, Google provides your email address and display name for authentication. We do not receive your Google password, contacts, Drive contents, or any other Google account data. Your use of Google Sign-In is also governed by Google's Privacy Policy.
Purchase Data — RevenueCat
VuCalendar uses RevenueCat to manage purchase entitlements across every surface. RevenueCat wraps Apple StoreKit (iOS), Google Play Billing (Android), and — for purchases made on the VuCalendar website — Stripe, tracking subscription and purchase state for all of them. RevenueCat also hosts the web checkout.
6.1 — What RevenueCat Receives
- Your VuCalendar account UUID — shared when you sign in, so purchases link to your account. This is a random identifier, not your email.
- Purchase receipts — validated through RevenueCat when you make a purchase.
- Subscription and entitlement state — tracks which features are active. For ProVu subscribers, this includes the LocalVu features granted as part of the subscription, which revert when the subscription ends.
- Device platform — iOS, Android, or web, for surface-specific entitlement management.
- Paywall presentation — RevenueCat also serves the visual paywall content displayed within the App when a purchase is offered. The paywall layout and copy are managed via RevenueCat's hosted infrastructure; no additional user data is transmitted for this purpose beyond what is already noted above.
6.2 — How Entitlements Are Keyed
In-app purchases (LocalVu, ProVu) are keyed by RevenueCat to your underlying Apple ID or Google Play account. Their receipt lives with the app store, independently of your VuCalendar account, so deleting your VuCalendar account does not delete them — active subscriptions continue to bill, and reinstalling and using "Restore Purchases" re-attaches them.
Web purchases (Set & Forget, Founder Member, Theme Store) are keyed by RevenueCat to your VuCalendar account ID — not to an Apple ID or Google Play account. There is no app-store receipt for them. Deleting your VuCalendar account therefore makes these web-purchased entitlements unreachable; recovery is not automatic and requires contacting support with proof of purchase. This mirrors Terms of Use, Section 8.2.
If you have a ProVu subscription, the LocalVu features granted as part of that subscription are tracked by RevenueCat for the duration of your subscription only; they revert when the subscription ends. LocalVu features you purchased directly as one-time unlocks are tracked as permanent entitlements and are not affected by ProVu's status.
Review RevenueCat's privacy policy at revenuecat.com/privacy.
Email Permission & Updates
At several points — the SkyVu waitlist, the Founder Member checkout on the website, and other opt-in prompts — you may choose to give us permission to email you. This is a general email-permission record, not a single waitlist.
7.1 — What Is Collected
If you opt in, the following is stored in a Supabase table (vucalendar_signup):
- Your email address (normalized to lowercase)
- The
source— where you gave permission (for example, the SkyVu waitlist or the founder checkout) - Your platform (web, iOS, or Android)
- The timestamp of submission
- Your subscription preferences and unsubscribe status
7.2 — How It Is Used
This data is used solely to send you the updates you asked for. It will not be used for unrelated marketing, sold to third parties, or shared with advertisers.
7.3 — Unsubscribing
Giving permission is voluntary, and you can withdraw it at any time. Every marketing email includes an unsubscribe link that removes you directly; your unsubscribe status is recorded against your entry so we honor it going forward. You may also contact us at vuclndr@gmail.com. These entries are stored separately from your account and are not automatically deleted when you delete your account — unsubscribe or request removal separately.
Location Data
Location data is entirely optional and only accessed when you enable Weather Adaptive Backgrounds with a location-based source. Weather data retrieved from OpenWeather informs an animated visual scene rendered locally on your device. These visuals are artistic interpretations of weather conditions — not literal, photographic, or meteorologically precise depictions. The full disclaimer governing this rendering — including important photosensitivity and health warnings regarding flashing, flickering, and rapid brightness changes in animated weather effects — is in our Terms of Use, Sections 16.1 and 16.2.
8.1 — Device Location (GPS)
If you select "Device Location," the App requests foreground location via expo-location. Coordinates are used exclusively for an OpenWeather API call. We do not receive, log, or store your coordinates on any server. Location is foreground-only — never accessed while the App is not in active use.
8.2 — Manual City
If you select "Manual City," you enter a city name sent to OpenWeather Geocoding API. The resolved label is cached locally. No GPS access is used.
8.3 — Opting Out
Disable Weather Adaptive Backgrounds at any time in Settings → Theme & Background, or switch to Default Plane or Curated Cycle. Once disabled, no location data is accessed and no OpenWeather requests are made.
Device Permissions & Access
Each permission is contextual — requested only when you first use the feature that requires it. All are optional; revoking one disables the related feature only.
| Permission | Purpose | Data Transmitted? |
|---|---|---|
| Location (Foreground) | Weather Adaptive Background — Device Location mode | Coordinates sent to OpenWeather only |
| Notifications | Task reminders and inbox lifecycle alerts | No — scheduled locally |
| Storage / Files | Import Tray — receiving files from other apps | No — staged locally |
| Photo Library (Read) | Personal Library — adding photos as app backgrounds | No — copied to app sandbox only |
| Calendar (Write) | Export — writing tasks as events to device calendar | No — writes locally |
| Biometric | Pre-confirmation for destructive actions (account deletion) | No — device OS handles entirely |
Photo Library: Only photos you explicitly select through the system picker are accessed. Selected images are copied into the App's sandboxed directory. No photos are transmitted.
Calendar: Write-only access for export. The App does not read, scan, or access existing calendar events.
Biometrics: VuCalendar uses expo-local-authentication to present a biometric prompt before destructive actions. The App never accesses raw biometric data — processing is handled entirely by the device OS.
How We Use Information
- Task and planning data — used solely on your device to display, organize, schedule, and track your tasks. We do not access this data.
- Email address — authentication, password reset, and, if you have given email permission, the updates you opted in to (see Section 7).
- First name — in-app personalization only. Not used for marketing.
- Account UUID — links your VuCalendar account with RevenueCat for entitlement management.
- Google OAuth data — authenticates your identity via Google Sign-In. No other purpose.
- Purchase receipts and entitlement state — RevenueCat verifies purchases and determines feature access, across in-app and web.
- Payment and billing data — for web purchases, Stripe processes your card and billing details to take payment; VuCalendar records only a purchase-ledger entry (account ID, product, date, amount).
- Location data — fetches weather conditions from OpenWeather when the weather feature is active.
- Notification data — schedules and delivers task reminders you configure, with mode-aware tone.
- Imported content — staged in Import Tray for your task workflow. Not read or processed by us.
- Website analytics — if you consent, aggregate usage data (Google Analytics) helps us improve the website. Never used for advertising, never sold, never linked to your account. Website only; see Section 11.1.
We do not use any data for advertising, behavioral profiling, sale to third parties, or any purpose beyond operating the App's stated features.
Third-Party Services
VuCalendar works with the following services, each for a specific, limited purpose:
11.1 — Website Analytics (Google Analytics)
The VuCalendar website uses Google Analytics 4 to understand, in aggregate, which pages are useful so we can improve them. This applies to the website only — the app collects no analytics whatsoever, as stated throughout this policy.
Consent first. Google Analytics does not run until you agree. On your first visit a banner asks for permission, with equally prominent "Accept" and "Decline" options. Until you accept, no analytics cookies are set and no analytics data is sent — this is enforced with Google Consent Mode v2, which defaults every signal to "denied." Declining leaves the website fully functional, and you can withdraw consent at any time (see below).
What is measured, if you consent: pages viewed and navigation paths, referring source (how you arrived), an approximate geographic region derived from your IP address (we do not store your full IP), and general device and browser type. This data is pseudonymous and is not linked to your VuCalendar account, your email, or any task data.
What we deliberately switch off: advertising features, remarketing, ad personalization, and Google Signals are all disabled. We only ever enable Google's analytics_storage signal — the advertising signals (ad_storage, ad_user_data, ad_personalization) stay denied even after you consent. We do not use analytics data for advertising, and we do not sell it.
Cookies. With consent, Google Analytics sets first-party cookies (for example _ga) to distinguish visits. These are non-essential and are only set after you accept.
Processor & international transfer. Google acts as our processor for this data and may process it on servers outside your country, including the United States, under Google's Standard Contractual Clauses. Review Google's Privacy Policy and how Google Analytics safeguards data.
Withdrawing consent. You can change your choice at any time by clearing this site's cookies and site data in your browser (which re-presents the consent banner), or by contacting us at vuclndr@gmail.com.
Data Sharing & Disclosure
We do not sell, rent, trade, or share your personal information with third parties for their own commercial purposes. Data is shared only as described in Section 11 to operate the App's features.
We may disclose information in these limited circumstances:
- Legal obligation — if required by law, court order, or governmental authority with proper jurisdiction.
- Protection of rights — to protect rights, property, or safety of VuCalendar, our users, or the public.
- Business transfer — in the event of a merger, acquisition, or sale of substantially all assets, users will be notified via prominent in-app or website notice before any personal data is transferred.
Data Retention
| Data | Retention Period | How to Delete |
|---|---|---|
| Task & App Data | Until you delete it or uninstall | Delete in-app, reset settings, or uninstall |
| Account Data (Supabase) | Until you delete your account | Settings → Account → Delete Account |
| Session Tokens | Active session until sign-out | Sign out, or uninstall |
| Email-Permission Record | Until you request removal — not auto-deleted with account | Contact vuclndr@gmail.com |
| RevenueCat Records | Per RevenueCat's own policy, independent of account | Contact RevenueCat directly |
| Purchase Ledger (Web) | Retained after account deletion — kept as required by tax and accounting law | Retains only an account identifier and purchase details; contact us to inquire |
| Stripe Transaction Records | Per Stripe's policy and tax/accounting law, independent of your account | Contact us or Stripe directly |
| Weather Cache | Per-session; cleared on settings change or uninstall | Change location settings or uninstall |
| Personal Library Photos | Until removed in-app or uninstall | Remove in Theme & Background, or uninstall |
| Import Tray Items | Until acted on, dismissed, or uninstall | Dismiss from Import Tray or uninstall |
| Exported Files | Until cleared from device cache or storage | Clear App cache or delete files manually |
Your Privacy Rights
Because VuCalendar is largely local-first, many rights are exercisable directly. Server-side data rights are exercisable by contacting us.
Right to Access
Task data is accessible in-app. Account data viewable in Settings. Contact us for server-side data copies.
Right to Correction
Edit first name in Settings → Account. To update email, contact us.
Right to Deletion
Delete tasks in-app. Delete account via Settings → Account → Delete Account — note this forfeits web-purchased entitlements (see Terms §8.2). Request email-list removal separately.
Right to Data Portability
Export task data as ICS or CSV anytime. Account data export available on request.
Right to Withdraw Consent
Revoke device permissions in settings; disable the weather feature in-app. For website analytics, decline the banner or clear this site’s cookies to be re-asked (see Section 11.1).
Right to Opt Out of Sale
We do not sell personal data. No opt-out needed.
GDPR — European Users
If you are in the EEA, UK, or Switzerland, you have rights under GDPR including the right to object to processing, restriction of processing, and to lodge a complaint with a supervisory authority. Legal bases: performance of contract (Art. 6(1)(b)) for account data; legitimate interest (Art. 6(1)(f)) for App operation; explicit consent (Art. 6(1)(a)) for email-permission records (SkyVu waitlist, Founder Member checkout, and similar opt-ins) and for website analytics cookies (Google Analytics), each withdrawable at any time.
CCPA / CPRA — California Users
California residents have rights under CCPA/CPRA including the right to know, delete, correct, and opt out of sale/sharing. We do not sell or share personal data for advertising. To exercise rights, contact us. We respond within 45 days (extendable by a further 45 with notice).
Canadian Users (PIPEDA)
Canadian residents are protected under PIPEDA and applicable provincial legislation. VuCalendar's local-first architecture means task data is never transmitted to our servers. For account-related privacy concerns, contact us at the address in Section 18.
Other Jurisdictions
We apply consistent privacy practices regardless of location and honor applicable rights under Virginia (VCDPA), Colorado (CPA), Connecticut (CTDPA), Texas (TDPSA), and other applicable laws upon verified request.
Children's Privacy
VuCalendar is not directed at children under 13. We do not knowingly collect personal information from children under 13. If you believe your child under 13 has created an account or submitted data, contact us and we will promptly delete the relevant records.
In accordance with COPPA and its 2025 FTC amendments, we do not engage in targeted advertising, behavioral profiling, or third-party data sharing for users under 13. Location data, when collected, is never linked to a persistent identifier for a child.
For users 13–17, the same protections apply. We do not sell or share data from any user under 18 for advertising or marketing.
Security
We apply commercially reasonable security measures:
- Passwords stored as one-way cryptographic hashes — plain text never stored.
- All network communications with Supabase, RevenueCat, and OpenWeather use HTTPS/TLS.
- Auth tokens stored in device-sandboxed AsyncStorage, private to the App.
- Account deletion requires fresh re-authentication (10-minute window) and password verification before execution.
- Local SQLite data is OS-sandboxed, inaccessible to other applications under normal conditions.
- Biometric processing handled entirely by device OS — never accessed by VuCalendar.
No method of storage or transmission is 100% secure. We cannot guarantee absolute security. If you believe your account is compromised, sign out immediately, reset your password, and contact us.
Changes to This Policy
We may update this policy to reflect changes in features, law, or data practices. The "Last Updated" date will change. For material changes affecting how data is collected, used, or shared, we will provide notice through the App or website before the change takes effect.
Continued use after an update constitutes acceptance. If you disagree, delete your account and uninstall.
The current version is always available at vucalendar.company/privacy.
Contact & Privacy Requests
For questions, concerns, or rights requests regarding this Privacy Policy or your personal data — including GDPR, CCPA, PIPEDA, or other applicable law requests — contact us:
VuCalendar — Privacy
Email: vuclndr@gmail.com
Website: vucalendar.company
We acknowledge privacy requests within 5 business days and respond fully within 30 days, consistent with GDPR and CCPA timelines. EEA residents who are not satisfied with our response may lodge a complaint with their local data protection authority.