Privacy Policy
for Calistung: Baca Tulis Hitung
Short version
Calistung is a kids’ learning app that works offline. Your child’s name, avatar, age, stars, streak, drawings, and lesson progress live only on the device. There are no ads, no accounts, and no third-party trackers. To improve the app, it sends anonymous usage events (for example “a lesson was finished” or “the purchase screen was opened”) to our own server, tagged with a random install ID — never your child’s name, age, location, or any advertising identifier. Purchases and the Lembar Kerja subscription go through Apple; RevenueCat keeps a record of those transactions for our sales reports, again without any information about your child.
1. Who we are
Calistung is published by Akhaneva (“we,” “us,” “our”). This policy describes how the Calistung iOS / iPadOS app handles information. Calistung is rated for the App Store Kids Category (ages 3–6) and is designed to be compliant with Apple’s Kids Category guidelines, COPPA, and GDPR-K.
2. What we collect
Nothing that identifies your child leaves the device. The data the app needs to function — your child’s profile (chosen avatar emoji + name, which defaults to “Adik” if blank), age group, earned stars, streak count, completed lessons, unlocked rewards, traced drawings, and app settings — is stored locally on the device using Apple’s SwiftData framework and UserDefaults. It never leaves the device.
Anonymous usage analytics (from version 1.7.0). So we can see where the app works and where families get stuck, Calistung sends a small set of usage events to an analytics server that we run ourselves (a self-hosted OpenPanel instance at op.akhaneva.co). No third party receives them. An event contains:
- what happened: the app was opened, set-up finished, a lesson was finished (lesson name and star count), a locked lesson or the parent gate was reached, the purchase screen was viewed, a purchase was started, completed or cancelled (product and price), a purchase was restored, a worksheet was printed or shared (worksheet type and page count), and — only if a parent chooses to answer after buying — how they heard about Calistung;
- when it happened, the app version, the device type (iPhone or iPad), and the iOS version;
- a random install ID created by the app. It is not Apple’s advertising identifier (IDFA) or vendor identifier, it is not linked to an Apple ID, name, or email, and it resets if the app is deleted.
Events never contain your child’s name, avatar, age, drawings, or anything typed in the app. The app tells our server to skip location lookup, so we do not record a city, region, or country for any event. Events wait on the device while offline and are sent when a connection is available. There is no advertising SDK, no crash reporter, no remote logging, and no account system.
Purchases go through Apple In-App Purchase — see section 7.
3. Information from the child
Calistung is built for ages 3–6. The app actively avoids collecting anything that could identify a child:
- The “name” field on the onboarding screen accepts any text the parent or child types. It is treated as a display nickname only, stored locally, and we encourage parents to leave it as “Adik” or use a first name only. It is never sent anywhere.
- The avatar is one of 12 animal emojis — there is no photo upload, no camera, no microphone, and no contact-picker anywhere in the app.
- There is no chat, no messaging, no social, no multiplayer, no leaderboard, no user-generated content shared with anyone, no comments, no profile sharing.
- There is no in-app web browser and no third-party links exposed to the child. The only links inside the app (App Store purchase, Apple subscription management, the terms of use and this policy) and the printing and sharing of worksheets live behind the parent gate.
4. Parent gate
Settings, the purchase screens, and Lembar Kerja (printing, sharing, and the subscription) are protected by a math challenge: a two-digit addition or subtraction that needs carrying or borrowing, answered by tapping one of five numbers. A child too young to do that math cannot enter Settings, cannot reach a purchase screen, cannot print or share, cannot reach an external link, and cannot purchase anything.
5. Microphone, camera, photos, location
Calistung does not request microphone, camera, Photos library, contacts, location, Bluetooth, local network, motion, HealthKit, or any other privacy-sensitive permission. The app has no use for any of them. The Info.plist intentionally does not include the matching usage descriptions, so iOS will not even show a prompt.
6. Tracing & drawings
When your child traces a letter, number, or word, the strokes are scored locally by the guided tracing engine to award stars. Drawings are not saved beyond the current lesson and never leave the device. There is no “share my drawing” feature.
7. Purchases and the Lembar Kerja subscription
Calistung is free to download with a generous forever-free tier. Everything else is optional, and the price is always shown by the App Store before you buy:
- Calistung Lengkap — a one-time purchase that opens the rest of the core curriculum (Baca, Tulis, Hitung, Pola & Logika).
- Persiapan Kelas 1 — a one-time add-on for the start of primary school.
- Lembar Kerja Bulanan — an auto-renewing monthly subscription for the printable worksheets and the monthly Paket Spesial packs (Garis and the first ten Huruf Besar sheets are free). It renews every month until cancelled at least 24 hours before the period ends; manage or cancel it any time in your Apple account settings.
There is no advertising — ever.
Purchases are handled entirely by Apple In-App Purchase (StoreKit). Apple receives your Apple ID, payment, and billing address. We never see your card details, name, email, or postal address. The app checks your purchases directly with Apple on the device, so everything keeps working offline. To report sales and renewals, the app also hands each completed transaction to RevenueCat (see section 10), which receives what the transaction says — product, price, dates, and Apple’s transaction ID — under a random RevenueCat customer ID, never your child’s information or any advertising or device identifier. The anonymous purchase-step events described in section 2 record only which product and price were involved — never who bought it. All three purchases support Family Sharing where Apple permits.
The purchase UI is only reachable past the parent gate — children cannot trigger a purchase, see a price, or restore on their own.
8. Voice and audio
Calistung speaks every prompt in Bahasa Indonesia. The voice you hear is a pre-recorded bank bundled inside the app (Kak Velora, a generated voice) plus the offline iOS speech synthesizer as a fallback. No audio is sent off-device for speech, ever. We do not transcribe, stream, or process the child’s voice — we never even ask for microphone access.
9. Children’s privacy
We design Calistung to comply with the U.S. Children’s Online Privacy Protection Act (“COPPA”), the EU GDPR Article 8 (“GDPR-K”), and Indonesia’s UU PDP. We do not collect a child’s name, age, contact details, photos, voice, or location. The only identifiers involved are the random install ID described in section 2 and RevenueCat’s random customer ID for purchase records (section 7), and we use them solely to support the internal operation of the app — measuring and improving lessons, the purchase flow, and sales reporting. It is never used to contact anyone, to build a profile for advertising, or for behavioral advertising, and it is never shared or sold. If a parent wants more detail, email us — see section 13.
10. Third parties
Calistung does not embed third-party analytics, advertising, attribution, A/B-test, push-notification, or social-login SDKs. Usage analytics go to a server we operate ourselves (see section 2); its traffic passes through Cloudflare, which carries it to our server without storing the events. The only third parties Calistung relies on:
- Apple — the App Store, App Store Connect, In-App Purchase, TestFlight, and Family Sharing. Governed by Apple’s privacy policy.
- RevenueCat — keeps a record of App Store purchases and subscription renewals for our sales reports (see section 7). It never receives your child’s information, the advertising identifier, or any device identifier, and it is not used for tracking. Governed by RevenueCat’s privacy policy.
That is the entire list. No Firebase, no Mixpanel, no Adjust, no AppsFlyer, no Meta SDK, no Google Analytics, no Sentry, no anything else.
11. Data retention & deletion
Because Calistung stores everything on your device, you control retention completely:
- Reset progress inside Settings (past the parent gate) deletes all
ProgressRecord,Reward, stars, and streak entries from the device. - Delete the app removes the entire SwiftData store and all UserDefaults — every byte the app held is gone.
Anonymous usage events are kept on our analytics server for up to 24 months and then deleted. Because they carry only a random install ID, we cannot find “your” events from your name or email. Deleting the app discards that ID, and nothing collected afterwards can be connected to the old one. For any question about these events, email us — see section 13.
12. Your rights
Privacy laws — including GDPR, CCPA, UU PDP (Indonesia’s Personal Data Protection Law), and COPPA — grant users (and their parents, for kids) rights over personal data: access, deletion, correction, portability, objection. We hold no personal data about you or your child — only the anonymous usage events described in section 2. You can still email us with any request and we’ll answer in writing.
13. Contact
Questions about this policy, or a written confirmation request: akhaneva.co@gmail.com.
14. Changes to this policy
If we add features that change how data is handled — for example, optional iCloud sync for multi-device progress — we will update this page and bump the “last updated” date before the feature ships. Material changes will also be surfaced in-app and on the App Store release notes.