Privacy policy
This policy explains what data Nasma Puzzles (the web app and the Android app, together "the app") handles and why. The app is operated by Abdullah Hilson ("I", "me"). If you have any question, write to abdullah.hilson@gmail.com.
In short
- You can play without an account. Your progress then stays on your device.
- If you choose to sign in with Google, I store your Google account ID, your email address and your puzzle progress so it can sync between your devices.
- Usage statistics are sent only if you allow them, go to my own server, and never include your name, email address or account.
- No ads, no tracking across other sites, and your data is never sold or shared for marketing. The website also counts visits with Cloudflare Web Analytics, which uses no cookies.
Data kept on your device
The app stores the following in your browser's or the Android app's local storage (IndexedDB and local storage):
- your puzzles in progress (piece positions, the picture, the number of pieces and when you last played);
- a record of the puzzles you have completed and when;
- whether you have already seen the short how-to-play hint;
- the board colour you chose for each puzzle;
- the language you chose for the app;
- whether you allowed usage statistics and, if you did, the time spent on each puzzle in progress and a random identifier created by the statistics script (see Usage statistics);
- if you are signed in: a session token, your email address and the state of the last sync.
The web app also keeps copies of its own files and of the pictures you have opened in your browser's cache so it can work offline. Apart from the usage statistics you can choose to share (see below), none of this leaves your device unless you sign in. You can remove it at any time by clearing the site's data in your browser or the app's storage in Android settings, or by uninstalling the app. The Android app is excluded from Android's device backups.
Signing in with Google (optional)
Signing in is only needed to sync your puzzles between devices. When you sign in, Google gives the app a signed token identifying your account. The app sends it to its server, which checks it with Google and then keeps:
- your Google account ID (a number Google uses to identify your account);
- your email address, if Google reports it as verified;
- a random internal user ID and the date you first signed in.
Your name and profile picture are included in Google's token but are not stored. The app asks Google only for basic sign-in information (your account ID, email address and basic profile) and has no access to your Gmail, contacts, files or any other Google data.
While you are signed in, the app also stores on its server your puzzles in progress and your completed puzzles (which picture, how many pieces and when), so that another device signed in to the same account can pick them up. When you delete a puzzle in progress, the server keeps a small record that it was deleted, so the deletion reaches your other devices too.
After sign-in the server gives your device a session token, valid for 30 days and renewed while you keep using the app. It is stored on your device and sent with each sync.
Sign-in itself is handled by Google: on the web the app loads Google's sign-in button from accounts.google.com when you open the sign-in menu, and on Android it uses Google Play services. Google processes that interaction under the Google Privacy Policy.
How Google user data is used
Your Google account ID and email address are used only to recognise you when you sign in, to keep your saved puzzles attached to your account, and to show you which account you are signed in with. They are not used for advertising, not sold, not shared with anyone else and not used to train any model. The app's use of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements.
Where the data is kept
The app runs on Cloudflare. Account data and synced puzzles are stored in a Cloudflare D1 database, and the puzzle pictures are served from Cloudflare R2 storage. Cloudflare processes this data on my behalf as a hosting provider, on its global network.
Server logs
Like any website, the app's server sees technical information with each request: your IP address, browser or device type and the address requested. Cloudflare keeps request logs and error messages for a few days (at most 7) so I can diagnose problems. IP addresses and account IDs are also used briefly to limit how many requests one client can make, to protect the service from abuse. These logs are not used to track you or build a profile.
Usage statistics (only if you allow them)
To learn which puzzles people enjoy and where the app can be improved, the web app and the Android app ask whether you want to share anonymous usage statistics. Nothing is sent until you choose "Allow". If you choose "No thanks", or never answer, no statistics are sent. You can change your choice at any time with the "Statistics" button at the bottom of the puzzle gallery; turning statistics off stops them at once and deletes what the statistics script stored on your device.
If you allow them, the app sends:
- which screen of the app you open (for example the gallery or a puzzle, identified by its picture) with any parameters in its address, the site that sent you there, the links you open that lead to other pages (their address and link text), your browser and operating system with their versions, the device type, the screen size and the language;
- what you do in the app: puzzles started and completed (picture, number of pieces, whether rotation is on, new or continued, and the time spent on the puzzle while statistics were allowed), the gallery filter chosen, whether a sign-in was opened, cancelled, succeeded or failed (with an error code, never your account), sync failures, installing the web app, app updates and starting from the copy of the puzzle list saved on your device because the network was slow or unavailable;
- in the Android app, also: when the app is opened or put in the background (with the app version, the Android version and how long it was used), screen rotations, leaving the app with the back button, and error messages from the app's own code when something goes wrong.
Statistics never include your name, email address, Google account or sync account. The app sets no cookies for them. Unique visitors are counted by combining your IP address and browser identification with a secret value that changes every day, so you cannot be recognised from one day to the next, and your IP address is not stored. A coarse location (country, region and city) is derived from your IP address when the statistics arrive. The statistics script also creates a random identifier in your device's local storage; the app does not use it, it is not sent with the statistics, and it is deleted when you turn statistics off.
The statistics go to my own server in Germany (pulse.h2.limited, reached through Cloudflare's network), which runs Rybbit, open-source analytics software (AGPL-3.0). Cloudflare only carries the traffic to that server; no one else receives the statistics, and they are not used for advertising. They are deleted automatically 24 months after they are collected. Because they are not linked to you, they cannot be looked up by person.
Visit statistics
Separately from the choice above, the website at nasmapuzzles.com uses Cloudflare Web Analytics to count visits. When a page loads, a small script from Cloudflare (static.cloudflareinsights.com) reports the page address, the referring site, the browser and operating system, the country and page-load timings. It sets no cookies, stores nothing on your device, does not use your IP address to identify you, does not follow you across other websites and is not used for advertising. I only see totals, such as how many people opened a page. The Android app does not load this script.
What the app does not do
- No ads and no advertising identifiers.
- No advertising trackers, tracking pixels or cross-site tracking.
- No selling, renting or sharing of your data.
- No access to your location, camera, contacts or files.
Pictures and outside links
The puzzle pictures are photographs from Unsplash, credited to their photographers in the app. Pictures are served from the app's own storage, not loaded from Unsplash. Credit links open Unsplash's website, which has its own privacy policy.
Keeping and deleting your data
Data on your device stays there until you clear it. Signing out removes the session token and your email address from that device, but keeps your puzzles on it; it does not delete the copy on the server.
Data on the server is kept for as long as you use sync. To have your account and everything stored with it deleted, email abdullah.hilson@gmail.com from the address you signed in with (or tell me that address). I will delete your account, your synced puzzles and your completion records within 30 days and confirm by email. You can also ask for a copy of your data the same way. You can remove the app's access to your Google account at any time from your Google Account settings.
Children
The app can be played by anyone, and playing without signing in involves no personal data. Signing in uses a Google account, subject to Google's own age requirements.
Changes to this policy
If the app starts handling data differently, this page will be updated and the effective date above changed.