1<!doctype html> 2<html lang="en"> 3 <head> 4 <meta charset="utf-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1" /> 6
6<script> 7 try { 8 var p = JSON.parse(localStorage.getItem('monkeio-preferences') || '{}'); 9 var t = p.theme; 10 if (['obsidian','terminal','paper','slate','sketch','ristretto','mono'].includes(t)) { 11 document.documentElement.dataset.colorTheme = t; 12 } 13 // Load only the font needed for the active theme. 14 // terminal, slate, mono use system fonts â no Google Fonts needed. 15 var f = { 16 obsidian: 'https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap', 17 paper: 'https://fonts.googleapis.com/css2?family=Young+Serif&display=swap', 18 sketch: 'https://fonts.googleapis.com/css2?family=Patrick+Hand&display=swap', 19 ristretto: 'https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,500;0,600;1,400&display=swap' 20 }; 21 var url = f.hasOwnProperty(t) ? f[t] : (t ? null : f.obsidian); 22 if (url) { 23 var l = document.createElement('link'); 24 l.rel = 'preload'; 25 l.as = 'style'; 26 l.href = url; 27 l.onload = function() { this.rel = 'stylesheet'; }; 28 document.head.appendChild(l); 29 } 30 } catch (e) {} 31 </script>
31 32 <meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)" /> 33 <meta name="theme-color" content="#09090b" media="(prefers-color-scheme: dark)" /> 34 <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> 35 <link rel="preconnect" href="https://fonts.googleapis.com" /> 36 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> 37 38 <link href="./_app/immutable/assets/charts.C7Al86Hp.css" rel="stylesheet"> 39 <link href="./_app/immutable/assets/0.C8DCMTwK.css" rel="stylesheet"><!--12qhfyh--><link rel="icon" href="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='64'%20height='64'%20viewBox='0%200%2064%2064'%3e%3ctitle%3eDeepwork%20favicon%3c/title%3e%3ccircle%20cx='32'%20cy='32'%20r='32'%20fill='oklch(0.795%200.184%2086.047)'%20/%3e%3c/svg%3e"/><!----><!--18eq0vv--><!--[!--><!--]--> <!---->
39<script>(function setInitialMode({ defaultMode = "system", themeColors, darkClassNames = ["dark"], lightClassNames = [], defaultTheme = "", modeStorageKey = "mode-watcher-mode", themeStorageKey = "mode-watcher-theme" }) { 40 const rootEl = document.documentElement; 41 const mode = localStorage.getItem(modeStorageKey) ?? defaultMode; 42 const theme = localStorage.getItem(themeStorageKey) ?? defaultTheme; 43 const light = mode === "light" || mode === "system" && window.matchMedia("(prefers-color-scheme: light)").matches; 44 if (light) { 45 if (darkClassNames.length) 46 rootEl.classList.remove(...darkClassNames.filter(Boolean)); 47 if (lightClassNames.length) 48 rootEl.classList.add(...lightClassNames.filter(Boolean)); 49 } else { 50 if (lightClassNames.length) 51 rootEl.classList.remove(...lightClassNames.filter(Boolean)); 52 if (darkClassNames.length) 53 rootEl.classList.add(...darkClassNames.filter(Boolean)); 54 } 55 rootEl.style.colorScheme = light ? "light" : "dark"; 56 if (themeColors) { 57 const themeMetaEl = document.querySelector('meta[name="theme-color"]'); 58 if (themeMetaEl) { 59 themeMetaEl.setAttribute("content", mode === "light" ? themeColors.light : themeColors.dark); 60 } 61 } 62 if (theme) { 63 rootEl.setAttribute("data-theme", theme); 64 localStorage.setItem(themeStorageKey, theme); 65 } 66 localStorage.setItem(modeStorageKey, mode); 67})({"defaultMode":"light","darkClassNames":["dark"],"lightClassNames":[],"defaultTheme":"","modeStorageKey":"mode-watcher-mode","themeStorageKey":"mode-watcher-theme"});</script>
67<!----><!----><!--gsrl61--><meta name="description" content="Learn how Monkeio handles your data, Google OAuth sign-in, and magic link authentication. We only collect what's needed for your account."/> <link rel="canonical" href="https://monkeio.com/privacy"/> <meta property="og:title" content="Privacy Policy | Monkeio"/> <meta property="og:description" content="Learn how Monkeio handles your data, Google OAuth sign-in, and magic link authentication. We only collect what's needed for your account."/> <meta property="og:type" content="website"/> <meta property="og:url" content="https://monkeio.com/privacy"/> <meta property="og:image" content="https://monkeio.com/og-image.png"/> <meta property="og:image:width" content="1200"/> <meta property="og:image:height" content="630"/> <meta property="og:site_name" content="Monkeio"/> <meta property="og:locale" content="en_US"/> <!--[!--><!--]--> <meta name="twitter:card" content="summary_large_image"/> <meta name="twitter:title" content="Privacy Policy | Monkeio"/> <meta name="twitter:description" content="Learn how Monkeio handles your data, Google OAuth sign-in, and magic link authentication. We only collect what's needed for your account."/> <meta name="twitter:image" content="https://monkeio.com/og-image.png"/> <!--[!--><meta name="robots" content="index, follow"/><!--]--><!----><title>Privacy Policy | Monkeio</title> 68 </head> 69 <body data-sveltekit-preload-data="hover"> 70 <div style="display: contents"><!--[--><!--[--><!----><!--[!--><!--]--><!----> <section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false" class="svelte-7oacl3"><!--[!--><!--]--></section><!----> <!--[!--><!--]--><!----> <div class="app-shell min-h-screen bg-background text-foreground"><!--[!--><!----><!----> <header class="mx-auto max-w-4xl px-4 pt-12 pb-8"><div class="flex items-center justify-between"><a href="./" class="flex items-center"><!--[--><svg class="w-10 h-10 text-primary" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120" fill="currentColor" aria-label="Deep Work Logo"><path d="M102.64,78.71c1.06,1.72,2.14,3.39,3.16,5.1,2.25,3.77,3.15,7.8,2.02,12.11-.62,2.37-1.75,4.45-3.8,5.99-3.2,2.42-6.81,3.91-10.65,4.87-1.5,.37-2.8,.89-3.96,2.02-2.41,2.36-5.57,3.24-8.79,3.8-4.84,.85-9.29-.65-13.6-2.58-4.92-2.21-9.62-4.81-13.91-8.13-4.09-3.16-8.78-5.21-13.58-6.98-5.59-2.06-10.7-4.88-14.77-9.26-1.81-1.95-3.3-4.24-4.75-6.49-.66-1.02-1.34-1.87-2.39-2.47-7.69-4.43-10.91-11.5-11.92-19.97-.43-3.61-.17-7.15,.47-10.69,.21-1.15,.49-2.3,.88-3.4,1.36-3.86,4.15-5.95,8.28-5.97,1.6,0,2.41-.6,3.3-1.88,1.88-2.71,3.99-5.28,6.14-7.78,3.62-4.22,7.88-7.73,12.65-10.56,6.94-4.12,14.33-7.02,22.3-8.54,3.64-.69,7.26-.8,10.92-.74,6.74,.12,12.96,2.06,18.41,5.99,2.27,1.64,4.3,3.7,6.12,5.84,5.29,6.18,10.45,12.48,15.62,18.76,2.53,3.06,4.64,6.3,5.08,10.44,.42,3.91-.62,7.35-2.63,10.6-.4,.64-.86,1.25-1.36,1.82-1.2,1.38-1.73,2.89-2.04,4.77-.59,3.6-1.93,7.05-4.34,9.94-.92,1.11-1.86,2.2-2.85,3.38Zm-3.28,21.3c-2.06-.37-3.74-.79-5.44-.96-4.64-.49-8.82-2.19-12.67-4.72-1.01-.66-1.9-1-3.04-.33-.75,.43-1.51,.15-2.02-.53-.58-.77-.41-1.54,.16-2.28,1.68-2.17,3.14-2.39,5.43-.81,.4,.27,.78,.57,1.18,.84,2.4,1.67,5.04,2.85,7.83,3.67,3.6,1.06,7.36,1.07,11.06,1.4,.46,.04,.93-.11,1.61-.21,.19-.95,.43-1.86,.56-2.8,.46-3.47-1.18-6.29-2.86-9.09-.92-1.54-1.93-3.03-2.8-4.59-.83-1.5-.62-2.27,.63-3.47,.71-.68,1.34-1.43,2.13-2.28-.6-.23-.85-.32-1.11-.42-1.85-.67-2.94-2.19-2.9-4.05,.04-2.02,1.64-4.45,3.28-4.87,2.09-.54,3.62,.21,4.52,2.47,.98-1.54,1.28-2.81,.99-4.34-.81-4.23-7.79-7.26-12.15-3.36-1.99,1.78-2.94,1.6-4.54-.54-2.58-3.46-5.89-5.7-10.22-6.47-6.23-1.11-12.95,2.76-15,8.74-1.05,3.08-.31,5.68,1.78,8.03,1.86,2.08,4.24,3.24,6.85,4.06,2.28,.71,2.73,2.34,1.3,4.27-.25,.33-.58,.6-.83,.92-2.34,3.02-3.82,6.44-4.1,10.23-.42,5.57,3.06,11.03,8.51,13.24,7.39,3,14.57,2,21.89-1.77ZM9.52,51.65c.2,6.72,1.24,11.95,4.57,16.46,3.7,5.02,8.85,7.26,14.98,7.51,1.17,.05,1.83-.38,1.99-1.57,.25-1.84,.75-3.68,.74-5.52-.07-8.44-3.11-15.89-7.99-22.64-1.3-1.8-3.04-3.24-5.05-4.22-3.49-1.7-7.16-1.15-8.08,3.46-.51,2.56-.92,5.13-1.16,6.51Z"></path><path d="M81.78,64.31c.11,3.09-2.6,4.66-4.78,4.64-2.57-.02-4.57-2.31-4.51-4.97,.06-2.52,2.18-4.56,4.71-4.52,2.63,.04,4.61,2.15,4.58,4.85Z"></path><path d="M89.11,79.86c-.05-1.31,.28-2.07,1.16-2.36,.89-.29,1.63,.17,2.06,.94,.36,.65,.63,1.37,.85,2.08,.28,.92-.11,1.62-.95,2.03-.78,.38-1.56,.16-2.01-.5-.53-.77-.86-1.68-1.11-2.2Z"></path><path d="M98.18,80.99c-.52,.58-.91,1.35-1.49,1.56-.48,.17-1.42-.16-1.75-.58-.53-.67-.92-1.58-.99-2.43-.05-.52,.48-1.37,.97-1.59,.48-.22,1.48-.06,1.82,.32,.61,.68,.91,1.65,1.44,2.72Z"></path><path d="M20.27,49.47c1.24,.17,2.7,.51,3.52,2.03,.42,.78,.57,1.62-.17,2.28-.7,.62-1.52,.56-2.29,.08-.23-.14-.41-.38-.64-.52-.89-.51-1.6-.2-1.85,.81-.08,.33-.1,.7-.05,1.03,.55,3.38,1.34,6.65,4.31,8.87,.28,.21,.57,.4,.79,.66,.62,.71,.72,1.47,.08,2.24-.63,.75-1.33,.86-2.19,.36-2.65-1.51-4.35-3.82-5.37-6.61-.78-2.14-1.27-4.37-1.07-6.69,.24-2.85,2.01-4.59,4.95-4.53Z"></path></svg><!--]--><!----></a> <!----><!--$s1--><!--[!--><button data-slot="dropdown-menu-trigger" class="focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium outline-none transition-all focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50
70size-8" id="bits-s1" aria-haspopup="menu" aria-expanded="false" data-state="closed" data-dropdown-menu-trigger="" type="button"><svg xmlns="http://www.w3.org/2000/svg" role="img" width="1em" height="1em" fill="currentColor" viewBox="0 0 256 256" class="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 !transition-all dark:-rotate-90 dark:scale-0"><!--[!--><!--]--><rect width="256" height="256" fill="none"></rect><!--[!--><!--[!--><!--[!--><!--[!--><!--[--><path d="M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm72,88a64,64,0,1,1-64-64A64.07,64.07,0,0,1,192,128Zm-16,0a48,48,0,1,0-48,48A48.05,48.05,0,0,0,176,128ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z"></path><!--]--><!--]--><!--]--><!--]--><!--]--></svg><!----> <svg xmlns="http://www.w3.org/2000/svg" role="img" width="1em" height="1em" fill="currentColor" viewBox="0 0 256 256" class="absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 !transition-all dark:rotate-0 dark:scale-100"><!--[!--><!--]--><rect width="256" height="256" fill="none"></rect><!--[!--><!--[!--><!--[!--><!--[!--><!--[--><path d="M233.54,142.23a8,8,0,0,0-8-2,88.08,88.08,0,0,1-109.8-109.8,8,8,0,0,0-10-10,104.84,104.84,0,0,0-52.91,37A104,104,0,0,0,136,224a103.09,103.09,0,0,0,62.52-20.88,104.84,104.84,0,0,0,37-52.91A8,8,0,0,0,233.54,142.23ZM188.9,190.34A88,88,0,0,1,65.66,67.11a89,89,0,0,1,31.4-26A106,106,0,0,0,96,56,104.11,104.11,0,0,0,200,160a106,106,0,0,0,14.92-1.06A89,89,0,0,1,188.9,190.34Z"></path><!--]--><!--]--><!--]--><!--]--><!--]--></svg><!----> <span class="sr-only">Toggle theme</span><!----></button><!--]--><!----><!----><!----> <!----><!--[!--><!--]--><!----><!----><!----><!----><!----></div></header> <main class="mx-auto max-w-2xl px-4 pb-24"><div class="mb-8"><a href="./signin" class="text-sm text-muted-foreground underline underline-offset-2 hover:text-foreground transition-colors">â Back to sign in</a></div> <div class="space-y-2 mb-10"><h1 class="text-3xl font-semibold tracking-tight">Privacy Policy</h1> <p class="text-sm text-muted-foreground">Last updated: March 12, 2026</p></div> <div class="space-y-10 text-sm leading-relaxed text-foreground/90"><section class="space-y-3"><h2 class="text-base font-semibold text-foreground">Overview</h2> <p>Monkeio is a focus and deep work tracker. We collect only the minimum data needed to run your 71 account and save your work. We do not sell your data or use it for advertising.</p></section> <div class="border-t border-border/50"></div> <section class="space-y-4"><h2 class="text-base font-semibold text-foreground">How you sign in</h2> <div class="space-y-2"><h3 class="font-medium text-foreground/80">Google OAuth</h3> <ul class="list-disc list-inside space-y-1 text-muted-foreground"><li>You sign in on Google's own pages â we never see your Google password.</li> <li>We only request your email address and basic profile info to create your account.</li> <li>We do not request access to Gmail, Drive, Calendar, or your contacts.</li></ul></div> <div class="space-y-2"><h3 class="font-medium text-foreground/80">Email magic link</h3> <ul class="list-disc list-inside space-y-1 text-muted-foreground"><li>We send a one-time sign-in link to the email you provide. No password needed.</li> <li>Each link expires after a short window and can only be used once.</li> <li>Your email is used only to identify your account and deliver the link.</li></ul></div></section> <div class="border-t border-border/50"></div> <section class="space-y-3"><h2 class="text-base font-semibold text-foreground">What we store</h2> <ul class="list-disc list-inside space-y-1 text-muted-foreground"><li>Your email address and display name (if provided via Google).</li> <li>Your focus sessions â tasks, timers, and notes you create while signed in.</li> <li>Timestamps for sessions (start time, duration) so you can review your history.</li></ul> <p class="text-muted-foreground">We do not collect device identifiers, location data, or any information beyond what you explicitly 72 create in the app.</p></section> <div class="border-t border-border/50"></div> <section class="space-y-3"><h2 class="text-base font-semibold text-foreground">Third-party services</h2> <ul class="list-disc list-inside space-y-1 text-muted-foreground"><li>
72<span class="text-foreground/80 font-medium">Supabase</span> â our database and auth provider. 73 Your data is stored in a Supabase-managed Postgres database. See <a class="underline underline-offset-2 hover:text-foreground transition-colors" href="https://supabase.com/privacy" target="_blank" rel="noopener noreferrer">supabase.com/privacy</a>.</li> <li><span class="text-foreground/80 font-medium">Google</span> â used only for OAuth sign-in. See <a class="underline underline-offset-2 hover:text-foreground transition-colors" href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">Google's privacy policy</a>.</li> <li><span class="text-foreground/80 font-medium">Vercel</span> â web hosting. Standard server logs 74 (IP, request path, timestamp) may be retained briefly. See <a class="underline underline-offset-2 hover:text-foreground transition-colors" href="https://vercel.com/legal/privacy-policy" target="_blank" rel="noopener noreferrer">vercel.com/legal/privacy-policy</a>.</li></ul></section> <div class="border-t border-border/50"></div> <section class="space-y-3"><h2 class="text-base font-semibold text-foreground">Data retention & deletion</h2> <p class="text-muted-foreground">Your data is kept for as long as your account is active. If you want your account and all 75 associated data deleted, email us and we'll remove it within 30 days.</p></section> <div class="border-t border-border/50"></div> <section class="space-y-3"><h2 class="text-base font-semibold text-foreground">Your rights</h2> <p class="text-muted-foreground">You can request a copy of your data, correct inaccuracies, or ask for deletion at any time. 76 Reach us at <a class="underline underline-offset-2 hover:text-foreground transition-colors" href="mailto:[email protected]">[email protected]</a>.</p></section> <div class="border-t border-border/50"></div> <section class="space-y-3"><h2 class="text-base font-semibold text-foreground">Changes to this policy</h2> <p class="text-muted-foreground">We may update this policy as the product evolves. If changes are material, we'll notify you via 77 email. Continuing to use Monkeio after an update means you accept the revised policy.</p></section></div></main><!----><!--]--><!----></div><!----><!--]--> <!--[!--><!--]--><!--]--> 78 79
79<script> 80 { 81 __sveltekit_13r8snk = { 82 base: new URL(".", location).pathname.slice(0, -1) 83 }; 84 85 const element = document.currentScript.parentElement; 86 87 Promise.all([ 88 import("./_app/immutable/entry/start.oPcASz2l.js"), 89 import("./_app/immutable/entry/app.YhcyyKNW.js") 90 ]).then(([kit, app]) => { 91 kit.start(app, element, { 92 node_ids: [0, 14], 93 data: [{type:"data",data:{user:null},uses:{}},null], 94 form: null, 95 error: null 96 }); 97 }); 98 } 99 </script>
99 100 </div> 101 </body> 102</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.