Privacy policy
This policy explains what data the Android app A Good Time and this website process, why, and for how long. It describes what the app actually does, including the parts that are less than ideal.
Who is responsible
The controller under the General Data Protection Regulation (GDPR) is:
Christian HollatzHollatz - Software, Hardware, Unterhaltung
Brandoberndorfer Straße 4
35647 Waldsolms
Germany
For anything about your data, write to christian-hollatz@web.de.
The short version
- The app contains no advertising, analytics or crash-reporting software, and this website sets no cookies and loads nothing from other servers.
- Voice notes, photos and captions are stored on our own server and are only ever served to the two people in a link. They are not end-to-end encrypted.
- Messages are deleted from the server 30 days after they were sent.
- The evening notification goes through Google’s Firebase Cloud Messaging. It contains counts and up to two display names, never a voice note, photo or caption.
- You can delete your account at any time. Everything is deleted from our server, apart from backups and logs, which expire on their own (see below).
Data the app processes
For each kind of data: what it is, why we need it, the legal basis, and how long it is kept.
Your account
- What
- Your email address (your login; never shown to the people you link with), your display name (shown to the people you link with), your password (stored only as a salted scrypt hash, never in plain text), your time zone (taken from your phone when you sign up; you can update it in Settings), your language, if you choose one in Settings, and the date of your last evening delivery.
- Why
- To give you an account, to deliver at 19:00 in your time zone, and to write the notification in your language. If you leave the language on “Follow the device”, the notification is in English, because your phone’s language is never sent to us.
- Legal basis
- Art. 6(1)(b) GDPR: it is needed to provide the service you signed up for.
- Kept for
- Until you delete your account.
Being signed in
- What
- When you sign in, your phone receives a random session token and keeps it in Android’s secure storage. Our server stores only a keyed hash of the token, which account it belongs to, when it was created, when it was last used, and when it expires (after 365 days). The app uses no cookies.
- Why
- To keep you signed in.
- Legal basis
- Art. 6(1)(b) GDPR.
- Kept for
- Until you sign out, reset your password or delete your account. An expired session record is not removed automatically before then.
Voice notes, photos and captions
- What
- Voice notes (up to two minutes, as audio files), photos (as JPEG files) and their captions, together with who sent them, which link they belong to, when they were sent and when they were delivered. Before a photo leaves your phone, the app resizes it and saves a new copy, which removes its metadata, including the location. Our server stores what it receives as it is.
- Why
- To hold each message until 19:00 in the recipient’s time zone, deliver it, and show it in the archive of both people.
- Legal basis
- Art. 6(1)(b) GDPR.
- Kept for
- 30 days from when it was sent, delivered or not, then the record and the file are deleted. Sooner if the sender takes it back before delivery, if either person unlinks, or if either account is deleted.
Messages are not end-to-end encrypted. The files are kept on our server’s own disk, not with a cloud storage service, and every request for one is checked: only the sender and the recipient can fetch it, and the recipient only after the drop.
The people you link with
- What
- For each link: who created the invite, who accepted it, the invite code, its status, and when it was created and expires. The people you link with see your display name, your time zone (so the app can tell them when their message will reach you) and when you last sent them something. They never see your email address.
- Why
- To connect two people and let each of them see who they are sending to.
- Legal basis
- Art. 6(1)(b) GDPR.
- Kept for
- Until one of you unlinks or deletes their account. An invite that was never used expires after 24 hours, but its record stays until your account is deleted.
The evening notification
- What
- The push token that Firebase Cloud Messaging gives your phone. The app registers it with our server each time it starts.
- Why
- To send you one notification in the evening when something has arrived. Nothing else ever sends a notification.
- Legal basis
- Art. 6(1)(b) GDPR.
- Kept for
- Until you sign out or delete your account, or until Firebase reports that the token is no longer valid. If someone signs in to another account on the same phone, the token moves to that account.
Password reset
- What
- If you ask to reset your password: a six-character code, valid for 15 minutes and usable once, which the database stores only as a keyed hash. The app cannot send email yet. Instead, the code is written to the server log together with your email address, and the person running the server reads it out to you.
- Why
- To let you back into your account.
- Legal basis
- Art. 6(1)(b) GDPR.
- Kept for
- The database record until you ask for a new code or delete your account. The log entry for as long as the server logs keep it (see below).
Protection against password guessing
- What
- Sign-in and password-reset attempts are counted per email address and per IP address, and push-token registrations per account. The counters live only in the server’s memory. IP addresses are never written to the database.
- Why
- To keep accounts safe from someone guessing passwords.
- Legal basis
- Art. 6(1)(f) GDPR: our legitimate interest in keeping the service and your account secure.
- Kept for
- Only in the server’s memory; the counters themselves are never written to disk. They are gone at the latest when the server restarts. Separately, every request is recorded in the web server log (see below).
Server logs of the app
- What
- The app’s server logs technical events: summaries of each evening drop (counts only), account IDs when a notification fails, message IDs and file paths when a file cannot be read, password-reset codes with the email address (see above), and error messages. The contents of messages and captions are never logged.
- Why
- To run the service and find faults.
- Legal basis
- Art. 6(1)(f) GDPR: our legitimate interest in a working, secure service.
- Kept for
- The logs are rotated by size, three files of 10 MB for each part of the service, so how long an entry lasts depends on how busy the server is.
Web server log of app requests
- What
- Every request the app makes to our server passes through a web server in front of it (a reverse proxy), which logs it: your IP address, the date and time, the requested address (which can contain a message ID or an invite code), the response status and size, and the app’s user agent.
- Why
- To run the service securely, to fend off attacks and to find errors.
- Legal basis
- Art. 6(1)(f) GDPR: our legitimate interest in a working, secure service.
- Kept for
- As long as the web server logs are kept: up to 15 days (the logs are rotated daily and the last 14 are kept); the logs inside the website’s and the app’s containers are capped at 30 MB each and overwrite their oldest entries as they fill.
Backups
- What
- Once a day, the whole database is backed up to the same server. A backup holds everything in the database: accounts, links, invite codes, captions and the details of each message (who sent it to whom, and when). The voice note and photo files themselves are not part of the backups.
- Why
- So that a fault does not lose everyone’s accounts.
- Legal basis
- Art. 6(1)(f) GDPR: our legitimate interest in not losing data.
- Kept for
- Each backup is deleted once it is more than 14 days old; the check runs once a day. Data you delete can therefore remain in a backup for about 15 more days.
On your phone
The app keeps a few things on your phone: your session token, a marker of which evening you have already opened (it never leaves your phone, so it cannot become a read receipt), your language choice, and any recordings and photos still waiting to upload, with their captions and who they are for. Signing out or deleting your account removes the token and the marker. A photo you receive is downloaded to the app’s cache while you look at it and removed when you close it; if the app is closed first, the copy stays in the cache until Android clears it. Signing out or deleting your account does not clear the cache.
The app asks for these permissions:
- Microphone: to record voice notes. If you have already allowed it, it is also used to draw the level meter while a voice note plays, because Android requires it for that. Nothing is recorded or sent for the meter.
- Camera: only when you choose to take a photo. Without it, you can still pick a photo.
- Notifications: for the evening notification.
- Photos from your gallery are chosen with Android’s own photo picker, which gives the app only the photo you pick and needs no access to your library.
Who else receives data
Hosting
Our server is rented from Hetzner Online GmbH, Industriestr. 25, 91710 Gunzenhausen, Germany, which acts as our processor. The server is located in Nuremberg, Germany. We have concluded a data processing agreement with Hetzner under Art. 28 GDPR.
Google Firebase Cloud Messaging
To deliver the evening notification, our server sends it to Firebase Cloud Messaging, a Google service, which delivers it through Google Play services on your phone. The message contains your phone’s push token, the title “A Good Time” and the text of the notification: how many voice notes or photos arrived and up to two display names of the senders, for example “2 voice notes from Anna” or “6 things from 3 people”. It never contains a voice note, a photo or a caption. Your phone also gets its push token from Firebase. For users in the EU, Firebase is provided by Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Ireland, under the Firebase Data Processing and Security Terms, which we have accepted. Google may process data in the USA; Google LLC is certified under the EU–US Data Privacy Framework, and the EU Standard Contractual Clauses are part of those terms.
Google Play
If you install the app from Google Play, Google processes data for that under its own privacy policy.
The people you link with
They receive what you send them, along with your display name, your time zone and when you last sent them something.
We do not sell your data or pass it to anyone else. The app contains no advertising, analytics or crash-reporting software.
This website
This website sets no cookies, uses no JavaScript and loads nothing from other servers: no fonts, no scripts, no analytics, no embedded content. The start page reads your browser’s language setting only to send you to the matching language.
When you visit it, our web servers log each request, as web servers do: your IP address, the date and time, the page requested, the response status and size, the referring page if your browser sends one, and your browser’s user agent. Both the server in front of the site and the one that serves its pages keep such a log. We use these logs to run the site securely and to find errors (Art. 6(1)(f) GDPR). They are kept for up to 15 days (the logs are rotated daily and the last 14 are kept); the logs inside the website’s and the app’s containers are capped at 30 MB each and overwrite their oldest entries as they fill.
Invite links (agoodtime.de/i/…) are answered by the app’s server. The invite page does not look the code up and never shows who sent it. It reads only your browser’s language setting, to choose the page language, and sets no cookies. The visit still appears in the web server log like any other request, including the code in the address.
Your rights
You have the right to:
- access the data we hold about you (Art. 15 GDPR),
- have incorrect data corrected (Art. 16). You can change your display name and time zone in the app yourself,
- have your data deleted (Art. 17). You can delete your account in the app yourself,
- restrict processing (Art. 18),
- receive your data in a portable format (Art. 20). The app has no export function, so write to us,
- object to processing based on our legitimate interests (Art. 21).
To use any of these rights, write to christian-hollatz@web.de.
You also have the right to lodge a complaint with a data protection supervisory authority, in particular in the EU member state where you live, where you work, or where you think the infringement took place (Art. 77 GDPR).
To use the app you need an email address, a display name and a password. Without them we cannot create an account. There is no automated decision-making or profiling.
Deleting your account
You can delete your account in the app at any time. How to delete your account, and what is deleted.
Changes to this policy
If the app or this website changes how data is processed, this policy is updated and its date changes.