CrustLab Privacy Policy
Last updated: July 30, 2026
CrustLab is a pizza dough calculator and community app. This policy explains what data the app collects, how it is used, and how users can control or delete their account and associated data.
Data we collect
- Account data: email address, username, password hash, Google sign-in identifier if used, language and unit preferences.
- Profile data: avatar, bio, favorite pizza style and oven type if you add them.
- Recipe and calculator data: dough formulas, ingredient amounts, fermentation settings, baking schedules, saved recipes and copied recipes.
- Community content: posts, photos, recipes attached to posts, comments, ratings, likes, saves, follows, reports and blocks.
- Device data for notifications: Android Firebase Cloud Messaging token and notification preferences.
- Operational data: successful login time and method, coarse authenticated foreground-presence timestamps, and security, upload, moderation, translation and error logs needed to keep the service safe and reliable.
- Advertising data: if you consent to ads, Google may process device, advertising, consent and ad interaction data according to your choices.
How we use data
- To provide login, profiles, recipes, posts, comments, saved items and follows.
- To calculate dough formulas, store recipe preferences and keep baking schedules available in the app.
- To process uploaded images, including virus scanning, image resizing and metadata stripping.
- To send in-app and optional Android push notifications.
- To translate posts, comments and recipes through the server-side translation endpoint and cache translations.
- To prevent abuse, investigate reports and moderate content.
- To debug errors, prevent fraud and maintain service reliability.
Data sharing and processors
CrustLab does not sell personal data. The app uses service providers for hosting and network delivery through Cloudflare, email delivery, Google sign-in, Firebase Cloud Messaging, Firebase Analytics, Google Mobile Ads, image processing, virus scanning and server-side translation. These providers process data only as needed to provide the app.
Account and guest activity
While the app is in the foreground, CrustLab sends a coarse heartbeat no more than once every three minutes. Restricted administrators can see separate signed-in account and signed-out guest counts for the last five minutes and per UTC day, plus successful account login times and methods. For a signed-out visitor, the app creates a cryptographically random token that is replaced each UTC day. It is not derived from hardware, an advertising ID, an account or another device signal. The server stores only its keyed HMAC pseudonym for the current and previous UTC date; only aggregate guest totals remain for up to 400 days. Cloudflare derives an approximate two-character country code from the connection IP. CrustLab stores only that country code with daily activity aggregates for up to 400 days; the activity database does not store the request IP address, city, coordinates, internet provider or user-agent string. Country may be inaccurate when using VPN, Tor, mobile or corporate networks. A guest who later signs in may appear in both separate counts because CrustLab does not link the guest pseudonym to the account. Successful login events are retained for up to 180 days and authenticated daily activity for up to 400 days. Deleting an account removes its linked account activity earlier.
Advertising and analytics
Firebase Analytics is disabled until the user explicitly allows it in the first-launch consent prompt. Users can later enable or disable optional usage analytics from the app's Settings screen. When enabled, Firebase Analytics processes app interaction and device/app information to measure usage and improve CrustLab. CrustLab does not send account IDs or email addresses to Analytics, and Analytics advertising-ID collection and advertising consent remain disabled. Turning analytics off stops future collection and resets local Analytics data. Google Mobile Ads is initialized separately, only after the advertising consent flow confirms that ads may be requested.
Public content
Public posts, public recipes, comments, profile username and avatar can be visible to other CrustLab users. Private recipes are available only to the account owner unless linked to a public post.
Reports are visible only to moderation tools and are used to review abuse, spam or safety issues. Blocking another user may affect what content is shown to you and how other users can interact with you.
Uploads and media safety
Uploaded photos may be checked for malware, decoded, resized, stripped of metadata and stored in a safer serving format. Post uploads are limited to keep the service stable, and comment uploads are limited separately.
Translation
When translation is used, text is sent to the CrustLab backend translation endpoint. The backend may use a configured translation provider and cache translated text to reduce repeated processing.
Security
Passwords are stored as one-way hashes. The mobile app does not store database, Google OAuth, translation provider or Firebase service account secrets. Uploaded images are decoded, resized, stripped of metadata and stored as JPEG files.
Access tokens and refresh sessions are used for login. Refresh sessions can be revoked server-side, including when a password is changed or an account is deleted.
Account deletion
You can delete your account in the app from Settings → Account settings → Account deletion. You can also use the public instructions at /account-deletion.
Account deletion removes the app account, login credentials, sessions, login and activity records, notification device tokens, posts, comments, recipes, saved items, follows and associated uploaded media where technically available. Some minimal operational records may be retained for security, fraud prevention, troubleshooting, legal compliance or backups for a limited period.
Contact
Privacy and deletion requests: [email protected]