Legal

Privacy Policy.

How Dexes collects, uses, stores, and protects account information and worldbuilding data.

Last updated: August 2026Version 2.1

1. Who We Are

Dexes is a browser-based story and world-building application operated by Kevin Herr. This Privacy Policy explains how we collect, use, and protect your personal data when you use Dexes.

If you have questions about this policy, please contact us at the address listed at the bottom of this page.

2. Data We Collect

We collect the following categories of personal and user-generated data:

  • Account information: your display name, email address, and profile picture from your Google account, obtained when you sign in with Google.
  • User-created content: all creative content you create within the app, including worlds, stories, characters, groups, items, locations, nations, maps, ideas, timeline entries, codex data, and written Tomes (books/short stories organized into chapters and pages, including any tags or custom properties you attach to them), stored in Firebase Realtime Database.
  • Uploaded images: image files you upload to the Image Library or attach to maps, characters, items, locations, and other entities. Files are stored on our web server under a path keyed to your user ID.
  • Stock image preferences: Dexes also provides a shared catalog of stock images available to all users. These images are not personal data. The only personal data associated with the catalog is your own list of hidden stock images (which entries you've chosen to hide from your view), stored under your user ID.
  • Patreon membership data: if you connect a Patreon account, we store your Patreon patron ID, linked Firebase UID, current membership tier, and (if applicable) a grace-period expiry timestamp. This data is received via Patreon's OAuth and webhook systems and stored in Firebase Realtime Database. We do not store your Patreon access token or payment details.
  • Collaboration data: if you are invited to a story owned by someone else, your email address and display name are copied into that story’s membership record so its owner can see who has access, along with your role and the date you were added. If you own a story you have shared, your display name is stored on it so the people you shared with can see who it came from. See Section 6.
  • Usage metadata: the date and time you last signed in, and a record of your consent to these policies.
  • Mailing list preference: if you choose to join our mailing list, we store whether you opted in, the date and time you last changed that setting, and where you changed it (the consent screen or your Profile). Joining is optional and is never required to use Dexes. The emails themselves are sent to the address on your Google account, which we already hold as account information; we do not store a separate mailing address.
  • Server activity logs: when you use a feature that goes through our web server (uploading or deleting images, exporting or importing a story, deleting your account's uploaded files, or linking/unlinking Patreon), the server records a log entry containing your user ID, email address, the action performed, and basic technical metadata such as file names, file sizes, and world identifiers. These logs never contain your creative content.
  • Feedback submissions: if you use the in-app "Send Feedback" form, we store the message you write together with your user ID, email address, the page you were on, the identifier of the world you had open, and your browser version, so we can investigate the report and follow up with you. Feedback reports are also forwarded to our development issue tracker (see Section 5).
  • Technical data: browser local storage and cookies used to maintain your session and preferences (see Section 4).

We do not collect payment information, sensitive personal data, or data about your activity outside of Dexes.

3. How We Use Your Data

Your data is used solely to provide the Dexes service:

  • To authenticate you and maintain your account.
  • To store and display your creative content across devices.
  • To enable features such as timeline management, map editing, image library, and codex search.
  • To determine your subscription tier and enforce storage limits.
  • To let you share a story with other people and to enforce who may see and edit what, including sharing specific content with specific players (Section 6).
  • To apply your saved display preferences and restore your interface state between visits.
  • To record your acceptance of these policies as required for legal compliance.
  • To send you occasional news about new features and major updates, but only if you have opted in to our mailing list. We do not sell, rent, or share your email address, every message includes an unsubscribe link, and you can turn the mailing list off at any time from the Profile menu without affecting your account.
  • To maintain security and provide support: server activity logs (Section 2) help us investigate account issues, reports of abuse, and data-loss reports.

We do not use your data for advertising, profiling, or sale to third parties.

4. Cookies & Local Storage

Dexes uses browser cookies and local storage for the following purposes:

  • Authentication: Firebase maintains your signed-in session via browser cookies managed by Google.
  • Preferences: Display settings (such as the Tome editor's serif-font toggle) are stored in local storage so they persist across page loads.
  • World and map context: The currently open world and map are cached in local storage and in Firebase to ensure they are restored after page refreshes or navigation.
  • UI state: Map pan/zoom, timeline day selection, section collapse state, and favorites lists are stored in local storage to restore your view when you return to a page.
  • Analytics: Google Analytics sets cookies (names beginning with "_ga") to distinguish visitors and measure aggregate usage of the app (see Section 5).

Session, preference, and UI-state cookies are never shared with third parties or used for advertising. Analytics cookies are used solely for the aggregate usage measurement described in Section 5, never for advertising or profiling.

5. Third-Party Services

Dexes is built on Google Firebase (Authentication and Realtime Database). Your account and content data are stored on Firebase infrastructure operated by Google LLC. Google's use of data in connection with Firebase is governed by Firebase's Privacy and Security documentation and Google's Privacy Policy.

Dexes uses Google Analytics to understand how the app is used in aggregate: which pages are visited, how often, and from what general kind of device and region. IP anonymization is enabled, and we do not send your name, email address, or any of your world content to Analytics. This data is used only to improve Dexes and never for advertising.

Google's processing of Analytics data is governed by Google's Privacy Policy; you can opt out of Google Analytics on all websites using the Google Analytics Opt-out Browser Add-on.

If you connect a Patreon account, your membership tier is retrieved from Patreon's API and webhook system. Dexes receives only your patron ID, email address (for account matching), and entitled tier information. Patreon's data practices are governed by Patreon's Privacy Policy.

Google Fonts serves the Outfit, Lora, Uncial Antiqua, Eagle Lake, and Almendra SC typefaces. Google Fonts CDN requests may be logged by Google; see Google's Privacy Policy.

Font Awesome icons are loaded via CDN. Font Awesome's CDN may log request metadata; see Font Awesome's Privacy Policy.

The html2canvas (Map Export to PNG), JSZip (story export/import), and Cytoscape.js (relationship graph) libraries are loaded on demand from CDNs. They run entirely in your browser and send none of your data to any server; the CDNs may log the standard network request for the library code itself.

Feedback you submit through the in-app "Send Feedback" form is forwarded to GitHub (GitHub Issues), the privately-hosted issue tracker we use to manage Dexes development. The forwarded report contains your message, user ID, email address, and the technical context described in Section 2, and is visible only to the Dexes developer. GitHub's processing of this data is governed by GitHub's Privacy Statement.

The CodeMirror 6 text-editing library (used for the Tome page editor) is loaded from the esm.sh CDN. It runs entirely in your browser to provide the writing/live-preview interface; your Tome content is not sent to esm.sh, only the standard network request for the library code itself, which esm.sh may log.

Backups. Two services are involved in taking and storing our backups. GitHub Actions runs the scheduled backup job: a temporary virtual machine exports your database records, account records, and uploaded files, encrypts them, uploads the result, and is then destroyed. Your data is present on that machine only for the few minutes the job takes, and is not retained by GitHub afterwards. Backblaze B2 (Backblaze, Inc., United States) then stores the encrypted result. Because the encryption happens before upload, Backblaze holds only encrypted data and cannot read your content. Backups are used solely to restore data after loss or corruption, and never for analysis, profiling, or any other purpose. GitHub's processing is governed by GitHub's Privacy Statement and Backblaze's by Backblaze's Privacy Policy.

6. Sharing and Collaboration

You can invite other people into a story you own. Doing so moves personal data between accounts, so it is worth being precise about what.

  • What the story owner learns about you: when you are invited, your email address and display name are stored in that story’s membership record so the owner can see who they have shared it with. You are invited by email address, so the person inviting you already knows it.
  • What you learn about the owner: a story shared with you shows the owner’s display name.
  • What the other people can see: that depends on the role the owner gives you. A co-GM can read and edit everything in the story, including content marked GM-only. A player sees the story’s shared content, plus anything the owner has chosen to share with them specifically, and can edit a character sheet assigned to them. An observer has read-only access to shared content.
  • Content you add to someone else’s story is stored in that story, under the owner’s account. The owner and other members can see it, and it stays with the story if you leave.
  • Per-player sharing: a story owner can share individual objects, map content, or whole maps with named players rather than the whole group. This controls what each player’s copy of the app displays and what their account is permitted to read.

The owner of a story controls access to it: they can change your role or remove you at any time. You can leave a story at any time from the Stories page, which removes your membership and your access.

We do not use sharing to move your data anywhere else. Nothing is shared with anyone outside the story you were invited to, and inviting someone does not give them access to your account, your other stories, or your personal image library.

7. Administrative Access

Authorized administrators of Dexes (currently limited to the operator, Kevin Herr) have access to an internal administration tool used for account support and moderation. Through this tool, an administrator can:

  • View account-level information such as your email, sign-in history, subscription tier, and ban status.
  • Open a read-only view of a world's content (characters, maps, items, and other codex data) strictly to investigate a support request or a report of abuse. This view is clearly labeled as an administrative session and cannot be used to modify your data.
  • Ban an account found to violate these Terms, or apply a subscription-tier override in connection with support requests.
  • Initiate account deletion in cases of Terms violations. Administrator-initiated deletion applies a 7-day grace period, during which the account is suspended but not yet deleted, before your data and uploaded files are permanently removed and your Google account's access to Dexes is revoked.

All administrative actions are logged, including who performed the action, when, and why. Administrative access is not used to browse or monitor user content outside of a specific support or moderation need.

8. Data Retention

Shared stories. Leaving a story, or being removed from one, ends your access and deletes your membership record along with the copy of your email address and display name it held. Content you added to that story remains part of it, because the story belongs to its owner.

Your account data is retained for as long as your account is active. Free-tier accounts that have had no sign-in activity for 12 consecutive months are considered inactive and subject to permanent deletion. Paid Patreon subscribers (Copper tier and above) are not subject to inactive-account deletion for as long as an active pledge is detected.

You can also delete your account at any time from the Profile menu within the app. Deletion removes your Firebase database records (worlds, maps, characters, codex data, ideas, timelines, Tomes, and all related data) and your uploaded image files from our server. This process is initiated client-side and takes effect immediately.

Your Google account itself is not deleted through self-service deletion. Certain administrative records, such as ban flags or Patreon index entries created to prevent abuse, may be retained beyond account deletion.

Accounts deleted by an administrator under Section 6 are removed after the 7-day grace period described there. Unlike self-service deletion, this also revokes the account's access to sign in to Dexes.

Demo sandbox worlds created through the one-time demo offer are automatically and permanently deleted 30 days after creation, as stated when the demo is offered.

Your mailing list preference (Section 2) is retained for as long as your account exists and is deleted along with it. If you opt out, we keep the record of that choice while your account exists so that the preference continues to be honored.

Server activity logs (Section 2) are retained for up to 90 days and then automatically deleted.

Feedback submissions (Section 2) are retained until they have been reviewed and addressed; the copy forwarded to our issue tracker may be retained longer as part of the project's development history.

Backups. We take encrypted backups of the database, your account record (including the email address associated with your sign-in), and uploaded files, and keep them for up to 90 days before they are automatically deleted. This means that when you delete content or your account, it is removed from the live service immediately, but a copy may remain in an encrypted backup until that backup rotates out, up to 90 days later. Backups are restored only to recover from data loss or corruption; we do not use them to reinstate data you have deleted.

Firebase may retain anonymized system logs for a shorter period as required for security and operational purposes.

9. Your Rights

Depending on your location, you may have the following rights regarding your personal data:

  • Access: request a copy of the data we hold about you.
  • Rectification: request correction of inaccurate data.
  • Erasure: delete your account and all associated data at any time via the Profile menu in the app, or by contacting us. See Section 7 for how administrator-initiated deletion differs. Deleting your account removes the stories you own, and removes you from every story other people invited you to — including the copy of your email address and display name their membership record held. It does not delete the stories themselves when they belong to someone else, since those are their data, and content you added to them stays with them.
  • Portability: export your creative world data as a downloadable archive (your world data as JSON, plus the uploaded images it references) using the Export Story feature on the Stories page.
  • Objection / Restriction: object to certain processing or request that we restrict how we use your data.
  • Withdraw marketing consent: you can leave the mailing list at any time from the Profile menu, or by using the unsubscribe link in any email. This is independent of your account: opting out stops the emails and nothing else changes.
  • Withdraw consent: you may withdraw consent at any time by signing out and deleting your account. Note that withdrawal will make the service unavailable to you, as authentication and data storage are core to Dexes.

To exercise any of these rights (other than self-serve deletion and export, which are built into the app), please contact us at the address below.

10. Children's Privacy

Dexes is not directed at children under the age of 13. We do not knowingly collect personal information from children under 13. If you believe a child under 13 has created an account, please contact us and we will delete the account promptly.

11. Changes to This Policy

We may update this Privacy Policy from time to time. When we do, we will update the "Last updated" date at the top of this page and, if the changes are material, require you to re-accept the updated policy the next time you sign in.

12. Contact

If you have questions, concerns, or requests regarding your data or this Privacy Policy, please contact:

privacy@dexes.one