Privacy policy

Last updated: 22 August 2026

Meals is a meal planner you run on your own server. The iOS app is a client: it talks to whichever server you point it at, and to nothing else. There is no Meals account, no Meals cloud, and no central service that sees your data.

That shape is the whole privacy story, so it is worth being precise about it.

The short version

What the app stores on your device

What Where Why
Your sign-in token iOS Keychain So you don't sign in every launch. Removed on sign-out and on account deletion.
The server URL you chose App preferences So the app knows where to connect.
A cached copy of your shopping list, plan and recipes App container on disk So the app works in a supermarket with no signal. Cleared on sign-out and on account deletion.
Shopping-list changes made offline App container on disk Queued until the server is reachable, then sent and discarded.

None of this leaves the device except to reach your server.

What your server stores

The server holds an account and a household:

A household is the entire privacy boundary. Everyone in your household can see and edit all of its content; nobody outside it can see any of it. There are no roles and no administrator, so treat an invite code like a password.

Servers also keep ordinary web-server logs, which typically include IP addresses and request paths. How long those are kept is up to whoever runs the server.

What leaves your server, and when

Only three things ever cause an outbound request, and each one is something you asked for:

If you connect an AI assistant to the API with a personal token, that assistant sees whatever it asks for. That connection is yours to make and yours to revoke — delete the token and it stops working immediately.

Paying for hosting

This section exists because /privacy is a published, permanent URL and it should be right before any money moves, not after.

Today, nothing here applies to anyone. No payment is taken for any Meals server, and no card details have ever reached this project. If you self-host, that stays true forever: the software takes no payments unless whoever runs it configures a processor, and with none configured there is not even an endpoint to take one — there is nothing to pay and nobody to pay it to.

If the hosted service does open, one thing changes and it is worth stating in advance. The processor is now chosen and named here, which is what this section promised to do before any money moved:

The terms and refunds page (/terms on the same server, and TERMS.md in the repository) covers the other side of this: what the service costs, what is promised, and what happens to your data if you stop paying, which is that nothing is deleted.

App Store analytics and crash reports

If you installed the app through the App Store or TestFlight, Apple offers its developer the same opt-in statistics it offers every developer: aggregated usage figures (installs, sessions, active devices, retention) and crash reports. To be clear about what that is and is not:

The developer uses it for exactly what you'd hope: knowing whether the app crashes and roughly how many people use it.

Who is responsible for your data

Whoever runs the server you use. If you self-host, that is you: you are the data controller, and this policy describes what the software does rather than what any particular operator promises.

If you use meals.marcuslab.uk, that server is operated by the author of this project, in the United Kingdom, as a private household instance. It is not a public service, registration on it is closed, and it is not offered for general use. See Contact below for anything about it, including data requests.

Your choices

If you are in the UK or EU, the GDPR rights of access, rectification, erasure, restriction, portability and objection apply against whoever operates your server. On a self-hosted instance those rights are exercised with a database you already control.

Children

Meals is not directed at children and asks for no information about age. It is rated 4+ because it contains nothing unsuitable, not because it is aimed at children.

Changes to this policy

This policy lives in the app's public source repository, so its full history is public. Material changes will be noted in the changelog and the date at the top of this file will change.

Contact

Open an issue at https://github.com/marco308/meals/issues, which reaches the author directly. For anything you'd rather not say in public — including a data request about meals.marcuslab.uk — use GitHub's private vulnerability reporting form, which is private to the two of us and is not only for security reports.

This is a one-person project, not a company with a support desk. Expect a reply within a week.