JupaFit — Privacy Policy
Last updated: 27 October 2026
The short version
JupaFit is a fitness app. To work, it needs to know some things about your body and what you eat, so it asks you and it remembers the answers.
- We do not sell your data. Not to anyone, for any price, ever.
- There are no ads in JupaFit, so there is no advertising identifier and nothing to target.
- Nothing goes to an AI service without your permission. Meal Scan is answered by OpenAI. Before it sends anything, the app tells you what will be sent and asks you. You can withdraw that permission at any time in Profile → Privacy & data.
- Duo photos are seen by two people: you and your Duo. Nothing in JupaFit is public — there is no feed of strangers, no profile anyone can look up. Hide a post and its photos are deleted; delete your account and all of yours are.
- Meal photographs are not kept. A photo is sent to be analysed and discarded in the same request; it is never written to storage or a log.
- Health data never leaves your phone. JupaFit reads your step count and sleep, uses them on the device, uploads neither, and never writes anything back to Apple Health or Health Connect.
- You can delete your account from inside the app, in Profile → Delete account (also at the bottom of Privacy & data), and it deletes on the server too.
The app also shows this in plain language on the Privacy & data screen, which lists what is on your phone, what is on your account, and what is never collected at all.
1. Who we are
JupaFit ("we", "us") is published by Ramal İlyasov, an individual developer in Azerbaijan.
Questions, requests, or complaints: jupatxean@gmail.com. We answer within 30 days.
2. What we collect, and why
Nothing here is collected for its own sake. Each item below exists because a feature does not work without it.
2.1 What you tell us
When you first open JupaFit it asks you a set of questions. The answers are:
| Data | Why |
|---|---|
| Name (or nickname) | So the app can address you |
| Gender, age | Calorie and protein maths |
| Height, weight, preferred units | The same maths, and your progress |
| Goal, activity level, training experience | Building your plan |
| Days per week, training location, equipment | Building your plan |
| Typical daily steps | Your starting activity estimate |
| Free-text notes (optional) | Anything you want the plan to account for |
| Chosen avatar | Shown in the app |
You can skip the free-text question. Everything else is required for the app to produce a plan at all.
2.2 What you record as you use it
| Data | Where it is stored |
|---|---|
| Weigh-ins, body measurements | Phone and account |
| Food logged, and foods you favourite | Phone and account |
| Workout sessions | Phone and account |
| HP, level, streak, missions completed | Phone and account |
| Sleep you typed in yourself | Phone and account |
| Sleep read from Health | Phone only — see 2.3 |
| Your last ten food searches | Phone only |
| Programs you build | Phone and account (and your Duo, if you share one — see 2.5) |
| Duo posts, reactions, the weekly pact | Account, shared with your Duo — see 2.5 |
| Today's in-progress state | Phone only |
"Account" means our database, so that a new phone is not a fresh start. Signing out removes every line of the phone copy from that handset, and so does deleting the app.
2.3 Health and fitness data
With your permission, JupaFit reads two things from Apple Health (iOS) or Health Connect (Android), and only two:
- Step count
- Sleep analysis
This permission is asked for the first time a feature needs it, and the app works without it — you can decline and keep using JupaFit.
Neither one leaves your phone. This is the part worth reading twice:
- Steps stay on the handset. They run the daily step mission and are never uploaded to our servers.
- Sleep read from Health stays on the handset too. If you type in how long you slept, that number is backed up to your account so your streak survives a new phone — but a night that came from Apple Health or Health Connect is dropped before the upload, by the code that does the uploading rather than by whoever remembers to ask for it.
- Nothing is ever written back. JupaFit requests read access only; on iOS it does not declare write access at all.
- Health data is never sent to the AI features, never used for advertising or marketing, and never shared with anyone at all — it is not in our database, so there is nothing to share.
2.4 Meal photographs
If you photograph a meal, the picture is sent to our server and on to our AI provider to estimate the food and its nutrition. The image is not stored. It exists for the length of one request and is never written to storage or to any log. What is kept is the result — the food name and its nutrition numbers — as an entry in your food log.
Before the first photo is sent, the app asks your permission, and says that the photo goes to OpenAI and what it is used for. Until you allow it, nothing is sent and the camera does not open for scanning.
You can use the whole food log without ever taking a photograph, by searching or entering food by hand.
2.5 Duo — training with one other person
Duo connects your account to one other person you invite: a partner or a gym buddy. What you put into a Duo is seen by the two of you and by nobody else — not other users, not the public.
What your Duo sees about you:
- the name you gave the app;
- the workout posts you send: one or two photos (if you take or choose any), the workout card the app fills in (session name, minutes, kilos moved, personal records), your mood that day and an optional caption;
- your reactions to their posts;
- the weekly pact you agree — how many days each of you trains, and the stake — and, from your posts, how many days you have done, your weekly kilos, and the shared streak or scoreboard;
- programs you choose to share with them.
They do not see your body measurements, weight, food log, calorie target, health data, email address or anything else in your account.
Where it is kept. Posts, reactions and the pact are stored in our database; photos are stored in a private storage area that only the two members of that Duo can read. They are not sent to OpenAI or any other AI service.
Hiding a post. You can delete any post of your own. It disappears from both phones at once, and its photos are deleted from storage within a few hours.
Ending a Duo. Either of you can end it at any time. Nothing new is shared after that. Posts already shared are kept as the history of that Duo, readable only by its two members, until the author hides them or deletes their account.
Invite links. An invite is a short code, sent as a link (jupatxean.github.io/duo/?c=…) by whatever app you choose to share it with. The code works once and expires after 48 hours. The page behind the link is a static page: it collects nothing and only opens JupaFit.
2.6 Notifications
If you allow notifications, your phone gives JupaFit a push token — an address that lets Apple deliver a notification to this app on this phone. We store it with your account, together with your time-zone offset from UTC, so that notifications arrive at a sensible local hour.
They are used only for Duo: your Duo posted, reacted, or joined; an evening reminder when your Duo has trained today and you have not; and the result of the weekly pact. There is no marketing notification.
The text of each notification passes through Apple Push Notification service to reach your phone. Queued notifications are deleted after seven days. The token is removed when you sign out or delete your account, and you can turn notifications off at any time in your phone's settings.
2.7 Account and sign-in
You sign in with Apple, with Google, or with an email address and password. We receive an account identifier and an email address from whichever you choose. If you use Sign in with Apple and choose to hide your email, we receive Apple's relay address and never see your real one.
We never see and never store your password for Apple or Google.
2.8 Subscriptions
If you subscribe, the payment is taken by Apple or Google, not by us. We never see your card number, and we could not charge it if we wanted to. We receive from the store only whether a subscription is active, which plan, and when the period ends.
2.9 Crash reports
When the app crashes we receive a technical report — what went wrong, where in the code, the device model, and the OS version. It is deliberately configured to carry as little as possible: personal information is switched off, no screenshot is captured, no view hierarchy is captured, and log lines are stripped before sending. The report is linked to an anonymous account identifier so that repeated crashes for one person can be recognised as one problem.
3. Who else sees it
We use a small number of processors. Each is here because a feature needs it, and each is bound to use the data only to provide that service.
| Processor | What reaches them | Why |
|---|---|---|
| Supabase | Your account, everything in the "account" column above, Duo photos, push tokens | Database, storage, sign-in and backup |
| OpenAI | Meal photographs at the moment of analysis | Meal Scan |
| Apple / Google | Sign-in identity; subscription status | Sign-in and payment |
| Apple Push Notification service | Your push token and the text of each notification (2.6) | Delivering notifications |
| GitHub Pages | The ordinary request (IP address, browser) when someone opens an invite link or this page | Hosting those pages |
| RevenueCat | Subscription status and an anonymous account identifier | Managing subscriptions across both stores |
| Sentry | Crash reports as described in 2.9 | Fixing crashes |
OpenAI and Meal Scan. Data reaches OpenAI only after you have allowed it in the app, and only the meal photo described in 2.4. We use OpenAI through its business API, under terms that require it to give this data protection at least equal to this policy: it processes the data only to produce the answer for us, it does not use API data to train its models, and it is bound by its data processing terms. Your name, email address, date of birth, health data and Duo photos are never sent to it.
We do not sell personal data, and we do not share it for advertising. There is no advertising network, no analytics broker, and no data broker of any kind in this app.
International transfers
These providers operate servers outside the country you are in, so using JupaFit involves transferring your data internationally. Where the law requires a safeguard for that transfer — for example the EU's standard contractual clauses — we rely on the terms each provider offers for it.
4. What we never collect
This list is a promise, not an inventory:
- Your location. Not once, for any reason. The app requests no location permission of any kind.
- Advertising identifiers. There are no ads.
- Your contacts, your calendar, your microphone.
- Photographs other than the ones you take or pick yourself — a meal for Meal Scan, a workout photo for your Duo, or a picture for your streak card. The app can read the one picture you pick; it cannot browse your photo library.
- Screenshots of your screens, including when the app crashes.
5. How long we keep it
- On your phone: until you sign out or delete the app, both of which clear it.
- On your account: until you delete your account.
- Meal photographs: not kept at all.
- Duo posts and photos: until the author hides the post or deletes their account. A hidden post's photos are deleted within a few hours.
- Duo invites: a code stops working after 48 hours or one use.
- Push tokens: until you sign out or delete your account; queued notifications are deleted after seven days.
- Crash reports: retained by Sentry on its default schedule and then deleted.
We do not keep an archive of deleted accounts.
6. Deleting everything
Open Profile → Delete account (the same option is also at the bottom of Profile → Privacy & data).
This deletes your row and everything that references it — your questionnaire, your weigh-ins and measurements, your food log and favourites, your workouts, your programs, your progression, your sleep record, your Duo posts, reactions and invites, your push tokens, and your subscription record — and then clears the copy on the handset. The photos of those posts are removed from storage within a few hours. It is immediate and it cannot be undone.
A Duo you started — by sending the invite — is deleted with your account, together with its shared history, including your partner's posts in it. Your partner's own account is not affected.
Deleting your account does not cancel a subscription bought through Apple or Google. Cancel that in your App Store or Play Store account settings, or it will keep renewing.
You can also just sign out, which clears the phone and leaves the account intact.
7. Your rights
Depending on where you live, you may have the right to ask us for a copy of your data, to correct it, to delete it, to restrict or object to how we use it, and to complain to your data protection authority.
Most of this is already in the app: the questionnaire is editable in the profile, and deletion is one screen away. For anything else, write to the address in section 1.
Where we need a legal basis under the GDPR: we process the data in section 2 to perform the contract of providing the app to you; we process health data (section 2.3) on your explicit consent, given through the operating system's permission prompt and withdrawable at any time in your phone's settings; and we process crash reports on our legitimate interest in keeping the app working.
8. Children
JupaFit is not for children. You must be 14 or older to create an account, and the app will not accept an age below 14. If you believe a child has given us data, write to the address in section 1 and we will delete it.
The limit is fourteen rather than the more usual thirteen. That is our own choice, not a legal requirement: JupaFit gives training advice with weights, and advice like that for a body that is still growing is not something this app is in a position to give safely.
9. Changes
If this policy changes we will update the date at the top, and for anything significant we will say so in the app rather than quietly editing the page.
10. Contact
jupatxean@gmail.com