Privacy policy

Effective 17 October 2026

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

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):

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 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:

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

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.