Privacy Policy

Effective date: September 22, 2026

This is one policy for every app I make, not a separate document per app. It starts with what's true everywhere, then lists anything that's different for a specific app, pulled straight from that app's own listing below — so this page can't quietly go stale as new apps are added.

What's true for every app

  • Offline first

    Every app here is built to do its core job without an internet connection. If a page below says an app is offline, that's a structural fact about how it's built — not a setting you have to find, and not marketing language.

  • No analytics, no tracking SDKs

    None of these apps embed an analytics library, crash-reporting SDK, or ad network. There's no usage telemetry being collected about how, when, or how often you use anything, by me or by any third party.

  • No accounts unless a feature genuinely needs one

    Nothing here requires sign-in to use the core app. Where an optional feature involves a destination for your own data (like a backup you choose to turn on), it uses your existing Apple account — never a new account with a company you've never heard of.

  • You're the customer, not the product

    There is no data-sharing or data-selling arrangement with anyone, for any app, ever. The apps are paid for by the people who use them — that's the entire business model — so there's no one else to sell you to, and no infrastructure in place to collect anything to sell in the first place.

  • What “local-only” means on this page

    When an app's listing below says something is stored “locally” or “on-device,” it means the data lives in that app's own storage on your phone, is never transmitted anywhere by the app, and is deleted when you delete the app.

App by app

Anything specific to one app — permissions it asks for, an optional feature that touches the network — is listed here, pulled directly from that app's own page.

Zero network requests, ever

Wordkowski makes no network calls at runtime. It doesn't check a server for puzzles, doesn't phone home on launch, and behaves identically with Wi-Fi and cellular both switched off.

Local-only storage

Your in-progress puzzle and play statistics (games played, win streak, guess distribution) are saved on-device using Apple's standard UserDefaults storage. None of it is transmitted or backed up anywhere by the app.

No account, no profile

There's no sign-in and no account system, so there's no profile of you anywhere — on our servers or anyone else's.

Optional bug-report email

A built-in “report a bug” screen can draft an email using your device's own Mail app, pre-filled with a text snapshot of your current game state and stats. Nothing is sent automatically — you review the draft and choose to send it, addressed to [email protected].

No internet, no servers

Blockowski makes no web requests. It doesn't fetch anything, check in with a server on launch, or send anything to us or anyone else. Every solo mode behaves identically with Wi-Fi and cellular both switched off.

Linked play stays between two phones

The only networking in the app is the optional two-player mode. After you choose to host or join, the two phones connect directly to each other over your local network or direct phone-to-phone Wi-Fi, encrypted with a key only those two phones share. There is no server in the middle. They exchange only what the match needs: the display name you chose, the match settings, the garbage rows and results. Nothing from the match is kept afterward.

Two permissions: Local Network and Camera

iOS asks for Local Network access the first time you start linked play, so the app can find your friend's phone, and for Camera access the first time you tap Scan, so your phone can read the pairing code (a QR code) on your friend's screen. Blockowski shows a plain-language explanation before each. The camera is used only to read that code: pictures are never saved or sent anywhere. If you say no, every solo mode and the practice bot work exactly the same, and you can pair with a 4-digit code instead of the camera.

Everything saved stays on the device

Your settings (look, sound and control choices, plus an optional display name), your high scores, and a paused game are saved as small files in the app's private storage on your phone. The app never transmits them. As with any app, if you back up your phone with iCloud or a computer, iOS may include the app's files in that backup. Phones you have paired with are remembered by a shared secret kept in the iOS Keychain on this phone only (not synced); you can forget any of them in the app.

No account, no profile

There's no sign-in and no account system. The display name is optional text you type yourself; it never leaves your phone unless you play a friend, and then it goes only to that friend's phone.

No third-party SDKs

No analytics, advertising, crash-reporting or sign-in SDKs. Blockowski uses Apple's own frameworks and code written for the app, plus one bundled pixel font (Press Start 2P) under an open license.

Sharing is your choice

The Share button on the pause screen draws a picture of your game on the phone and hands it to the standard iOS share sheet. Nothing goes anywhere until you pick where to send it.

No other permissions

No microphone, location, contacts, photos or notifications. The “Allow my own music” option simply lets other apps' audio keep playing while you play; it doesn't read your music library.

Microphone access

Requested so you can record voice journal entries. Recorded audio is transcribed on-device and is never uploaded as part of recording or transcription.

No network requests

Recording, transcription, search, mood insights and echoes all run entirely on-device. The app contains no code that makes network requests, and nothing is sent anywhere. The only way any data leaves the device is a backup file you export yourself.

Local-only storage

Journal entries, audio, transcripts and generated insights are stored locally on your device. None of it sits on a developer-run server, because no such server exists.

Optional encrypted backup

Automatic local backup is off by default. You can turn it on, and you can export a backup file whenever you want and save it wherever you choose using the iOS share sheet. Every backup is AES-256 encrypted before it's written, using a key held in your Keychain, never a third-party account or server.

Apple Intelligence, on-device

Echoes of earlier days and some insights use Apple's on-device language model where your iPhone supports it. That processing happens on the device. Without Apple Intelligence, echoes stay off and everything else works as usual.

Optional Face ID / passcode lock

Can lock the app behind Face ID or your device passcode. Authentication is handled entirely by iOS. Szeptem never receives or stores biometric data itself.

No account, no third-party SDKs

No sign-in is ever required. There are no analytics, crash-reporting or advertising libraries in the app.

No network requests while you play

The iPad and Mac apps contain no networking code at all: nothing is downloaded, nothing phones home, and they play identically with Wi-Fi switched off. The only link out is goofflinebydesign.com on the About screen, which opens only if you tap it. The web version is fetched by your browser from glidepath.goofflinebydesign.com like any web page — fonts included, nothing loaded from third-party servers — and like any website, that request reaches the server with the usual connection details such as your IP address. After that first load the game makes no network requests: no analytics, no beacons, no ads, no cookies.

Local-only storage

On iPad and Mac, your settings are saved with Apple's standard UserDefaults, and your records (best shifts, totals, tutorial progress) and an in-progress shift are saved as small files in the app's own Application Support folder; they're deleted when you delete the app. In the web version, the same settings, records and saved shift are kept in your browser's local storage for glidepath.goofflinebydesign.com, and clearing that site's data erases them. Either way, none of it is synced, uploaded or backed up anywhere by Glidepath.

No permissions requested

Glidepath doesn't ask for the microphone, camera, location, contacts, notifications or anything else, in the apps or in your browser. Giving instructions is touch, click or keyboard only. On iPad and Mac, spoken pilot readbacks use Apple's built-in on-device speech voices; nothing is recorded or sent anywhere, and voices can be switched off in Settings. The web version shows readbacks as text, and its sound effects are generated right in your browser.

No third-party tracking code

The iPad and Mac apps are built only with Apple's own frameworks. The web version uses the open-source Preact library and bundled open-source fonts. Neither contains any analytics, crash-reporting, advertising or sign-in code.

No account, no profile

There's no sign-in and no account system, so there's no profile of you anywhere — on our servers or anyone else's.

No network requests beyond its own server

The game only ever calls its own backend at same-origin `/api/*` endpoints — confirmed directly in the frontend's fetch wrapper. There are no third-party requests of any kind. Like any website, loading the page itself reaches the server with the usual connection details such as your IP address, and standard web-server access logging applies — nothing beyond that default.

Nothing saved until you accept cookies

No cookie is set until you click Accept. Before that, or after Reject, your game lives only in server memory, identified by a random id the page holds in memory (never in a cookie or storage) — a reload or closed tab loses it, and idle unsaved games are automatically cleared after 2 hours. Accepting moves your game into a small local database on the server, keyed to a plain httpOnly session cookie, so you can come back to it; it's deleted automatically after 30 days without play. Withdrawing consent deletes that saved game and clears the cookies immediately.

No move-by-move logging

The app has an optional event logger for individual game actions, and it is turned off in this deployment — no per-move logs are written.

No permissions requested

Remik 51 doesn't ask for the camera, microphone, location, notifications, or anything else. Play is touch, click or keyboard only.

No third-party SDKs

The backend is built only on Express, better-sqlite3, cookie-parser and dotenv; the frontend only on React and a drag-and-drop library (dnd-kit). No analytics, crash-reporting, advertising or auth SDKs of any kind.

No account, no profile

There's no sign-in and no account system, so there's no profile of you anywhere — on our servers or anyone else's.

No network access at all

SecureLicense contains no network code. It never makes a network request, for any feature, and works the same in Airplane Mode.

Stored only on your iPhone

The front and back photos and the details read from them are saved only in the app's own storage, encrypted by iOS Data Protection while your iPhone is locked. They never go into your photo library, there's no iCloud sync or export, and deleting the license (or the app) removes them. Like any app's data, they are included in your own iPhone or iCloud device backup.

Camera access

Requested so you can photograph the front and back of your license. Finding the card's edges, cropping, and reading the barcode and printed text all happen on-device with Apple's Vision framework — no photo is ever uploaded.

Face ID / passcode lock

The app unlocks with Face ID, Touch ID or your device passcode, and locks whenever it goes to the background. Authentication is handled entirely by iOS — SecureLicense never receives or stores biometric data.

No third-party SDKs

No analytics, crash reporting, ads or third-party sign-in. The app is built only on Apple's own frameworks.

No account required

There's no sign-in of any kind. The only lock is your own Face ID or passcode.

Blocked from screen capture

The card and its details are excluded from screenshots, screen recordings and screen mirroring, and hidden in the app switcher, so a copy can't slip out by accident.

Not an official ID

SecureLicense stores a photo of your license for your own convenience. It isn't an official digital or mobile driver's license, isn't affiliated with any government or licensing agency, and may not be accepted in place of your physical card.

Map tiles, from Apple

Showing the map at all requires downloading map imagery from Apple, the same way Apple's own Maps app does.

Trail data, from OpenStreetMap, only when needed

Setting a leg to "Follow Paths" requests road and trail data for that area from the public Overpass API. The request contains only a geographic bounding box and a generic app identifier — no account ID, device ID, or location history. Data for areas you've already viewed is cached on your iPhone, so revisiting a familiar area works without a connection.

Location access, When In Use only

Requested only the first time you use a feature that needs it — showing your position on the map, or starting a recording. TrailTally never asks for "Always" access.

Everything else runs on your iPhone

Snapping your pins to trails, computing routes and distances, deciding when to ask which fork you took, recording your GPS track, and storing your saved routes all happen entirely on-device.

No account, no third-party SDKs

No sign-in, no analytics library, no ad network, no crash-reporting SDK. There's no server run by the developer that any of this reaches.

Anonymous diagnostics via Apple's MetricKit, opt-in

Only if you've turned on "Share iPhone Analytics" in iOS Settings, Apple's own on-device diagnostics pipeline may deliver aggregated, anonymized battery and crash data about TrailTally to the developer, roughly once a day. This is Apple's OS-level mechanism, not a third-party SDK, and it can't identify who a report came from. Off by default.

Recorded routes stay put unless you export them

Saved routes and recordings live in TrailTally's own storage on your iPhone. The only way one leaves is if you tap Export, which hands a GPX file to the standard iOS share sheet — you choose the destination.

No network requests

The app contains no code that connects to the internet. There is no server, no account and no update check run by the developer.

Everything is stored on your device

Swimmers, times, meets and backups live in the app's own storage, protected by iOS Data Protection. Deleting the app deletes them. Erase All Data inside the app also wipes everything and returns to the first-launch tour.

Nearby coach sync, only with phones you've paired

Nothing connects until you pair two coaches' phones. After that, paired phones sync automatically when they're near each other, directly over Bluetooth and peer-to-peer Wi-Fi, and you can turn automatic sync off in Settings. Times and splits are signed by the phone that recorded them and sealed between the two phones, and names are not broadcast while phones look for each other. iOS asks for Local Network access when you first pair. If you decline, the app works fully on one phone.

Camera, for pairing

Used only to scan the QR code that pairs two coaches' phones. Nothing is recorded or stored.

Face ID, optional

An optional app lock using Face ID or your passcode. It never engages while a race is running, so a lock screen can't swallow a tap.

Copying a roster needs the other coach's OK

A coach can ask a paired coach for swimmers, history and meets. The other coach sees what's requested and must approve it. It goes phone to phone over the sealed local channel and nowhere else.

Files you share in stay on the device

Meet PDFs and pictures shared to FlagLine from other apps are read on the phone. They are not uploaded anywhere. The team logo picker uses the system photo picker, so no photo-library permission is requested.

No third-party SDKs, no account

No analytics, crash reporting, ads or sign-in of any kind.

Exports go where you send them

CSV files, progress report PDFs, share-card pictures and backups leave the app only through the standard iOS share sheet, to a destination you pick. A swimmer's report or card contains only that swimmer's own times.

Zero network requests, ever

Speedowski makes no network calls at runtime. There's no URLSession or any networking code anywhere in the app — it behaves identically with Wi-Fi and cellular both off.

Almost nothing is stored, and never off-device

The only thing saved on-device is a single yes/no flag for whether you've seen the onboarding screen. Top Speed and Avg Moving Speed are session-only — they reset every time you open the app and are never written to disk or sent anywhere.

One permission: Location, while in use

Location access is requested only to compute and display your live speed on-screen. If your device is set to Approximate location, Speedowski offers a one-tap upgrade to Precise, since accurate speed can't be calculated without it.

No third-party SDKs

No analytics, no crash reporting, no ad network, no third-party auth — Speedowski has no external dependencies of any kind.

No account, ever

There's no sign-in and nothing in the app that requires one, including no optional feature that would.

GPS stops the moment you leave

Location tracking runs only while the app is open and visible on-screen. It stops completely the instant you background the app, and no ride history or route is ever kept.

No network access

Spin Thing never makes a network request. It contains no networking code and no web content, so there is nothing for it to send or receive, and it works fully in Airplane Mode.

Scores stay on your device

Rounds, names you type for the leaderboard and settings are stored only on your iPhone. They are not synced to iCloud or any server, and are removed if you delete the app.

Motion sensors, on-device

The app reads your phone's gyroscope and accelerometer to count spins and detect falls. This needs no permission prompt, and the readings are processed on the device and never saved or sent anywhere.

No other permissions

Spin Thing does not ask for the camera, microphone, location, contacts, notifications or any other access.

No third-party SDKs

There are no analytics, crash-reporting, advertising or other third-party libraries in the app.

No account required

There is no sign-in of any kind. The only thing to accept is the safety disclaimer on first launch.

Sharing is your choice

Share only happens when you tap Share and pick a destination in the iOS share sheet. Disqualified rounds can't be shared.

No network access

SonicViz makes no network requests, ever. The app contains no networking code and links no networking frameworks, and the build is checked for that automatically.

Microphone access

The microphone is the only permission SonicViz requests. It is used to analyze sound live, on the device. Audio is never uploaded or shared unless you export it yourself.

Background audio, for logging only

The audio background mode is used solely so the optional long-term level logging can keep running while the screen is locked.

Stored on your device

Saved sessions, recordings, logs and calibration settings stay in the app's own storage on your device. Nothing is kept on a developer-run server, because there isn't one.

Exports only through the share sheet

CSV, PNG, PDF, WAV and session files leave the app only when you export them through the standard iOS share sheet or Files picker, to a destination you choose.

No third-party SDKs

No analytics, crash reporting, advertising or sign-in SDKs. The app uses Apple's own frameworks only.

No account required

There is no sign-in of any kind, and nothing to create or log in to.

Not a certified meter

SonicViz is not a certified sound level meter. Readings are estimates from your device's microphone, which you can calibrate against a known reference.

This website

This website (not the apps) counts visits with a small, self-hosted tool running on my own server — no cookies, and nothing goes to a third party. It records which pages are viewed, which site linked you here, which app links get clicked, and rough device and country info, so I can tell whether anyone is actually finding these apps. Your IP address is never stored; visitors are counted using a one-way scrambled value that resets every month and can't be traced back to you. If your browser sends Do Not Track, you aren't counted at all. None of it is shared or sold, and the apps themselves still collect nothing.

Children's privacy

None of these apps are directed at children, and none knowingly collect personal data from anyone, of any age — there's no data collection to make that distinction against in the first place.

Your rights

Because these apps don't collect personal data on a server I control, there's usually nothing on my end to access, correct, export, or delete on your behalf — your data already lives only on your device, under your control. Where an app has an exception (like optional cloud backup), it's called out explicitly in that app's section above.

Changes to this policy

If this policy changes — for this business overall, or for a specific app — I'll update this page and the date at the top. I won't walk back a “no collection” commitment without being explicit about exactly what changed and why.

Contact

Questions about this policy, for any app, can be sent to [email protected].