Skip to content

Instantly share code, notes, and snippets.

@kirmartuk
Created March 25, 2026 17:39
Show Gist options
  • Select an option

  • Save kirmartuk/aad7adc739b9c00c66aa678a4ac8e627 to your computer and use it in GitHub Desktop.

Select an option

Save kirmartuk/aad7adc739b9c00c66aa678a4ac8e627 to your computer and use it in GitHub Desktop.
Calaura privacy policy
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>CalAura — Privacy Policy</title>
<style>
:root {
color-scheme: light dark;
--text: #1a1a1a;
--muted: #555;
--border: #e0e0e0;
}
@media (prefers-color-scheme: dark) {
:root {
--text: #e8e8e8;
--muted: #a8a8a8;
--border: #333;
}
}
body {
font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, sans-serif;
line-height: 1.55;
max-width: 44rem;
margin: 0 auto;
padding: 1.5rem 1.25rem 3rem;
color: var(--text);
background: Canvas;
}
h1 { font-size: 1.75rem; margin-bottom: 0.25rem; }
h2 { font-size: 1.15rem; margin-top: 1.75rem; border-bottom: 1px solid var(--border); padding-bottom: 0.35rem; }
h3 { font-size: 1rem; margin-top: 1.25rem; }
.meta { color: var(--muted); font-size: 0.95rem; margin-bottom: 1.5rem; }
ul { padding-left: 1.25rem; }
li { margin: 0.35rem 0; }
a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.placeholder { background: rgba(128, 128, 128, 0.15); padding: 0.05em 0.35em; border-radius: 2px; }
</style>
</head>
<body>
<h1>Privacy Policy</h1>
<p class="meta"><strong>CalAura</strong> — Last updated: March 25, 2025</p>
<h2>1. Who we are</h2>
<p>The operator of the <strong>CalAura</strong> mobile application (hereinafter “we”, “us”, “operator”): <span class="placeholder">[legal name or individual entrepreneur / company name]</span>.</p>
<p>For privacy-related inquiries: <span class="placeholder">[privacy contact email]</span>.</p>
<p>The app is distributed via <strong>Google Play</strong> under the name <strong>CalAura</strong> (package identifier: <code>dad.dev.calaura</code> — update if your listing differs).</p>
<h2>2. Summary</h2>
<p>CalAura helps you track nutrition and activity. Most data is stored <strong>on your device</strong>. Our servers receive only what is needed for <strong>food recognition and related AI features</strong> (images and/or text you send). If analytics is enabled, <strong>Yandex AppMetrica</strong> may process usage statistics. Access to <strong>steps</strong> is only possible if you explicitly allow it through <strong>Health Connect</strong>.</p>
<h2>3. Data we process</h2>
<h3>3.1. Information you provide in the app</h3>
<ul>
<li>Food entries (name, calories, macros, portion weight where applicable, date and time).</li>
<li>Workouts (name, duration, calories burned, date and time).</li>
<li>Daily goals (calories, macros, steps).</li>
<li>Profile and settings you save in the app (if applicable).</li>
<li><strong>Photos of meals</strong> when you use camera-based recognition — they are sent to the server for processing (see Section 4).</li>
<li><strong>Text descriptions of food</strong> or AI-assisted edits — sent to the server as part of the API request.</li>
</ul>
<h3>3.2. Device and integration data</h3>
<ul>
<li><strong>Step counts</strong> for the selected day are read via <strong>Health Connect</strong> only with your permission; they are not uploaded to our servers and are used locally in the app.</li>
<li><strong>Technical data</strong>: device type, OS version, interface language (including the <code>Accept-Language</code> header when calling the API), network requests to our backend.</li>
</ul>
<h3>3.3. Local storage</h3>
<p>Food logs, workouts, goals, and related data are stored <strong>locally</strong> by default (app database, DataStore, or equivalent). Backup and restore depend on your Android and Google account settings.</p>
<h2>4. Data sent to our servers (backend)</h2>
<p>When you use <strong>photo food recognition</strong>, <strong>text parsing</strong>, or <strong>AI-assisted edits</strong>, the app sends data to the backend URL you configure (or our deployed server):</p>
<ul>
<li>an <strong>image file</strong> (JPEG/PNG) and/or a <strong>JSON body</strong> with a food description or edit instruction;</li>
<li>HTTP headers required for the API to function.</li>
</ul>
<p>On the server, images and text may be passed to an <strong>AI provider</strong> (e.g. a multimodal language model) to estimate dish name and nutrition values. We do not use this for public display of your photos; retention on our infrastructure and at the AI provider depends on server configuration — contact us for current practices.</p>
<p>Other data (full diet history, workouts, goals) is generally <strong>not synchronized</strong> with the server unless a future version explicitly adds such a feature.</p>
<h2>5. Analytics (AppMetrica)</h2>
<p>If the app build includes a non-empty <strong>AppMetrica</strong> API key (Yandex), we may collect <strong>de-identified or pseudonymous</strong> analytics: in-app events, device and session parameters as defined by the AppMetrica SDK.</p>
<p>Processing is governed by Yandex policies: <a href="https://yandex.com/legal/confidential/" rel="noopener noreferrer">https://yandex.com/legal/confidential/</a></p>
<p>You can adjust ad personalization and related settings via your device and Google account controls.</p>
<p><em>If analytics is disabled (empty API key in production), this section may be omitted or shortened in your published policy.</em></p>
<h2>6. App permissions</h2>
<ul>
<li><strong>Internet</strong> — communication with the backend and, when configured, analytics endpoints.</li>
<li><strong>Camera</strong> — capturing meals for recognition (only when you choose to).</li>
<li><strong>Health Connect (read steps)</strong> — only after you grant permission in the system dialog.</li>
</ul>
<h2>7. Legal bases (EEA, UK, and similar regimes)</h2>
<ul>
<li><strong>Performance of the service</strong> and your request to process food recognition and AI features.</li>
<li><strong>Consent</strong> — for camera, Health Connect, and analytics where consent is required.</li>
<li><strong>Legitimate interests</strong> — minimal technical logging for security and reliability (e.g. server logs).</li>
</ul>
<h2>8. Third parties</h2>
<ul>
<li>Hosting or cloud provider for the backend (if used).</li>
<li><strong>AI provider</strong> connected by the backend for image and text analysis.</li>
<li><strong>Yandex (AppMetrica)</strong> — when analytics is enabled.</li>
<li><strong>Google Play</strong> — distribution and related processing under Google’s terms.</li>
</ul>
<p>We do not sell your personal data.</p>
<h2>9. Retention</h2>
<ul>
<li><strong>On device</strong> — until you delete data in the app or uninstall the app.</li>
<li><strong>On our servers</strong> — operational logs and temporary files as needed; details available on request (see Section 1).</li>
<li><strong>AppMetrica</strong> — per Yandex policy.</li>
</ul>
<h2>10. Security</h2>
<p>We apply reasonable organizational and technical measures (e.g. HTTPS when the server is configured correctly, restricted access to API keys). No method of transmission over the Internet is 100% secure.</p>
<h2>11. Your rights</h2>
<p>Depending on your location, you may have the right to <strong>access, rectify, erase, restrict processing, object, data portability</strong>, and to <strong>withdraw consent</strong> where processing is consent-based. Contact <span class="placeholder">[privacy contact email]</span>. You may lodge a complaint with a supervisory authority in your country.</p>
<h2>12. Children</h2>
<p>The app is not directed at children under <span class="placeholder">[13 / 16 — set per your market]</span>. If you believe a child has provided us with data, contact us and we will take appropriate steps to delete it.</p>
<h2>13. International transfers</h2>
<p>Processing on our servers, at AppMetrica, or at AI providers may occur <strong>outside your country</strong>. Where required by law, we rely on appropriate safeguards (e.g. standard contractual clauses).</p>
<h2>14. Changes</h2>
<p>We may update this policy. The current version will be available at <span class="placeholder">[public URL or Google Play Data safety / app listing link]</span>. For material changes, we will notify you by reasonable means (e.g. in-app notice or Play Store update notes).</p>
<h2>15. Contact</h2>
<p><span class="placeholder">[Operator name]</span><br>
<span class="placeholder">[Privacy email]</span><br>
<span class="placeholder">[Optional: postal address, website]</span></p>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment