# Garmlandia — Privacy Policy

**Effective date:** 2026-10-11  
**App:** Garmlandia (Garmin Connect IQ watch-app)  
**Developer:** Digital Mind (Jakub Frieb)  
**Contact:** kubabit@digitalmind.cz

## Summary

Garmlandia processes fitness and location data **only on your Garmin watch** to drive in-game mechanics. We do **not** collect, transmit, or share your data with our servers or any third party. Nothing leaves the device through our app.

Any data read from Garmin services or sensors is used locally for gameplay and is **not** submitted to Garmin on your behalf. Garmin is not responsible for data processed inside the app (see [Garmin Connect IQ Developer Agreement](https://developer.garmin.com/downloads/connect-iq/sdks/agreement.html)).

## Data the app reads

While Garmlandia is open on your watch, it reads the following via the Garmin Connect IQ SDK:

- **Step count** (today’s steps from `ActivityMonitor`). Shown on the home screen for the Knight hero and used to compute in-game combat bonuses. Read into memory when the UI or battle logic needs it; not written to storage as a health log.
- **Heart rate** (from `ActivityMonitor` and, as a fallback, `Activity.getActivityInfo()`). Shown on the home screen for the Archer hero and used for in-game combat bonuses. Same ephemeral, on-device use as steps.
- **Body Battery** (via the `SensorHistory` permission in the manifest). Shown on the home screen for the Wizard hero and used for in-game combat bonuses. Read from a short history sample; not persisted as a health log.
- **Weather conditions** (via the `Weather` module, no extra manifest permission). Used for weather icons and combat modifiers (e.g. sun, rain, wind). For day/night detection the app may use Garmin’s cached **weather observation location** together with sunrise/sunset times; those values are used only in memory for gameplay and are not stored or transmitted by us.
- **GPS position** (via the `Positioning` permission), **only on demand** when you tap **EXPLORE** on the QR-island zoom screen (or confirm with START/SELECT while that screen is open). The app first checks the watch's last known position and, if that is not inside a zone, requests one fresh fix. The position is compared in memory against bundled in-game zone coordinates (today one zone: within 50 km of Prague) to see whether a land unlock applies. Coordinates are **not** logged, saved to storage, or sent anywhere. GPS is enabled only for the active scan and is disabled when the scan finishes, times out (~45 s), or you leave the screen. The app never requests a fix at launch or in the background.

The app does **not** read your Garmin Connect profile, messages, contacts, or other account data. It does not use `UserProfile`, `Communications`, `BluetoothLowEnergy`, `Background`, `PushNotification`, or similar capabilities.

## What we do with it

- **Use:** Values are read when the game engine or UI needs them and are discarded from our logic as soon as they are no longer needed for the current screen or battle. They are not aggregated into a health history, not linked to an account we operate, and not sold.
- **Storage:** Sensor and GPS coordinates are **not** written to `Application.Storage`, **not** written to `Application.Properties`, **not** written to FIT files, and **not** synced to Garmin Connect by our app.
- **Transmission:** The app makes **no network requests**. `Communications` is not declared in the manifest and `Communications.makeWebRequest` is not used in the source code.
- **Sharing:** Because this data does not leave the watch through our app, there is nothing for us to share with Garmin, with Digital Mind, or with third parties.

Under GDPR and similar laws, step count, heart rate, and body battery can be **personal data** even when processed only on your device. This policy describes that on-device processing; it does not mean we operate a cloud database of your metrics.

## Data the app stores locally

Gameplay progress is saved on the watch in `Application.Storage`:

- Selected hero, experience points, crowns
- Per-location win counts **per difficulty**
- Difficulty and vibration on/off
- A small **bitmask** of which GPS-gated lands were unlocked via **EXPLORE** (which lands are open, not where you have been)

This is gameplay state only — no user account identifiers, no health history, no GPS trail or coordinates.

- **Settings → Reset Results** clears XP, crowns, and per-location win counts. Hero choice, difficulty, vibration, and GPS land unlocks are kept.
- **Settings → Reset Maps** clears only the GPS land-unlock bitmask so EXPLORE-gated lands lock again. XP, crowns, wins, and settings are kept.
- Uninstalling the app removes all local data.

## Permissions

Garmin distinguishes **declared permissions** (shown at install) from **SDK APIs** the app may call without an extra manifest entry.

The app’s `manifest.xml` declares exactly two Connect IQ permissions:

- `SensorHistory` — required to read Body Battery history samples.
- `Positioning` — used only during an **EXPLORE** scan to check unlock zones on the watch.

**Step count** and **heart rate** are read via `ActivityMonitor` and `Activity` (see *Data the app reads* above). Connect IQ does not require a separate `uses-permission` for those on supported devices — they are not missing from the policy, only from the manifest. **Weather** is read via the `Weather` module under the same rule (no extra manifest permission).

## This website

This policy covers the watch app. The companion website (garmlandia.cloud.digitalmind.cz), which the QR code in the app opens, uses no cookies, no analytics and no forms. The web server keeps standard technical access logs (IP address, time, requested page) for operation and security only. To draw the interactive map, your browser loads the Leaflet library from **unpkg.com** and map tiles from **OpenStreetMap** (tile.openstreetmap.org); those services receive your IP address and browser details as part of a normal web request, under their own privacy policies. The watch app itself never contacts the website or any other server.

## Children

The app is not directed at, and is not intended for use by, children under 13.

## Your rights

We do not hold a copy of your gameplay or sensor data on our servers. To remove local state, uninstall the app or use **Settings → Reset Results** and/or **Settings → Reset Maps** as described above.

If you have questions about this policy or how the app uses data, contact **kubabit@digitalmind.cz**.

## Changes to this policy

If a future version starts sending data off the watch (for example cloud sync or a leaderboard), this policy will be updated **before** that version ships, and the store listing will note the change. The effective date at the top reflects the most recent revision.

## Governing law

This policy is published by Digital Mind, based in the Czech Republic. It is intended to align with the EU General Data Protection Regulation (GDPR), the California Consumer Privacy Act (CCPA) where applicable, and the Garmin Connect IQ Developer Agreement and App Review Guidelines.
