Say It Fluently ("we", "us", "the app") is a CEFR-based language learning application built with Flutter. The app helps users learn languages through spaced repetition, adaptive quizzes, and structured exam preparation.
We are the data controller responsible for your personal data processed through the app. For any privacy-related questions or requests, you can reach us at support@vitrify.no.
When you create an account, we collect:
As you use the app, we store:
If you use the social features, we store:
The app logs lightweight analytics events (such as dashboard views, button taps, calendar interactions, and leaderboard views) to a local file on your device. This data is not transmitted to any external analytics service. We do not use Firebase Analytics, Google Analytics, Amplitude, Mixpanel, or any other third-party analytics SDK.
On the web version of the app, a Supabase Auth refresh token is stored in a
first-party cookie (sif_rt) so your session persists across browser
restarts. This cookie is set with SameSite=Lax and the
Secure flag (on HTTPS connections), and expires after 365 days.
On native platforms (Android, iOS), no cookie is used.
| Data Category | Examples | Stored Locally | Stored in Cloud |
|---|---|---|---|
| Account | Email, username, age, learning preferences | Yes | Yes (Supabase) |
| Progress | Vocabulary, SRS history, study plans, test scores, XP, streaks, achievements | Yes | Yes (Supabase) |
| Social | Friendships, friend requests, leaderboard entries | No | Yes (Supabase) |
| Analytics | Dashboard views, button taps, calendar interactions | Yes (local file only) | No |
| Auth tokens | Supabase refresh token (web only) | Cookie (web only) | Managed by Supabase Auth |
| Device IDs | — | No | No |
| Location | — | No | No |
| Purpose | Data Used | Legal Basis (GDPR) |
|---|---|---|
| Provide authentication and account management | Email, password (hashed), OAuth identifier | Contract performance (Art. 6(1)(b)) |
| Track learning progress and personalize content | Vocabulary, SRS history, study plans, test scores, XP, level | Contract performance (Art. 6(1)(b)) |
| Enable social features (friends, leaderboards) | Username, XP, level, online status, friendships | Contract performance (Art. 6(1)(b)) |
| Sync data across devices | Full profile data (sanitized, password excluded) | Contract performance (Art. 6(1)(b)) |
| Maintain and improve app functionality | Local analytics events (not transmitted externally) | Legitimate interest (Art. 6(1)(f)) |
Your profile, progress, metrics, and local analytics are stored in a file
called users.json on your device. On web, this uses IndexedDB;
on native platforms (Android, iOS), it uses the device's file system. This
data remains on your device even when you are offline.
When you are signed in, your data is synced to a Supabase backend for cross-device access and social features. The following tables are used:
profiles — username, avatar path, target language, XP, level, online status, last seen, auth UID.user_data — your full profile as a JSON blob (vocabulary, SRS, study plans, metrics, achievements). Passwords are stripped before upload.friendships — bidirectional friendship connections.friend_requests — pending friend requests.auth.users (Supabase Auth) — email, hashed password, OAuth provider linkage.We use Supabase for authentication, database hosting, and cloud sync. Supabase processes data on our behalf as a data processor. See the Supabase Privacy Policy.
If you sign in with a social provider, that provider processes your authentication:
We only receive your email address and a provider-specific user identifier from these services. We do not request access to your contacts, posts, friends lists, or any other data from these providers.
We take the following measures to protect your data:
Secure and SameSite=Lax flags on HTTPS connections.delete_account) removes all user data, profile rows, friendships, and the auth account in a single operation.If you are in the EU, EEA, or UK, you have the right to:
To exercise these rights, email us at support@vitrify.no. We will respond within one month.
If you are a California resident, you have the right to:
Users in other jurisdictions may have additional rights under their local privacy laws. Contact us at support@vitrify.no for assistance.
You can delete your account and all associated data at any time:
This will:
user_data and profiles rows from the Supabase database.You can also request account deletion by emailing support@vitrify.no from the email address associated with your account. We will process your request within 30 days.
The web version of the app uses a single first-party cookie
(sif_rt) to store a Supabase Auth refresh token for session
persistence. This cookie:
SameSite=Lax and Secure flags.The app also uses IndexedDB (web) or local file storage (native) to store your profile and progress data locally. This is essential for the app to function and is not used for tracking.
We do not use any third-party cookies, advertising cookies, or tracking pixels.
The app is not directed at children under 13 (or under 16 in certain EU member states). We collect age during onboarding to help verify eligibility. If we learn that we have collected personal data from a child under the applicable age without verifiable parental consent, we will delete that data promptly. If you believe a child has provided us with personal data, please contact us at support@vitrify.no.
Your cloud data is stored in Supabase's infrastructure. Supabase offers region selection, and your data may be processed in regions outside your country of residence. By using the app, you acknowledge that your data may be transferred to and processed in countries with different data protection laws. We rely on Standard Contractual Clauses (SCCs) where required to ensure appropriate safeguards for international transfers.
We may update this Privacy Policy from time to time to reflect changes in our practices, legal requirements, or app features. We will update the "Last updated" date at the top of this page. We encourage you to review this policy periodically. Material changes will be communicated through the app or via email when feasible.
If you have questions, concerns, or requests regarding this Privacy Policy or your personal data, please contact us:
For privacy-related requests, please include the email address associated with your account so we can verify your identity.