Privacy Policy
Parking Blues helps drivers find legal on-street parking in Zurich. This policy explains what data the Android app (including Android Auto and Android Automotive OS) and this web page handle, why, and what your choices are. It is written to be read, so it is short on purpose.
Who is responsible
Paul Lammertsma, Switzerland, is responsible for Parking Blues. Contact: paul@lammertsma.dev.
In short
- There are no ads and no analytics or tracking. Signing in with Google is optional; the app works without it.
- Your location is used only while you use the app, to find parking near you.
- The Android app can send anonymous crash reports (no location, no searches), which you can switch off.
- The server keeps your search only in memory, and deletes it after at most two hours without activity.
- Where you parked is stored on your device only.
- We do not sell data or share it for advertising.
What data is processed
Your location
When you start a search, the app sends your precise location (latitude and longitude) to the Parking Blues server. While a search is running, it sends updates about once a second so the server can tell whether you have driven past a parking spot. The app asks for location permission and uses it only while it is open or while the car screen is showing; it does not track you in the background. You can deny or withdraw the permission in your device settings, but the app cannot find parking near you without it. On the web page, location is requested by your browser only if you choose "use my location" or move the pin yourself.
The server holds each search (the point you searched from, your latest position, the zone type you chose and which parking spots you have already passed) in memory only, linked to a random session identifier rather than to a name, email address or device identifier. It is not written to a database. A search is deleted after at most two hours without activity, and also whenever the server restarts.
Signing in (optional)
You can sign in with your Google account from the app's menu or with the Sign in button on this web page. Signing in is never required. If you do, we store your Google account identifier, email address and name, when you joined and last used the service, and whether the account is in good standing or blocked (see the terms). We use this only to count and limit requests per account and to stop abuse, not to identify you in any other way and not for advertising. Your password is never shared with us; Google tells us who you are. Your signed-in requests are linked to your account while you use the service, but your searched locations are still not stored beyond the in-memory session described above.
This account data is stored in Google Cloud Firestore in Zurich, Switzerland. Sign-in tokens are stored on the server only as hashes and in the app encrypted with a key protected by your device. They are excluded from device backups. On this web page, the sign-in token is kept in your browser's local storage until you sign out, and Google's sign-in script is only loaded after you open the sign-in panel.
Deleting your account: choose "Delete account" in the app's menu or in the account menu on this web page while signed in, or write to paul@lammertsma.dev from the email address of the account and we will delete it. Deleting an account removes its stored data and signs you out everywhere. If an account was blocked for abuse, we may keep a minimal record of the block for as long as needed to enforce it.
Crash reports (Android app)
If the app crashes, it can send a report so the problem can be fixed. A report contains the technical details of the crash (the stack trace), your device model and Android version, the app version and a random installation identifier. It does not contain your location, your searches, your account or where you parked. It is processed by Google (Firebase Crashlytics), which may store it outside Switzerland, including in the United States, and keeps it for about 90 days.
Crash reports are on by default in the released app and off in test builds. You can switch them off at any time: in the phone app under About > "Send crash reports", and in the car under the "More" button. The web page does not send crash reports.
Technical data in server logs
Like any online service, the server (hosted on Google Cloud, region Belgium) records your IP address, the time, the requested address (which includes the random session identifier but not your coordinates), the response status and the type of app or browser. We use this to keep the service running, to detect and stop abuse, and for rate limiting, which counts requests per IP address in memory for short periods. Google Cloud keeps these logs for about 30 days by default.
Stored on your device only
The app remembers your last zone choice and, if you tap "Parked here", where and when you parked (coordinates, the zone, an address label and the time limit when known). This is kept in the app's private storage on your phone to show you where your car is and to remind you before a blue-zone time limit runs out. It is not sent to the server and is removed when you tap "I found my car" or uninstall the app.
Notifications
The app shows local notifications about your parked car and expiring time limits. They are created on your device; no push-notification service is involved.
Third parties that receive some data
- Map tiles (CARTO). The map is made of images built on OpenStreetMap data from CARTO. They are requested through our server, so CARTO sees our server's address and which map tiles are requested, not your IP address; our server sees your IP address as described above. See CARTO's privacy policy.
- Google Play services and Android Auto. The Android app gets your device location through Google Play services, and Android Auto or Android Automotive OS display the car screens. Google's own privacy terms apply to that: policies.google.com/privacy.
- Google (sign-in). If you choose to sign in, Google handles the sign-in and tells us your account identifier, email address and name. Google's privacy terms apply to that.
- Google Cloud and Firebase Hosting host the server, the account database and this web page and may log requests as described above.
- Google (crash reports). The Android app uses Firebase Crashlytics to receive the anonymous crash reports described above. Google's privacy terms apply: firebase.google.com/support/privacy.
- Address search (swisstopo). On the web page, the text you type into the search box is sent to the Swiss federal geoportal to suggest addresses (see "This web page" below).
- Leaflet (unpkg.com). This web page loads the Leaflet map library from the unpkg content delivery network, which receives your IP address when the page loads.
The parking data itself comes from the City of Zurich's open data and is not about you. Parking Blues is an independent project and is not affiliated with the City of Zurich.
This web page
This page does not use cookies or analytics. It stores your light/dark theme choice in your browser's local storage, which never leaves your browser. Other parts of lammertsma.dev are covered by the site's own privacy statement.
Where you are. When the page opens, it asks your browser for your location so it can show parking around you. If you say no (or are outside Zurich), it shows central Zurich instead. The pin's position is sent to our server to look up parking, as described above, and is not stored. The location the page opened with is not written into the web address.
The address bar. When you pick a destination (drag the pin, tap the map or
choose an address), the web address of the page gains it and your options (after a
#) so the Back button works. Browsers do not send that part of an address to any
server, so it is not in our logs, but it is in your browser history and in the link if you copy
or share it.
Address search. What you type in the search box is sent from your browser to swisstopo (api3.geo.admin.ch, the Swiss federal geoportal) to suggest matching addresses and places, so swisstopo receives your IP address and the text you typed. See swisstopo's terms.
How long data is kept
| Data | Where | Kept |
|---|---|---|
| Search and live position | Server memory | Up to 2 hours after last activity; lost on restart |
| Rate-limit counters (IP address) | Server memory | Minutes to one day |
| Server logs (IP, time, request, status) | Google Cloud Logging | About 30 days |
| Crash reports (stack trace, device model, installation id), unless switched off | Google Firebase Crashlytics | About 90 days |
| Account (identifier, email, name, status), only if you sign in | Firestore, Zurich | Until you delete the account |
| Last zone, parked spot | Your device | Until you clear it or uninstall |
Where data is processed
The server runs in Google Cloud's Belgium region (europe-west1) and the account database in Zurich. Your data can therefore be processed outside Switzerland. Google is bound by its own data protection commitments for the safeguards that apply.
Why, and on what basis
We process location because you ask the app to find parking near you (with your permission), account data because you choose to sign in, and technical data because we have a legitimate interest in running and protecting the service. This policy follows the Swiss Federal Act on Data Protection and, for users in the EU, the GDPR.
Your rights
You can ask what data we hold about you, to have it corrected or deleted, or object to its processing, by writing to paul@lammertsma.dev. If you signed in, we can find your data through your account. Searches themselves are linked only to a random identifier, so for those we can usually only find data if you tell us roughly when you used the service and from which IP address. You can also complain to the Swiss Federal Data Protection and Information Commissioner (FDPIC) or to your local data protection authority.
Children
Parking Blues is meant for people who drive and is not aimed at children. We do not knowingly collect data from children.
Security
Data travels over encrypted connections (HTTPS). The service limits how often it can be called to protect it from abuse. No online service can promise absolute security.
Changes
We may update this policy, for example if the app starts to use new features. The date at the top shows when it last changed, and material changes will be announced in the app or its store listing before they apply.