Back to projects

Privacy Policy

100 Reps is a minimalist workout tracker focused on bodyweight exercises. The app is designed so that all of your data stays entirely on your device.

Who is responsible for your data

100 Reps is developed and operated by me, Jakub Hýl, Business ID 23097736, registered at Gen. Hrušky 1215/25, 709 00 Ostrava – Mariánské Hory, Czech Republic.

You can reach me at support@jakubhyl.com (support) or info@jakubhyl.com (general enquiries), phone +420 604 757 173.

For the limited processing described below, I am the data controller under the EU General Data Protection Regulation (GDPR). A Data Protection Officer is not required and has not been appointed.

All data stays on your device

100 Reps stores all app data locally on your device in an Expo SQLite database. I collect no personal information, use no first-party analytics, and the app has no user accounts or cloud sync — I do not upload your workout history or progress to any server I control.

Locally stored data may include: your optional name and avatar, theme, sound, haptics, and music settings; premium or local entitlement flags and add-on setup state; notification permission status and reminder settings; your challenge setup (level, daily target, duration, start/end dates, status); enabled exercises and set sizes; daily logs (date, start/completion timestamps, completion status); exercise logs (exercise type, reps or seconds, targets, completion time); rep event history (previous value, new value, delta, source, timestamp); streak freeze and recovery records; and challenge completion totals.

What this means

I cannot see your workouts, your progress, or any content you create.

The claim that your data stays on your device applies to the workout and app data I process as the developer — because there is no backend of mine to send it to. It does not mean the app is fully offline or third-party-free: ads, ad consent, purchases, entitlement checks, and links you choose to open (for example, to contact support) can involve network access and third parties (see below).

Removing the app, or using Settings › Your data › Reset all data, permanently and irreversibly deletes your local data.

Notifications and reminders

100 Reps may send local push notifications to remind you of your goals. These notifications are generated on your device only and involve no data collection.

Permissions

The app may request permission to send notifications (for reminders) and, on iOS, the App Tracking Transparency permission for access to the advertising identifier. It does not access your microphone, camera, contacts, or location. Declining any permission simply disables the related feature (notifications or ad personalization) — your workout tracking is unaffected.

Advertising

100 Reps shows ads through Google AdMob in two places: (1) an optional rewarded video to recover your streak with a skip or by recovering an already-missed day, once you've used up your limited free monthly allowance, and (2) an interstitial ad that appears roughly once every 2 days after you fully complete a workout.

All ads are served through Google AdMob. Google AdMob may process standard technical device and interest data (such as device type and advertising ID) to deliver and improve ads, according to their own privacy policy. This is independent of 100 Reps — I do not collect data from AdMob.

If you're in a region that requires consent for ads (such as the EEA or the UK), you'll see a consent form through Google's User Messaging Platform (UMP) before any ads are shown, and ads won't load until you've made a choice. You can review or change your choice at any time via the Manage Privacy Choices option in the app's settings. On iOS, the advertising identifier is only used if you grant the tracking permission (see above).

Premium features and purchases

100 Reps offers an optional purchase, 100 Reps Lifetime Premium, which unlocks extended tracking and statistics. The purchase is processed entirely through the App Store or Google Play using RevenueCat, Inc. as the purchase and entitlement provider.

To confirm whether you own Premium and to show the correct price, the app contacts RevenueCat when you are online — at app launch, and when you buy or restore Premium. In this process RevenueCat receives an anonymous purchase identifier it generates (not linked to your name or account), receipt and transaction data from the App Store or Google Play, your IP address, and basic device information (device model, operating system, app and SDK version, approximate country).

None of your workouts, progress, streak, or settings are ever sent to RevenueCat, Apple, or Google. I never see or store your payment details.

Apple and Google process your payment as independent controllers under their own privacy policies. RevenueCat acts as a processor on my behalf. You can read each provider's privacy policy: RevenueCat, Apple, Google.

Legal bases for processing

Consent (Art. 6(1)(a) GDPR) — showing personalized ads through Google AdMob where consent is required, and using the advertising identifier on iOS based on the tracking permission you grant. Consent is collected through the in-app consent form, and you can change it at any time via the Manage Privacy Choices option in the settings.

Performance of a contract (Art. 6(1)(b) GDPR) — processing purchase and receipt data to deliver and restore 100 Reps Lifetime Premium.

Legitimate interests (Art. 6(1)(f) GDPR) — checking your entitlement and retrieving current pricing, and serving non-personalized ads plus basic ad delivery, fraud prevention, and diagnostics where consent is not required.

International data transfers

RevenueCat, Apple, and Google (including Google AdMob) may process the limited data described above outside the European Economic Area, including in the United States. Such transfers are protected by appropriate safeguards, such as the European Commission's Standard Contractual Clauses or an applicable adequacy decision, in line with the providers' own privacy frameworks.

No tracking or first-party analytics

Beyond the ads described above (the streak-recovery rewarded video and the periodic interstitial ad), 100 Reps contains no other tracking tools and no first-party analytics. I do not use Google Analytics, marketing cookies, or remarketing pixels. I do not sell your personal data. Third-party services used for ads, purchases, fraud prevention, diagnostics, and platform functionality may process limited data as described in this policy and in their own privacy policies.

How long data is kept

On-device data remains until you delete it (Reset all data) or uninstall the app.

Data processed by RevenueCat, Apple, and Google (including Google AdMob) is retained according to their own policies and applicable legal obligations.

Your rights

Under the GDPR you have the right to access, rectify, erase, and restrict the processing of your personal data, to object to processing, and to data portability.

Most of these you can exercise yourself, at any time: Settings › Your data › Export data as JSON (portability) and Settings › Your data › Reset all data or uninstalling the app (erasure). You can manage your advertising choices via the Manage Privacy Choices option in the settings. Because your content stays on your device, I hold none of it. For data held by RevenueCat, Apple, or Google in connection with a purchase or ads, contact me at support@jakubhyl.com and I will help with your request.

You also have the right to lodge a complaint with a supervisory authority. In the Czech Republic this is the Office for Personal Data Protection (Úřad pro ochranu osobních údajů): uoou.cz.

Children

100 Reps is not directed at children under 16, and I do not knowingly process the personal data of children.

Liability and getting help

100 Reps and 100 Reps Lifetime Premium are provided as is, to the fullest extent permitted by applicable law. While I make every effort to keep the app working correctly, I cannot be held liable for lost data, missed reminders, purchase or restore issues, or any other problems arising from use of the app.

If something isn't working as expected — a purchase doesn't unlock, a restore fails, or anything else looks off — please contact me directly first at support@jakubhyl.com so we can find a fix together, before requesting a refund through the App Store or Google Play.

Changes and contact

I may update this policy in the future. If you have any questions, contact me at support@jakubhyl.com.

Support

Need help, want to report a bug, or have an issue with the app? You'll find everything on the support page:

Go to support

Last updated: July 2026