Privacy Policy
Last updated: June 2025 · App version 1.0 · Bundle ID: com.laurinschwegler.euroguide
1. Controller
Laurin Schwegler
[Street address]
Switzerland
Email: [email protected]
This app is a non-commercial school thesis project. No commercial data processing takes place.
2. Our Principles
EuroGuide only processes data that is strictly necessary to operate the app. There is no tracking and no advertising. No analytics, advertising IDs or device fingerprints are collected.
3. Data Collected and Purposes
3.1 Location Data (CoreLocation)
The app requests location permission for two purposes:
- Map display: Your current location is shown locally on the device only. It is never transmitted to the server.
- Geofencing: Up to 20 circular park zones (CLCircularRegion) are monitored. When you enter a zone, only the anonymous zone ID (a string like
zone_adventureland) is sent via HTTPS toep.connect-laur.in— no GPS coordinates.
Permissions used: NSLocationWhenInUseUsageDescription (default) and NSLocationAlwaysAndWhenInUseUsageDescription (optional, for background geofencing).
Location data is not logged or retained on the server.
3.2 Push Notifications (APNs)
With your consent, the app receives an APNs device token. This token is:
- stored locally in UserDefaults under the key
apns.deviceToken, - transmitted via HTTPS to
ep.connect-laur.in/notifications/register, - stored on the server to deliver contextual tips when you enter park zones.
You can disable push notifications at any time in iPhone Settings under Notifications → EuroGuide. The stored token will be deregistered on the next app launch.
3.3 Anonymous Device Identifier
On first launch, a random UUID (auth.deviceID) is generated and stored locally. It is used to authenticate with the API (OAuth2 client credentials flow). The server stores this ID alongside your chosen app language. No personal identification is possible from this data.
Stored in UserDefaults: auth.refreshToken, jwt_token, auth.deviceID.
Stored on server: device_id, language.
3.4 Local Cache
The following data is stored locally in the app cache and never leaves the device:
~/Library/Caches/EuroGuideAPI/waitTimes.json– wait times~/Library/Caches/EuroGuideAPI/showTimes.json– show schedules~/Library/Caches/EuroGuideAPI/openingTimes.json– opening hours- Attraction details and POI lists
~/Library/Caches/EuroGuideRouter/walkgraph.json– walking graph (max. 7 days)tiles.db– offline map tiles (1.5 MB, bundled with the app)
The cache can be cleared at any time via iPhone Settings (General → iPhone Storage → EuroGuide → Delete Offline Data) or by uninstalling the app.
4. Third-Party Services
| Service | Purpose | Data transmitted |
|---|---|---|
| ep.connect-laur.in (own API) | Wait times, shows, attractions, AI planning, push | JWT, device_id, language, zone ID (if applicable) |
| Overpass API (OpenStreetMap) | Walking graph on first launch | Bounding-box query only; no user data |
| Valhalla / FOSSGIS Routing | Routing fallback | Start and end coordinates (park grounds only) |
| Apple Push Notification Service (APNs) | Push delivery | APNs device token |
| MapLibre Native | Offline map rendering | No network communication |
5. What the App Does Not Collect
- No analytics or usage statistics
- No tracking, advertising IDs, or fingerprinting
- No access to HealthKit, Contacts, Photos, Microphone, or Camera
- No permanent location logs on the server
- No Apple Sign-In, no email address, no password
6. Data Security
All communication with the API is encrypted via HTTPS (TLS 1.2+). Access tokens are stored in iOS UserDefaults and are not shared with third parties.
7. Your Rights
You have the right to access, correct and delete your data. Since the only server-side data is your anonymous device_id and language preference, it is sufficient to uninstall the app or contact me by email.
Contact: [email protected]
8. Open-Source Attributions
- OpenStreetMap – Map data © OpenStreetMap contributors, ODbL 1.0
- MapLibre Native iOS – BSD 3-Clause
- Valhalla / FOSSGIS Public Routing – Mozilla Public License 2.0
- Swift OpenAPI Generator / Runtime – Apache 2.0
- Yams, swift-collections, swift-algorithms, swift-numerics – Apache 2.0
9. Changes to this Policy
Material changes will be reflected in the in-app privacy policy and the date at the top of this page will be updated. As a non-commercial school project, fundamental changes to data processing logic are not planned.