Cookies and on-device storage

This is a translation. The Czech version is binding. · Čeština

The short version

This website, the app and the booking page for clients set no cookies. Cookies are set only by the sign-in and sync server, and there are three of them — all technical: one carries you through signing in, one recognises your device, one hands the sign-in from the browser over to the installed app. No analytics, no advertising or tracking cookies, no third-party cookies. That is why you will not find a cookie banner here: consent does not apply to storage that is technically necessary.

But cookies are not the whole story, and “we do not use cookies” would be a truth told too briefly. A few small things the website and the app do store on your device even without cookies, and a few things do go out — but only when you tap yourself. Both are described below.

Tricho.app runs on four addresses

Three cookies on sync.dev.tricho.app

NameWhat forHow longAttributes
tricho_oauth Holds one pass through signing in with Google or Apple together — so that the return from the provider is matched to the right request and cannot be forged. It is deleted as soon as sign-in completes. 10 minutes HttpOnly, Secure, SameSite=Lax (for sign-in with Apple SameSite=None, because Apple sends the return from another domain)
tricho_handoff When you sign in in the browser (the “Get started” page), a cookie with a one-time ticket lets the installed app take over the sign-in without you retyping anything. It contains only a random ticket, not you and not your data. It is deleted after the hand-over. 30 minutes HttpOnly, Secure, SameSite=Lax
tricho_device Recognises your device so that the next sign-in does not create it as a new one and use up the device limit of your plan. It contains nothing about you or your data — only a random device identifier. It is deleted when you sign out. 365 days HttpOnly, Secure, SameSite=Lax

All of them are HttpOnly, so no script in the browser can read them, and Secure, so they are sent only over an encrypted connection. The admin tool (for the operator only) has no cookie of its own; its token lives only in the memory of the tab. Connecting Google Calendar does not add any cookie either.

All three are technically necessary to provide the service you asked for, and consent does not apply to them under § 89(3) of Czech Act No. 127/2005 Coll., on electronic communications, and under the European rules (ePrivacy). For tricho_device the reasoning is simple: without recognising the device, the device limit of the plan you ordered cannot be enforced, and that limit is part of the service. A year is because the device is meant to stay “the same one” even after months without signing in; the cookies serve nothing other than signing in and recognising the device.

What the website stores on your device

Not cookies — localStorage and sessionStorage. Legally, though, it is the same thing: § 89(3) of Act No. 127/2005 Coll. speaks of “storing data in terminal equipment”, not of cookies. Here is everything this website (the apex) stores:

KeyWhat it holdsWhen it is createdHow long
tricho-theme light / dark — the appearance you chose with the switch Only when you switch the appearance. Without that we follow your system setting and store nothing. Until you delete it (by clearing the site data in your browser)
install-banner-dismissed 1 — you hid the bar with installation instructions Only when you close the bar Until you delete it
tricho-account-jwt, tricho-account-handoff, tricho-account-return, tricho-account-intent, tricho-zacit-device (sessionStorage) Only in My account and on the “Get started” page: a short-lived account sign-in token (valid for an hour), a one-time ticket for handing the sign-in over to the app, where you wanted to return, what you wanted to do, and the name of the device you are signing in. These pages are neither indexed nor cached. When you sign in to My account or start signing in Only in this tab — it disappears when you close the tab

The first two are your choices, stored so that the website does not ask you a second time. We rely on the view that interface preferences you chose yourself are technically necessary for a function you asked for (see Opinion 04/2012 of the Article 29 Working Party, WP 194, on the cookie consent exemption). None of them contains an identifier, none sends anything to a server, and nobody can be recognised by them. The data in the tab serve only to let the sign-in survive the trip through Google or Apple; none of it has anything to do with the contents of your notebook.

What is loaded from elsewhere

Nothing on this website. We serve all fonts from our own addresses; there is no request to a third party. No embedded maps, videos or scripts. An open page of this website does not touch a single foreign server.

The first exception is the “Let me know” form at the end of the home page — a field where you can leave your e-mail so that we get in touch when something substantial is added. The submission goes straight from your browser to sibforms.com, which is Brevo (formerly Sendinblue), a French service in which we keep that address. No Brevo script runs on the page and nothing is loaded in advance: the request goes out only at the moment you tap the button yourself. Along with the e-mail, your IP address also reaches Brevo, because it cannot work otherwise. The legal basis is your consent (Article 6(1)(a) GDPR) — you give it by submitting, and you withdraw it with the unsubscribe link in every message. More in the privacy policy.

The second is the booking page that a client opens. There, for protection against bots, the Cloudflare Turnstile check is loaded — a script and a small window from the domain challenges.cloudflare.com. It is the only foreign address that page may contact, and the Content-Security-Policy header enforces this. In doing so, Cloudflare sees the IP address and browser details. We add no cookies or storage of our own on the page side.

What the app stores on your device

The app at app.dev.tricho.app is a different origin and a different story. It stores on your device the data it needs in order to work at all — even without the internet. These are not cookies; they are browser storages that are not sent anywhere:

None of this is used for tracking and none of it is sent anywhere by itself. Clearing the site data in the browser (or uninstalling the app) removes it — including your data that has not been backed up, so take care.

Who the app talks to

The app may contact only a few addresses, and this is enforced by the Content-Security-Policy header, which the browser upholds for us:

What is not here

So that it is said from the other side too: no analytics (neither Google Analytics, nor Plausible, nor our own), no pixel, no advertising script, no embedded maps, videos or fonts from elsewhere. The foreign addresses this website may touch are only two: Brevo for that form and our own sync server. An analytics script would not load here even if we put it there by mistake.

One thing remains that we cannot merely promise: the website and the app are delivered by Cloudflare Pages, and depending on account settings Cloudflare can add its own operational cookie (typically __cf_bm with bot protection). It is not turned on in our account. Verified on 3 September 2026 at the addresses dev.tricho.app, app.dev.tricho.app and sync.dev.tricho.app — the server's response contained no set-cookie header at all, so not a single cookie from Cloudflare.

How to check

You do not have to trust us. Open the developer tools in your browser (F12), the Application or Storage tab, and look at the cookies and storage for each of the addresses. You will find exactly what is written above.

Questions

Write to [email protected].

Version 2026-10-31. Effective: 31 October 2026.