Last updated: 17/04/2026
This policy describes what personal data Tandem ("the Service") collects, why, and how it is handled.
When you register a local account, we store your email address, a display name (login name), and a password hash (Argon2). When you sign in via GitHub OAuth, we store the provider account identifier and any profile data GitHub returns (display name, email, avatar URL). We do not store your GitHub password or OAuth token long-term.
Each time you sign in, we create a server-side session record containing a session token, your IP address, your browser's User-Agent string, and an expiry timestamp. Sessions expire after seven days.
Notes you create — including titles, metadata, and collaborative document state — are stored in our database. Document bodies are stored as binary CRDT (Yjs/Yrs) state vectors, not plain text.
We set two cookies:
We do not use advertising, analytics, or tracking cookies. Both cookies are strictly necessary for the operation of the Service.
Application logs may contain request metadata (timestamps, URLs, status codes). Sensitive fields — request bodies containing passwords, cookie headers, and authorization headers — are redacted before logging. OAuth tokens and third-party user profiles are not logged. We run self-hosted Prometheus and Grafana for operational metrics; no data is sent to third-party analytics or monitoring services.
We do not integrate third-party analytics (Google Analytics, Segment, etc.), advertising networks, or payment processors. There is no client-side telemetry, no local-storage tracking, and no fingerprinting beyond the User-Agent string stored in your session record.
When you create an account, you are asked to confirm that you have read and accept this Privacy Policy and the Terms of Service. This confirmation is required before your account can be created.
The only external service the application communicates with is GitHub, and only when you choose to sign in via GitHub OAuth. In that flow, GitHub receives a standard OAuth authorization request and returns your profile information. GitHub's own privacy policy governs its handling of that data.
All account and note data is stored in a self-hosted PostgreSQL database. Passwords are hashed with Argon2 and never stored or logged in cleartext. Session secrets and database credentials are managed via Docker secrets files. Communication between the browser and the server passes through an Nginx reverse proxy configured with TLS.
You can export your personal data at any time from your Account settings. The export includes:
The export is provided as a JSON file.
You can delete your account at any time from your Account settings. Account deletion cascades to:
Deletion is permanent and cannot be undone.
The Service is not directed at children. We do not knowingly collect data from children.
We will update the "Last updated" date at the top of this page when we make material changes. Continued use of the Service after changes constitutes acceptance.
For questions about this policy, contact us at myakoven@student.42berlin.de.