Learner accounts
SovranCode operates this website. An account stores your name, email address, optional Google profile image, role, sign-in method, and secure session records. Password accounts store a salted password hash, not the original password. Google sign-in stores Google's stable account identifier but does not store Google access or refresh tokens. An HTTP-only, same-site cookie lets the server recognize signed-in requests.
Learning data
Signed-in lesson completions, project milestone status, and private project notes are stored in the SovranCode database. Guest lesson progress and editor preferences remain in local storage on your browser. HTML playground previews are sandboxed. Features that save work to your account communicate with our server; optional analytics are not required to learn.
Essential storage and optional consent
Essential storage supports sign-in, security, learning progress, and your privacy choices. Optional Google Analytics and Microsoft Clarity scripts are blocked until you explicitly enable the corresponding category. Rejecting optional tracking does not restrict free lessons or purchases. We apply these opt-in controls worldwide.
Your preferences are stored on this browser under sovrancode:privacy:v1 for up to 180 days, after which we ask again. Google Analytics may use _ga and related cookies; Clarity may use _clck and _clsk. Clearing browser storage resets your choices. You can change them at any time using in this page or the footer.
Google Analytics
If you enable usage measurement, Google Analytics helps us understand visits, navigation, and device/browser characteristics on public pages. Google processes technical connection data and analytics identifiers when the service is used. We do not send account IDs, names, email addresses, or payment credentials to Analytics, and our page-view events exclude URL query strings and fragments. Google advertising signals and advertising-personalization signals are disabled in our configuration.
Account, authentication, administration, contact, search, buyer-library, and checkout screens are excluded from page-view measurement and interaction recordings. With usage measurement enabled, Analytics may receive limited events for template views/selections, a successfully started checkout, completed registration (method only), and a confirmed purchase (product, license, currency, value, and a non-personal order identifier). Payments are checked against Stripe and recorded webhook fulfillment before a purchase event is sent. Analytics consent is separate from payment authorization; rejecting it never prevents a purchase. Google may process data outside your country. Read Google's privacy policy and how Google uses information from partner sites.
Microsoft Clarity
If you separately enable interaction recordings, Microsoft Clarity (project yjl9hw7ciu) provides interaction recordings and heatmaps to help identify confusing navigation, scrolling, and clicks on public pages. It can process page addresses, browser/device information, session identifiers, and interaction events. Clarity is not loaded on the private and sensitive routes listed above. Page text is masked in our configuration; nevertheless, do not enter sensitive information into public demonstrations.
We pass analytics-storage consent to Clarity and keep advertising-storage consent denied. Microsoft may process data outside your country. Read the Microsoft Privacy Statement and Clarity data collection information.
Template and e-book purchases
Payments are processed through Stripe. Stripe receives the information you provide during checkout, including payment and billing details, under its privacy policy. SovranCode keeps purchase and license records needed to verify payment and provide downloads and support. We do not store full payment-card numbers. Optional analytics consent is not required to complete a purchase.
Advertising
Google AdSense advertising is not enabled in this release. The analytics settings described here are not a Google-certified advertising consent platform and do not give permission for personalized ads. Before enabling advertising, we will update these disclosures and configure an appropriate certified consent platform for visitors in the EEA, UK, and Switzerland. Advertising storage, advertising user data, and advertising personalization remain denied in our Google consent configuration.
Security and retention
We use salted password hashing, secure sessions, same-site cookies, authorization checks, request validation, and rate limits for sensitive actions. No online service can guarantee absolute security. Account and learning records are retained while needed to provide the account; purchase records may also be retained for accounting, fraud prevention, and license verification. Contact messages stay in the private inbox until handled and are not published.
Analytics providers retain collected data according to their service and project settings. Withdrawing consent stops future optional collection; it does not automatically erase information previously held by a provider. Contact us for access or deletion requests. We will explain any records we must retain rather than promise immediate deletion of every record or backup.
Your choices
You can use free learning content without an account, reject either optional tracking category, change your preferences, clear guest progress, and sign out. When you withdraw optional consent, we clear accessible first-party tracking cookies and reload the page to stop the running tracking scripts. Cookies on another provider's domain cannot be deleted by this website; browser settings provide additional controls.
Account export and deletion are not self-service yet. To request access, correction, or deletion, or to raise a privacy concern, email sovrancode@gmail.com. Depending on your location, you may also have rights to object to processing, restrict processing, obtain portable data, or complain to your local data-protection authority.
Contact
Use our contact page or email sovrancode@gmail.com for privacy questions. Contact submissions store your name, email, topic, message, locale, and optional signed-in account identifier so administrators can reply. A hashed network address is used to limit automated abuse. Please do not send passwords, full card details, or identity documents through the contact form.