42CodeLens

Privacy Policy

This policy describes what 42CodeLens actually collects and why. It was written against the running system rather than from a template.

Effective 15 September 2026 · Last updated 26 September 2026

In short. To use 42CodeLens without an account we need almost nothing. An account stores your email and an optional display name. A Premium purchase stores a record that it happened. We run our own first-party product analytics — which parts of the site are opened, and roughly from where — with no cookies, no third party and no stored IP addresses, and you can switch it off. There is no advertising or third-party tracking software on this website.

1. Who is responsible

42CodeLens is operated under the name SBG by an individual operating as a sole proprietor based in Morocco (see the Terms of Service, section 1). For the data described on this page, that individual is the data controller — 42CodeLens is not a company. For payment data, Paddle acts as an independent controller; see section 5.

2. What we collect, and why

Account data

When you create an account we store your email address, an optional display name, and the date the account was created. Your password is handled by our authentication provider and is stored by them as a salted hash; we never see it. We use this to identify your account, to sign you in, and to send the transactional emails below.

Authentication data

Signing in issues session tokens. A long-lived refresh token is stored in your browser so you are not signed out on every page load. These identify your session; they are not used to profile you.

Purchase and entitlement data

If you buy Premium we store a record of the purchase so we know your account is entitled: the amount and currency, the payment provider's transaction reference, the email associated with the transaction, and the resulting entitlement and its status. We also store the payment notifications Paddle sends us, so a payment can be reconciled or a refund traced.

We do not receive or store your card number, expiry date or security code. Those are entered on Paddle's checkout and never reach us.

Transactional email

We send account emails — confirm your address, reset your password. These are sent through our mail provider from a no-reply address. We do not send marketing email and there is no mailing list.

Product analytics (first-party)

To learn which parts of 42CodeLens are used, the site reports a small set of events to our own server — no analytics company is involved. An event is one of: a screen of the app was opened (recorded as an app location such as /learn/C04, never a web address with a query string); a lesson, project, Handbook chapter, lab, workspace or practice screen was opened (by its identifier); the Premium checkout was opened; and how long the tab was visible. The time of each event is taken from our server's clock.

With those events the browser sends context that our server reduces before anything is stored:

IP addresses are not stored in analytics. To count unique visitors, our server combines your IP address and user agent with a random value that changes every day and keeps only a one-way hash of the result. The address is used for that calculation in memory and is never written to the analytics database, and each day's random value is deleted after two days, so a stored visitor key cannot be traced back to an address or linked across days.

If you are signed in, these events are linked to your account, so we can see, for example, when an account was last active and which parts of the product it opened. Nothing is linked to an account from the browser's say-so: our server verifies your sign-in token first. If you are not signed in, events are not linked to any account.

Analytics is off if your browser sends Global Privacy Control or Do Not Track, and you can switch it off yourself in Settings → Privacy. We use these statistics only to understand and improve 42CodeLens. They are not shared, sold or used for advertising, and they are not sent to Paddle or to any analytics provider.

Security records

Separately from analytics, the server records security-relevant events — a rejected sign-in token, a refused request for protected content, a payment notification with an invalid signature, a rate limit being reached. A record holds the kind of event, the part of the service involved, a status or reason code and, if you were signed in, your account identifier. It does not hold your IP address. These records exist to protect the service and your account.

Data stored only in your browser

Some things never leave your device. 42CodeLens uses local browser storage for your sign-in refresh token, your reading position in the Handbook, your learning progress, and interface preferences such as whether the sidebar is collapsed. Your progress is currently local to the browser you used, and is not synchronised to our servers. Clearing your browser data clears it.

Analytics adds three small entries and no cookies: the tab's session identifier and landing context (in session storage, removed when the tab closes), a flag noting that this browser has visited before, and your analytics opt-out choice if you make one (both in local storage).

Technical data

Our hosting provider processes standard server request information such as IP address and user agent in order to serve the site and protect it from abuse. Our server also uses your IP address, briefly and in memory only, to apply request limits. We do not combine this request information with your account to build a profile of you.

3. What we do not do

4. Legal bases

Where the GDPR or a comparable law applies to you, we rely on: performance of a contract (running your account and delivering Premium you paid for), legitimate interests (keeping the service secure and working, and understanding through first-party analytics how it is used so it can be improved — which you can switch off at any time), and legal obligation (keeping records of sales where required).

5. Who else processes your data

We do not use any other third-party service that receives your personal data.

6. International transfers

These providers operate outside Morocco, so your data is processed abroad, including in the European Union and the United States. Where transfer safeguards are legally required, we rely on the mechanisms our providers put in place, such as standard contractual clauses.

7. How long we keep it

Your account data is kept while your account exists. If you delete your account, the account and its entitlement records are deleted with it.

Records of a completed sale may be retained after that where we are required to keep them — for accounting, tax or fraud-prevention purposes, or to evidence that a purchase and any refund took place. We keep no longer than is necessary for those purposes.

Analytics events are deleted automatically after 395 days (about 13 months). Daily totals — counts of page views, visitors and sessions, with nothing about any individual — are kept. The daily random value used for visitor keys is deleted after two days. Security records are deleted after 180 days. If you delete your account, its analytics events are unlinked from it; security records keep only the bare identifier of the deleted account until they expire.

8. Security

The site is served over HTTPS. Premium material is authorised on the server for every request — a browser cannot grant itself access. Access to the database is restricted by row-level security so one account cannot read another's records. Payment card data never reaches our systems.

No system is perfectly secure, and we do not claim certification under any particular standard.

9. Your rights

Depending on where you live you may have the right to access your data, to correct it, to delete it, to receive a copy, to object to or restrict certain processing, and to complain to your data protection authority.

To exercise any of these, write to support@42codelens.com. You can delete your account yourself from your account panel, which removes your account data and entitlement records.

To stop analytics, switch it off in Settings → Privacy, which takes effect immediately, or enable Global Privacy Control or Do Not Track in your browser, which takes effect from the next page load.

For data Paddle holds about your purchase, contact Paddle directly through Paddle's buyer support.

10. Children

42CodeLens is not directed at children under 13, and we do not knowingly create accounts for them. If you believe a child has created an account, write to support@42codelens.com and we will remove it.

11. Changes

If this policy changes, the date at the top of the page changes with it. If a change materially affects how we handle your data, we will make that clear rather than editing the page quietly.

12. Contact

Privacy questions or requests: support@42codelens.com.