Language: English

Moraro Privacy Policy

Effective date: October 7, 2026

Moraro (the "app") is made by Jongmin Lee, an independent developer ("we"). This policy explains how the app, its service providers and its advertising SDK handle information. It applies to the Moraro iOS app, including Moraro Plus.

Summary

1. Information kept on your device

The app saves readings you opened and your position in them; saved words, phrases, notes and thoughts; review state; diaries; daily reading access; voyage stamina, rewards and boat styles; interests and reading level; and language, audio and reminder settings. It also saves a random installation ID used to combine daily activity counts across your signed-in devices. This ID is not the iOS advertising identifier and is not passed to the advertising SDK by our code.

Initial reading observations used to estimate your level, such as reading time and meaning checks, stay on the device even if you sign in. The local voyage state, reading highlights and onboarding draft are also excluded from the cloud copy. If you sign in, Supabase stores your authentication session using the iOS Keychain.

To measure local retention after this version, the app keeps on the device the first observed app activity after this version, a de-duplicated record of civil-calendar days when the app was active, and the first completion of onboarding. These measurements are not synced to Supabase or sent to an analytics service. You can share a day-level summary from Settings > Data & account. It also includes the first reading completion during the measurement period, without account or device identifiers or reading content. Sharing occurs only when you choose a destination in the system share sheet. Reset all learning data and successful account deletion clear these measurements from this device.

The app saves timestamps of successfully presented reading-completion ads or local Plus promotions on your device to limit their frequency. It also stores which of three local promotion variants should appear next. These values do not contain a reading title or account ID. They remain in app storage until that storage is removed; old timestamps are pruned after a later presentation. Google may keep its own ad records separately when its advertising path is used. Reminder preferences and reminder schedules are also stored on the device. Reminder notifications do not include your saved learning text.

2. Information we process through our server

The app checks Supabase for available sign-in methods at launch, including in guest mode. It also checks lifetime purchase availability at launch, when returning to the foreground and before a lifetime purchase. These public configuration requests do not include an account, learning progress or StoreKit transaction details, but the server may receive the IP address, request time and ordinary request details.

If you sign in, the authentication service stores your Supabase user ID, sign-in method, email address, account dates and provider information. Apple may give us your real email or a private relay address; our Apple sign-in request does not ask for your name. Google sign-in can include your name and profile picture address in the authentication record. We do not receive your Apple or Google password.

When signed in, the app sends a copy of learning progress to Supabase for device sync and rewards. This includes saved text and notes, reading and review history, diary records, daily activity with the random installation ID, preferences, record version and reset time. The device-only information described above is excluded from the cloud copy. If you do not sign in, this learning progress is not uploaded to our server.

We keep account and synced progress records until you delete your account. Reset all learning data removes the earlier synced learning state while keeping your account. On September 30, 2026, the live Moraro project was verified on the Supabase Free plan in AWS us-east-2 (Ohio); its dashboard did not offer a restorable database backup or point-in-time recovery. We do not maintain a separate operator backup. Supabase still creates operational, security and authentication logs and may maintain infrastructure copies under its service terms. Dashboard visibility is not a promise that every provider copy has been deleted. Provider copies follow Supabase’s retention and deletion processes.

3. Advertising and privacy choices

Moraro uses Google AdMob only for free users who choose Allow in Apple’s App Tracking Transparency prompt. The prompt appears when the first external advertising opportunity is reached, not during Plus use. After authorization, Google’s User Messaging Platform (UMP) separately handles any privacy message required for the user’s region. The app initializes Google Mobile Ads and requests an ad only when ATT is authorized and UMP permits the request. When UMP requires a privacy-options entry point, it is available under My voyage > Settings > Ad privacy choices.

When both permissions allow an ad request, Google Mobile Ads may collect or receive an IP address, which can indicate a general location; app or device identifiers; ads shown and interactions such as taps or video views; performance information; and SDK diagnostic or crash information. Google may use these for ad delivery, measurement, product improvement and fraud prevention, subject to the applicable choices and settings. The app asks Google for non-personalized publisher privacy treatment, disables Google’s publisher first-party ID and does not put your Supabase email, saved words, notes or StoreKit transaction into its ad requests. These settings do not stop every process used for ad delivery, measurement, diagnostics or fraud prevention. Read how Google uses information from apps that use its services and Google’s Privacy Policy.

If ATT is denied or restricted, Moraro does not initialize or load Google advertising SDK content. A free user may instead see one of three rotating Plus promotions stored entirely inside the app after a reading or after choosing the stamina promotion. A local promotion can be dismissed at any time and closes automatically after 30 seconds of visible viewing. Early dismissal grants no stamina. Time spent in the purchase sheet or outside the active app does not count. Stamina is granted only when the viewing period finishes. Declining tracking does not disable reading or review.

Plus users are not shown Google ads or local Plus promotions, and Moraro does not request ATT, initialize UMP, or initialize or load Google Mobile Ads for a verified Plus session. If Plus becomes active after Google received information earlier in the session, that earlier information remains subject to Google’s policy.

You can change tracking permission in iOS Settings. Choosing Ask App Not to Track prevents Moraro from entering the Google advertising path; regional choices shown by UMP are separate and apply after tracking has been allowed. Tracking permission does not change the product analytics described below. Where GDPR applies, not allowing storing or accessing information on your device in the UMP form also turns that analytics off.

App usage analytics

Moraro uses Firebase/Google Analytics 4 to measure app activity, onboarding, reading starts and completions, and visits to broad screens such as onboarding, the harbor and the reader. Google receives an SDK-generated app-instance identifier, app and device information, installation and session activity, and approximate location derived from the network IP address. Our reading events contain the content category (tutorial or article), target language, reading band and whether this was the first completion of that reading in the current learning records. App activity events include whether onboarding is complete.

Google Analytics may record purchase and subscription events, including subscription renewals, with details such as the product ID, price and currency, and associate these events with an app-instance identifier for analytics.

Our code does not provide a Firebase Analytics account user ID or send your name, email, selected interests, reading text, saved words, notes, diary entries, onboarding drafts or audio to Analytics. The Analytics integration uses FirebaseAnalyticsCore without IDFA collection capability, disables IDFV collection and denies advertising storage, advertising user data and ad personalization. Analytics still uses its own app-instance identifier. It runs independently of the ATT-gated advertising path, including for Plus users. You can turn it off at any time in My voyage > Settings > Data & account > Share usage statistics. The setting is on by default, applies to this device only and is kept when learning data is reset. Where the UMP form records that GDPR applies, Analytics is also off unless you allowed storing or accessing information on your device (TCF purpose 1). While analytics is off, the app denies analytics storage and sends no analytics events. Information Google retains follows its applicable Analytics terms and configured retention settings. See Firebase data collection controls and Google’s Privacy Policy.

The local retention measurements and shareable summaries in section 1 remain on your device and are not uploaded to Analytics. Similar activity is measured separately by the analytics events above. Resetting learning data or deleting your Supabase account does not request deletion of previously sent Analytics records.

4. Plus purchases and payments

Moraro Plus is purchased through Apple's App Store. Available purchase options are shown in the app and may include monthly or annual auto-renewing subscriptions and a one-time, non-consumable lifetime purchase. Annual subscriptions are billed once per year; lifetime purchases do not auto-renew.

New lifetime purchases are offered for six calendar months calculated in UTC from the official sale start date set on our server, and are not offered before that date. The end of this purchase window does not end existing purchasers' lifetime Plus access.

Apple handles the purchase, payment method, billing and purchase records under Apple's Privacy Policy. StoreKit gives the app product information and verified entitlement information, including the product ID, expiration where applicable, and revocation status, so it can show prices, unlock Plus and restore access. Our current app does not upload these transaction details to Supabase or link Plus access to your Moraro sign-in account.

You can manage or cancel monthly and annual subscriptions in iOS Settings > your name > Subscriptions. Deleting a Moraro account, signing out, resetting learning data or deleting the app does not cancel an Apple subscription. The app includes a Restore purchases action if your entitlement is not shown correctly.

5. Other service providers and transfers

Supabase provides authentication and stores signed-in learning progress for us. The production project is hosted in the AWS us-east-2 region (Ohio, United States). Data is transmitted over HTTPS when the app checks sign-in settings or lifetime purchase availability, signs in, syncs, manages rewards or deletes an account. Guests send these public configuration requests but no account or learning progress to Supabase.

Apple and Google provide their respective sign-in flows. Apple also handles in-app purchases and the device services used for local speech recognition and translation. For free users who authorize tracking, Google provides UMP and AdMob. Google says that information may be processed on servers outside your country. The location and legal protections for information held by Apple and Google are described in their policies.

Google also provides Firebase/Google Analytics 4 for the iOS app usage analytics described in section 3. The public Moraro website, including the page where this policy is published, uses Google Analytics 4 to understand visits and page interactions through a separate web data stream. Google may receive browser and device information, an IP-derived approximate location, page URLs and interactions, and cookies or similar identifiers under Google's policy.

6. Microphone, speech recognition, translation and audio

The microphone is used for shadowing and spoken notes only after you grant permission. Speech recognition requests on-device recognition. If a device cannot perform it, the feature is unavailable rather than sending speech to our server. Shadowing recordings are placed in a temporary device folder for comparison and deleted when you close the shadowing screen. The text of a note you choose to save becomes learning progress and syncs if you are signed in.

Online pronunciation assessment, which would send a chosen recording and practice text through our server to Microsoft, is disabled in the current version. We will update this policy before enabling it. Built-in explanations are used first for word meanings; otherwise the app can use Apple's on-device translation. Apple says the text being translated stays on the device, but it may collect Translation API usage and performance information, including the app identifier and source and target languages. Reading audio uses files included with the app when available and Apple's device speech synthesis otherwise.

7. Deletion and your choices

My voyage > Settings > Data & account > Reset all learning data removes learning records on this device and, if you are signed in and sync succeeds, replaces the earlier cloud learning state across your devices. The app keeps the current day’s Daily Read slot, remaining stamina, its recovery timestamp and whether today’s free boost was used, so a reset cannot issue a second free allowance that day. It also keeps your Moraro account and does not cancel Plus, clear local ad or promotion timestamps, reset the next local promotion variant, change the iOS tracking permission, or remove Google’s records. Tracking permission is managed in iOS Settings. UMP privacy options are available in the app when the authorized Google path requires them.

Reset all learning data also clears the local retention measurements described in section 1 from this device.

My voyage > Settings > Data & account > Delete account deletes your Supabase account and its synced learning state, and removes this account's local records from the current device. An old local copy on another device may remain until that device is updated or its app data is removed. For an Apple sign-in account, the app also attempts to revoke the Apple connection and explains how to disconnect it in iOS Settings if revocation does not succeed. You can remove a Google sign-in connection in your Google Account settings. Account deletion does not cancel an Apple subscription or erase records Apple or Google keep under their own policies.

When account deletion succeeds, it also clears the local retention measurements described in section 1 from this device.

You may ask us to access, correct or delete the personal information we control, or to stop its processing where applicable. Contact us at the address below. To help us locate your account, give us the email address used to sign in. You can turn off the app usage analytics in section 3 under My voyage > Settings > Data & account > Share usage statistics. You can also change microphone, speech recognition and notification permissions in iOS Settings. Google's ad controls are explained in the Google links above.

8. Security and children

We use HTTPS for server requests. Supabase row-level security limits signed-in access to each user's own learning record, and server functions use the caller's account for writes. Authentication tokens are stored in the iOS Keychain. No server administrator key is included in the app.

The app is intended for people age 13 and older. It can be used as a guest and does not ask for a date of birth. A person who cannot legally consent to account data processing in their country should not create an account without a parent or guardian's consent. If you believe a child supplied account information without required consent, contact us so we can address it.

9. Changes and contact

We will post changes at this address with a new effective date. We will update this policy before enabling a feature that materially changes data handling. Significant changes will also be noted in app release information.

Jongmin Lee, lee1993ljm@gmail.com