Privacy Policy
Last updated: May 14, 2026
1. Overview
Kiroku (“we”, “us”, or “the Service”) is a visual weekly planner. We are committed to protecting your privacy. This policy explains what data we collect, how we use it, and your rights.
2. Data Storage — Local First
Your planner data is stored entirely in your browser.All tasks, notes, settings, templates, and workspace data are saved in your browser's IndexedDB storage on your device. No planner data is sent to our servers unless you explicitly enable Cloud Sync.
- Tasks, day notes, task types, and settings are stored locally in IndexedDB
- Data remains on your device and is not accessible to us
- Clearing your browser data will delete your planner data — we recommend using the Export feature for backups
- No analytics, tracking scripts, or third-party trackers are used in the application
3. Account Data
If you create an account, we store the minimum information required for authentication:
- Email address — used for sign-in and account recovery
- Name — optional, displayed in the app
- Password hash — securely hashed with bcrypt; we never store plaintext passwords
- OAuth tokens — if you sign in with Google, Microsoft 365, or Apple, we store the access and refresh tokens required to maintain your session and access authorized services (e.g., connected calendar overlays)
Account data is stored in a PostgreSQL database hosted on Vercel (Neon). It is not shared with third parties and is used solely for authentication and authorized integrations.
4. Cloud Sync (Optional)
Cloud Sync is opt-in. When enabled, your planner data is compressed, encrypted in transit (HTTPS), and stored on our server so you can access it across devices. You can disable sync at any time in Settings, and your data remains in your browser.
- Sync data is stored as a compressed blob associated with your user ID
- Only you can access your sync data — it requires authentication
- You can delete your sync data by using the “Clear All Tasks” feature or deleting your account
Browser extension and bookmarklet capture
If you configure the browser extension, Edge extension, or bookmarklet, Kiroku sends only the content you choose to capture to the hosted capture endpoint. This can include the page title, URL, selected text, user-entered notes, visible-page screenshot, capture key, and idempotency key. Captures are stored in your authenticated capture feed until they are accepted into the planner, dismissed, or expire under the capture retention rules.
Browser capture data is not used for advertising, analytics, sale, sharing, or targeted advertising. It is used only to deliver the capture workflow you configured.
5. Connected Calendar Data
Kiroku's use and transfer to any other app of information received from Google APIs will adhere to the Google API Services User Data Policy, including the Limited Use requirements.
What we access
If you sign in with Google or Microsoft 365 and enable connected calendars, we request read-only calendar access. Google uses the calendar.readonly scope, and Microsoft 365 uses the Calendars.Read delegated permission. This allows us to display your calendar events on the Kiroku grid.
How we use calendar data
- Calendar events are fetched from Google or Microsoft Graph and displayed in the Kiroku interface
- Calendar data is not stored on our servers — it is fetched in real-time and cached only in your browser session
- Calendar data is not shared with any third parties
- Calendar data is not used for advertising, analytics, or any purpose other than displaying it to you
- We do not modify, delete, or write to your connected calendars — access is strictly read-only
Token storage
Google and Microsoft OAuth access tokens and refresh tokens are stored securely in our database solely for the purpose of authenticating API requests on your behalf. Tokens are refreshed automatically when they expire and are deleted when you delete your account.
Revoking access
You can revoke Kiroku's access to your connected calendar data at any time by:
- Disabling connected calendars in Settings → Integrations
- Removing Kiroku from your Google Account permissions
- Removing Kiroku from your Microsoft account or organization app permissions
- Deleting your Kiroku account
6. Cookies
We use necessary cookies and local browser storage for authentication, security, consent storage, core planner operation, and remembering app preferences such as theme, layout, and planner display settings. Optional cookies are off unless you choose to enable them in Privacy Choices.
- Necessary — sign-in sessions, CSRF protection, consent records, security controls, and app preferences
- Analytics — reserved for future privacy-preserving product measurement and currently off by default
- Marketing — reserved for future advertising, retargeting, sale, sharing, or targeted advertising signals and currently off by default
Rejecting optional cookies is available from the first banner layer, and you can withdraw or change consent at any time from Privacy Choices in the footer. If your browser sends Global Privacy Control, we treat it as an opt-out from analytics, sale, sharing, and targeted advertising.
7. Data Retention and Deletion
- Local browser data is retained until you clear it or uninstall the app
- Account data is retained as long as your account exists
- You can delete your account and all associated data at any time from the Account panel
- Sync data is deleted when you delete your account
8. Security
- All data in transit is encrypted via HTTPS/TLS
- Passwords are hashed with bcrypt (12 rounds)
- Rate limiting protects against brute-force attacks
- OAuth tokens are stored server-side and never exposed to the client
- Content Security Policy and other HTTP security headers are enforced
9. Children's Privacy
Kiroku is not directed at children under 13. We do not knowingly collect personal information from children under 13. If you believe we have collected such information, please contact us.
10. Changes to This Policy
We may update this privacy policy from time to time. Changes will be posted on this page with an updated “Last updated” date. Continued use of the Service after changes constitutes acceptance of the updated policy.
11. Contact
If you have questions about this privacy policy or your data, please open an issue at github.com/johnhowelljr/kiroku.