Created
July 23, 2026 18:49
-
-
Save parth1504/857df1698508abe2e6615274af3d9c1f to your computer and use it in GitHub Desktop.
Privacy policy
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8" /> | |
| <meta name="viewport" content="width=device-width, initial-scale=1" /> | |
| <title>PostureGuard — Privacy Policy</title> | |
| <style> | |
| :root { | |
| color-scheme: light dark; | |
| --bg: #ffffff; | |
| --text: #1a1a1a; | |
| --muted: #666; | |
| --accent: #4a5cff; | |
| --border: #e5e5eb; | |
| --surface: #f7f7fa; | |
| } | |
| @media (prefers-color-scheme: dark) { | |
| :root { | |
| --bg: #0a0a0f; | |
| --text: #e6e6f0; | |
| --muted: #8a8aa0; | |
| --accent: #6c7cff; | |
| --border: #1e1e2e; | |
| --surface: #14141f; | |
| } | |
| } | |
| * { box-sizing: border-box; } | |
| body { | |
| margin: 0; | |
| background: var(--bg); | |
| color: var(--text); | |
| font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, sans-serif; | |
| line-height: 1.6; | |
| font-size: 16px; | |
| } | |
| main { | |
| max-width: 720px; | |
| margin: 0 auto; | |
| padding: 48px 24px 96px; | |
| } | |
| header { | |
| border-bottom: 1px solid var(--border); | |
| padding-bottom: 16px; | |
| margin-bottom: 32px; | |
| } | |
| h1 { | |
| margin: 0 0 4px 0; | |
| font-size: 28px; | |
| letter-spacing: -0.3px; | |
| } | |
| .updated { | |
| color: var(--muted); | |
| font-size: 14px; | |
| } | |
| h2 { | |
| margin: 32px 0 10px 0; | |
| font-size: 18px; | |
| color: var(--accent); | |
| letter-spacing: 0.2px; | |
| } | |
| p, li { margin: 8px 0; } | |
| ul { padding-left: 20px; } | |
| strong { color: var(--text); } | |
| code { | |
| font-family: ui-monospace, SFMono-Regular, Menlo, monospace; | |
| background: var(--surface); | |
| border: 1px solid var(--border); | |
| padding: 1px 6px; | |
| border-radius: 4px; | |
| font-size: 13px; | |
| } | |
| a { color: var(--accent); } | |
| .callout { | |
| background: var(--surface); | |
| border: 1px solid var(--border); | |
| border-radius: 8px; | |
| padding: 16px 18px; | |
| margin: 24px 0; | |
| font-size: 15px; | |
| } | |
| footer { | |
| margin-top: 48px; | |
| padding-top: 16px; | |
| border-top: 1px solid var(--border); | |
| color: var(--muted); | |
| font-size: 13px; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <main> | |
| <header> | |
| <h1>PostureGuard Privacy Policy</h1> | |
| <div class="updated">Last updated: 2026-07-23</div> | |
| </header> | |
| <div class="callout"> | |
| <strong>Short version:</strong> your webcam video and pose data never | |
| leave your browser. The only thing that ever gets sent anywhere is a | |
| short text alert to a public ntfy.sh topic that you choose. No | |
| accounts, no analytics, no tracking. | |
| </div> | |
| <h2>What PostureGuard does</h2> | |
| <p> | |
| PostureGuard is a Chrome extension that uses your webcam to detect | |
| when you're slouching and sends a text alert to a | |
| <a href="https://ntfy.sh" rel="noopener">ntfy.sh</a> topic you | |
| configure. The alert can be received by a phone, a Garmin watch, | |
| or any other ntfy client to buzz you into fixing your posture. | |
| </p> | |
| <h2>What we collect from you</h2> | |
| <p><strong>Nothing.</strong> There is no server we operate, no account | |
| to create, no analytics or telemetry. We have no way to know that | |
| you're using the extension.</p> | |
| <h2>How your webcam is used</h2> | |
| <ul> | |
| <li> | |
| The video stream from your webcam is processed | |
| <strong>entirely inside your browser</strong> using MediaPipe | |
| Pose Landmarker, which runs locally as WebAssembly. | |
| </li> | |
| <li> | |
| Video frames are <strong>never uploaded</strong>, never stored, | |
| and never sent to any server — including ours or Google's. | |
| </li> | |
| <li> | |
| Pose landmarks (the positions of your ears and shoulders) exist | |
| only in the memory of the extension's monitor tab. They are | |
| discarded on every frame. | |
| </li> | |
| <li> | |
| You can revoke camera permission at any time via Chrome's | |
| site-settings page for the extension. | |
| </li> | |
| </ul> | |
| <h2>What gets sent to ntfy.sh</h2> | |
| <p> | |
| When a slouch is detected and the alert cooldown has elapsed, the | |
| extension makes a single <code>HTTP POST</code> to | |
| <code>https://ntfy.sh/<your-topic></code>. The body is a short | |
| text string such as <em>"Slouch detected — deviation 17.3°"</em>. | |
| Nothing else is sent — no images, no landmark coordinates, no | |
| identifiers, no headers beyond a title and priority tag. | |
| </p> | |
| <p> | |
| <strong>ntfy.sh topics are public within the topic name.</strong> | |
| Anyone who knows your topic string can read the alerts you publish | |
| to it. Pick an unguessable topic. PostureGuard treats the topic as | |
| a shared secret and stores it only in your browser's local | |
| extension storage. | |
| </p> | |
| <p> | |
| ntfy.sh's own privacy practices are documented at | |
| <a href="https://docs.ntfy.sh/privacy/" rel="noopener">docs.ntfy.sh/privacy</a>. | |
| PostureGuard has no affiliation with ntfy.sh; it is used only as | |
| a general-purpose message broker. | |
| </p> | |
| <h2>What is stored on your device</h2> | |
| <ul> | |
| <li> | |
| Your <strong>settings</strong> — ntfy topic, sensitivity, alert | |
| delay, cooldown — are stored using Chrome's | |
| <code>chrome.storage.local</code> API. They stay on your device | |
| and are removed when you uninstall the extension. | |
| </li> | |
| <li> | |
| A <strong>session log</strong> (last ~50 events) exists only in | |
| the memory of the monitor tab and is discarded when you close | |
| that tab. | |
| </li> | |
| <li> | |
| No cookies, no IndexedDB, no service-worker cache of user data. | |
| </li> | |
| </ul> | |
| <h2>Permissions we request</h2> | |
| <ul> | |
| <li> | |
| <code>notifications</code> — to show a browser notification when | |
| a slouch is detected, in addition to the ntfy push. | |
| </li> | |
| <li> | |
| <code>storage</code> — to persist your settings between browser | |
| sessions. | |
| </li> | |
| <li> | |
| <strong>Camera</strong> — asked at runtime the first time you | |
| press <em>Start Monitoring</em>. Required for pose detection. | |
| </li> | |
| </ul> | |
| <h2>Third parties</h2> | |
| <ul> | |
| <li> | |
| <a href="https://ntfy.sh" rel="noopener">ntfy.sh</a>, when you | |
| configure a topic and PostureGuard sends slouch alerts. | |
| </li> | |
| <li> | |
| The MediaPipe library and pose model are | |
| <strong>bundled locally</strong> inside the extension package | |
| and do not fetch anything at runtime. | |
| </li> | |
| </ul> | |
| <h2>Children</h2> | |
| <p> | |
| PostureGuard is a productivity utility not directed at children | |
| under 13. We do not knowingly collect any information from | |
| anyone, including children. | |
| </p> | |
| <h2>Changes to this policy</h2> | |
| <p> | |
| If future versions of PostureGuard begin transmitting or storing | |
| new categories of data, this page will be updated and the | |
| "Last updated" date at the top will change. Continued use of the | |
| extension after a change constitutes acceptance. | |
| </p> | |
| <h2>Contact</h2> | |
| <p> | |
| Source code and issues: | |
| <a href="https://github.com/parth1504/thirdeye" rel="noopener"> | |
| github.com/parth1504/thirdeye | |
| </a>. | |
| </p> | |
| <footer> | |
| PostureGuard is open source and provided as-is with no warranty. | |
| </footer> | |
| </main> | |
| </body> | |
| </html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment