Privacy Policy — Us (我哋)

Last updated: 2026-05-10

Plain-language summary

Us is a private, end-to-end encrypted app for two people. We are designed so the developer literally cannot read your messages, photos, voice notes, anniversaries, calendar entries, journal entries, or quiz answers. Everything sensitive is encrypted on your device with a key derived from your partner's public key, and the server only ever sees opaque ciphertext.

We do not sell your data. We do not share it with anyone. We do not run third-party ads or analytics SDKs. We do not track you across other apps or websites.


What we collect and why

DataSourcePurposeStored whereEncrypted?
Apple ID (stable user identifier)Sign in with AppleAccount identitySupabase authAt-rest
Email addressSign in with Apple / email OTPRecovery / contactSupabase authAt-rest
Display name + partner's nicknameYou enter during onboardingShow in appSupabase users tableAt-rest
Anniversary dateYou enter during onboarding + pairingCouple verification + shared displaySupabase users + anniversaries (E2EE)At-rest + E2EE
Theme preferenceYou pick during onboardingRender the appSupabase usersAt-rest
Public key (X25519, 32 bytes)Generated on your devicePartner derives shared chat keySupabase users.public_keyPublic by design
Chat messagesYou writeSend to partnerSupabase messages.ciphertext_b64End-to-end encrypted (AES-GCM)
Photos shared in chatYou selectShare with partnerSupabase Storage chat-media (encrypted blob)End-to-end encrypted (AES-GCM)
Voice messagesYou recordSend to partnerSupabase Storage chat-media (encrypted blob)End-to-end encrypted (AES-GCM)
Shared calendar entries (incl. cover photos)You addShare with partnerSupabase entries.ciphertext_b64 + StorageEnd-to-end encrypted (AES-GCM)
Date-card history, journal, quiz answers, district / MTR visit logsYou recordShare with partnerSupabase play_history.ciphertext_b64End-to-end encrypted (AES-GCM)
APNs device tokeniOS provides after permissionDeliver lock-screen notificationsSupabase users.device_tokenAt-rest

The private half of your encryption keypair lives only in your iPhone's Keychain (kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly, non-syncing). It never leaves your device. If you reinstall the app or sign in on a new device, you generate a fresh keypair and your previous chat history will display as "(無法解密)" — by design.

What we do NOT collect

Push notifications

When your partner sends you something, our server-side function generates a generic notification ("[partner's name] · 傳咗訊息畀你 ♡") and sends it to Apple's APNs service for delivery to your device. The notification body contains no chat content — the server cannot read it.

Permissions we request and why

PermissionUsed forWhen
CameraTake a photo to send / attach to a memoryWhen you tap the camera icon
MicrophoneRecord a voice messageWhen you tap the mic icon in chat
Photo libraryPick a photo to send / attach to a memory / district / MTR journalWhen you tap the album icon
NotificationsLock-screen alerts when partner sends somethingAfter you sign in (you can decline)

Data deletion

You can:

Children

Us is not directed at children under 13. We do not knowingly collect data from anyone under 13. If you believe a child has provided data, please contact us so we can delete it.

Where data is stored

Supabase project (Postgres + Storage) hosted on AWS in the Asia-Pacific (Tokyo) region (ap-northeast-1). Apple Push Notification service is provided by Apple Inc.

Changes to this policy

We'll bump the "Last updated" date at the top and post the new version at the same URL. For material changes (e.g. new data categories), we'll show an in-app notice on next launch.

Contact

For privacy questions or deletion requests:

We aim to respond within 7 days.