Privacy Policy

Last updated: September 17, 2026

1. Scope

This Privacy Policy applies to the publicly accessible websites lanfermann.dev and neatpass.app, their language versions, and the web subpages and subdomains named in this policy. Both domains provide the same web application under different Internet addresses.

This Privacy Policy does not apply to the native NeatPass app, signature services, or other app-specific backend services. The app and its associated backend processing are described in the separate NeatPass App Privacy Policy.

2. Controller

The controller within the meaning of the General Data Protection Regulation (GDPR) is:

Justin Dennis Lanfermann Am Brunnen 24 85551 Kirchheim bei München Germany

Email: Justin@Lanfermann.dev

3. Processing principles

We process personal data only to the extent necessary to provide the websites securely and in working order, to handle your inquiries, or, after your consent, for statistical analysis and performance measurement.

Depending on the processing, we rely in particular on the following legal bases:

  • Art. 6(1)(a) GDPR, if you have given your consent;
  • Art. 6(1)(b) GDPR, if the processing is necessary to carry out pre-contractual measures at your request or to perform a contract;
  • Art. 6(1)(c) GDPR, if we are subject to a legal obligation;
  • Art. 6(1)(f) GDPR, if the processing is necessary to safeguard our legitimate interests and your interests or fundamental rights do not override them;
  • Section 25(1) TDDDG, if, with your consent, we store information on your terminal equipment or access information already stored there;
  • Section 25(2) no. 2 TDDDG, if storage or access is strictly necessary to provide a function expressly requested by you.

Where the providers named below process personal data on our behalf, their processing is governed by data processing agreements. A provider's role depends on the particular processing activity. Processing for security purposes does not by itself make a provider an independent controller. Provider-specific roles are explained below, and the providers' privacy notices give further information.

We do not sell personal data. We do not make decisions based solely on automated processing that produce legal effects concerning you or similarly significantly affect you within the meaning of Art. 22 GDPR.

Provision of personal data

Certain technical data, particularly your IP address and the information needed to process your request, must be processed to deliver the requested content. Additional technical metadata may be processed for the security and troubleshooting purposes described below.

Entering the password for protected study materials is voluntary. Without a correct password, the protected area cannot be opened.

Providing information in emails is voluntary. Without a reachable means of contact and the information necessary to process your inquiry, we may be unable to answer it.

Consent to usage statistics and performance measurement is voluntary. If you refuse, the basic functions of the websites remain available.

4. Provision of the websites and technical log data

4.1 Hosting via Vercel

The main pages at lanfermann.dev, neatpass.app, and their language versions are provided via Vercel.

The provider is:

Vercel Inc. 440 N Barranca Avenue #4133 Covina, CA 91723 USA

When a page is accessed, Vercel may process in particular the following data:

  • IP address and approximate location information derived from it;
  • date and time of the request;
  • requested hostname, path, and any query parameters present;
  • HTTP method and response status;
  • browser, operating system, device type, and user agent;
  • referrer, where transmitted by the browser;
  • technical request, cache, security, regional, and error data;
  • technical request and delivery identifiers.

The processing is necessary to deliver the websites, ensure their availability and security, investigate technical errors, and prevent misuse. The legal basis is Art. 6(1)(f) GDPR. Our legitimate interests are the secure, stable, and efficient provision of our web offering.

For our Vercel Pro account, regular runtime logs are generally available for up to one day. We use neither Observability Plus nor Log Drains or other external log exports configured by us. Deployment and build logs may be stored together with the relevant deployment; they generally contain technical development and deployment information and are not used by us to create visitor profiles.

Under Vercel's data processing agreement for Pro customers, Vercel acts as a processor for customer data processed on our behalf. Vercel describes itself as a controller for certain service-generated data and contact data, where these are personal data. Its stated purposes for those categories include operating, supporting and improving its services, analytics, benchmarking and reporting, and marketing and service communications. The applicable categories, purposes and retention criteria are explained in the Vercel Data Processing Addendum and Privacy Notice.

Further information: Vercel Privacy Notice and Information on Vercel Runtime Logs.

4.2 Cloudflare

The provider is:

Cloudflare, Inc. 101 Townsend Street San Francisco, CA 94107 USA

Cloudflare provides the authoritative DNS services for our domains. Ordinary page views of the main pages at lanfermann.dev and neatpass.app are not routed through Cloudflare as a reverse proxy.

Cloudflare operates as a reverse proxy and content delivery service in particular for:

  • cdn.lanfermann.dev, through which public and access-protected files are delivered.

For requests to these hosts, Cloudflare may process in particular the IP address, date and time, hostname, path and query parameters, HTTP method, headers, user agent, referrer, cookies or access tokens for the relevant host, and connection, routing, location, and security information.

The processing serves name resolution, secure forwarding, encrypted connections, caching of permitted content, availability, and the prevention of harmful requests. The legal basis is Art. 6(1)(f) GDPR. Our legitimate interest is the secure and reliable provision of the relevant services.

For the processes described, our current configuration has in particular not activated Turnstile, Waiting Room, Logpush, or optional bot or challenge functions. No Cloudflare cookies were set for ordinary, checked requests. If Cloudflare performs a security check in an exceptional case, it may set technically necessary security cookies for this purpose. Storage would then be strictly necessary for the secure provision of the expressly requested service (Section 25(2) no. 2 TDDDG).

We do not create our own Cloudflare Logpush export of visitor requests. Cloudflare may process operational and security-related data according to the criteria described in its privacy notices for as long as necessary to provide and secure the service or to comply with legal obligations.

Further information: Cloudflare Privacy Policy and Cloudflare information on strictly necessary cookies.

4.3 Amazon CloudFront and Amazon S3

Files at cdn.lanfermann.dev, including the access-protected study materials, are delivered via Cloudflare and then via Amazon CloudFront from Amazon S3 storage. CloudFront uses a global delivery network. The encrypted analytics backups described in section 8.3 are stored separately in a private S3 bucket in Frankfurt and are not delivered through this CDN.

The provider is:

Amazon Web Services EMEA SARL 38 Avenue John F. Kennedy L-1855 Luxembourg

CloudFront processes the technical request data required for delivery. For protected files, it also checks the technical access token transmitted by your browser with the request. The files themselves are study materials and, according to our current use, contain no personal data of website visitors.

The processing serves the fast, stable, and secure delivery of files and access control for non-public materials. The legal basis is Art. 6(1)(f) GDPR. Our legitimate interests are the efficient provision of the content and protecting non-public files from unauthorized access.

CloudFront standard access logs and real-time access logs are disabled for this delivery. Amazon may nevertheless process connection and security data required for the technical operation of its infrastructure.

Further information: AWS Privacy Notice and Information on CloudFront Logs.

5. Browser storage

Our websites store privacy choices, language and display preferences, access information and limited local convenience data in your browser. The categories and their lifetimes are listed separately below. They are not used for advertising profiles.

Privacy choices, preferences and access
StoragePurposeDuration or deletion criterion
Privacy and consent settingStores your selection for usage statistics and performance measurement, as well as the time, language, and version information required for it.Until you change the selection, the consent information becomes invalid because of a material change, or you delete the website data in your browser. The setting is stored separately for each domain.
Language and display preferencesRemembers a language or display selected by you.Until changed or the website data is deleted in the browser.
Access cookie for protected resourcesKeeps access to protected study materials active after a successful password entry.No more than 24 hours or until previously deleted in the browser.

Storage that is strictly necessary to respect your privacy decision, remember a selected language or display preference, or maintain requested access to protected resources is based on Section 25(2) no. 2 TDDDG. Where personal data are processed for these purposes, the legal basis is Art. 6(1)(f) GDPR. Our legitimate interests are implementing your choices and securely providing the requested functions.

When you select a navigation command or achieve a new best score in the Snake game, the website automatically saves the limited information below locally. These convenience features use no additional opt-in. The stored values are not sent to us by these features.

Local convenience features
StoragePurposeExpiry
Recent navigation commands (command-palette-recent, localStorage)Remembers up to five selected commands, including path, title, category and selection time.Each entry expires 30 days after its selection. Reading it does not extend that period.
Snake best score (lanfermann.snake.highscore, localStorage)Remembers one best score and when it was saved.Expires 30 days after saving. Only a new best score starts a new period; reading or matching the score does not.

Expired values are no longer used and are removed when the website next accesses the relevant storage. While the website is closed, localStorage does not delete itself on a timer. Invalid values are discarded; an older game score without a reliable timestamp is also discarded. You can clear recent commands within the navigation menu or delete website data through your browser.

You can delete local website data at any time through your browser settings. Settings may then be lost and protected resources may require you to enter the password again.

6. Access to protected study materials

When you enter a password for protected study materials, it is transmitted over an encrypted connection to our login function provided via Vercel and used there solely for the immediate check of access authorization. The application does not store the entered password in the access cookie and does not use it for other purposes.

After a successful check, we set a technically necessary cookie. It contains a technical access token, but not the entered password, your name, or your email address. The cookie enables access for no more than 24 hours and can be deleted earlier through the browser settings. No user account or personal usage profile is created.

Browser storage is based on Section 25(2) no. 2 TDDDG. Processing of the access token and associated technical request and security data is based on Art. 6(1)(f) GDPR. Our legitimate interest is protecting non-public materials from unauthorized access. Technical Vercel runtime logs are handled according to the periods described in section 4.1.

7. Contact and email communication

7.1 Contact interface on the website

The information entered on the support or contact page is initially processed solely in your browser's working memory. Our website does not operate its own form server for this purpose and does not store the entered name or message text in a website database.

The website itself does not submit the entered message to us. Activating the send function creates a mailto: link and passes the draft to the email application or service configured on your device. That application or service may process or synchronize the draft under its own settings and privacy terms. We receive the message when you send it to us.

If you have previously consented to usage statistics, the website may transmit a minimized statistics event when you use the contact interface. This may contain the selected general contact category and information about whether the name and message fields were completed. The entered name, message text, email address, and attachments are not transmitted as a statistics event.

7.2 Processing of emails

When you send us an email, we process in particular:

  • your email address and, where applicable, your name;
  • recipient and sender details;
  • subject, message text, and attachments;
  • date, time, and technical email metadata;
  • other information that you provide voluntarily.

The processing serves to handle and answer your inquiry. If your message relates to a contract or pre-contractual measures requested by you, the legal basis is Art. 6(1)(b) GDPR. In other cases, the processing is based on Art. 6(1)(f) GDPR; our legitimate interest is the proper handling of incoming inquiries and communication.

Providing the information is voluntary. Without a reachable means of contact and the information necessary to process your inquiry, we may be unable to answer it.

Email communication is stored for as long as necessary to process and appropriately follow up on the relevant matter. In making this assessment, we consider in particular the nature and content of the inquiry, any connection with a contract, outstanding questions, the need to document the communication, and possible legal claims. If further storage is no longer necessary for these purposes, we delete the correspondence. Longer storage takes place where statutory retention obligations apply or the data are needed to assert, exercise, or defend specific legal claims. In these cases, the legal bases are Art. 6(1)(c) and (f) GDPR.

7.3 Zoho Mail

We use Zoho Mail to receive and send emails.

The provider is:

Zoho Corporation B.V. Beneluxlaan 4B 3527 HT Utrecht Netherlands

Our account is assigned to Zoho's European data center region. Storage in that region does not exclude the support access described below.

Zoho processes email content, attachments, sender and recipient addresses, and technical email metadata on our behalf. In rare cases, limited support access may take place by appropriately authorized employees of the Zoho company in India. According to its own information, Zoho bases this access on standard contractual clauses, a transfer assessment, and supplementary measures.

Moving a message to Trash is separate from permanent deletion. Zoho describes automatic Trash cleanup according to the configured interval and the message's received date; supported intervals range from 5 to 180 days. After deletion from Trash, Zoho describes a further recovery period of up to 30 days. Any separately configured eDiscovery or archival retention follows its own rules. These provider stages do not replace our criteria for deciding when correspondence is no longer needed. Zoho's documented deletion and overwriting rules also apply to technical backup and recovery copies, which we do not use for ordinary email processing.

Further information: Zoho Privacy Notice, Zoho Privacy FAQ, and Zoho Mail Deletion and Retention Rules.

8. Optional usage statistics and performance measurement

Optional statistics and performance measurement services remain disabled until you make a selection. In the first notice, you can accept or reject all optional purposes. Under "How your data is used", you can control the purposes separately:

  • Usage statistics: Umami Analytics and Vercel Web Analytics;
  • Performance measurement: Vercel Speed Insights.

Selecting "Accept" activates both optional purposes. Selecting "Reject" keeps both disabled. You can save an individual selection in the settings. Technically necessary functions are shown there as "Required" and cannot be disabled.

Loading the optional scripts and the associated access to information on your terminal equipment are based on your consent under Section 25(1) TDDDG. The subsequent processing of personal data is based on Art. 6(1)(a) GDPR.

You can change or withdraw your consent at any time with effect for the future via "How your data is used". Withdrawal does not affect the lawfulness of processing carried out up to that point. Rejecting optional purposes does not affect the basic usability of the websites.

Your selection is stored locally in your browser for each domain. The selected purposes, the time of the decision, the language used, and the version of the consent information are stored. If the consent information changes materially, a new selection may be required.

Withdrawal stops new collection for the withdrawn purpose. Where personal analytics records can be reliably associated with you and no other valid legal basis permits their continued retention, those records must also be erased. This does not require removing contributions from genuinely anonymous statistics. Section 13 explains the limits where we cannot identify the records concerned.

8.1 Vercel Web Analytics

If you consent to usage statistics, we use Vercel Web Analytics from Vercel Inc.

The service helps us understand which public pages are accessed, which general sources visits come from, and which browser and device categories are used. In particular, the following may be processed:

  • time of the event;
  • accessed public path and technical route;
  • referrer, where available;
  • country or region;
  • browser and browser version;
  • operating system and version;
  • device type;
  • version of the analytics script.

Our configuration removes query parameters and URL fragments from the analytics events sent to Vercel Web Analytics. The public URL path may remain part of the event. This cleaning applies only to analytics events; for an ordinary technical website request, Vercel may process existing paths and query parameters as the hosting provider.

According to the provider, Vercel Web Analytics does not use third-party cookies. For a daily visitor count, a technical identifier is derived from request data and discarded or newly generated after 24 hours. We do not use the data for cross-website tracking or account-related visitor profiles.

The 24-hour identifier is not the same as the retention period for statistics events. In our Vercel Pro plan without Web Analytics Plus, the reporting period available to us is generally up to twelve months. This reporting period is not a guarantee that Vercel deletes all underlying technical data immediately after it expires; Vercel's purpose-specific retention and deletion rules apply in addition.

Further information: Vercel Web Analytics, privacy and data fields and Vercel Web Analytics.

8.2 Vercel Speed Insights

If you consent to performance measurement, we use Vercel Speed Insights from Vercel Inc.

Speed Insights uses browser interfaces to measure the actual loading and rendering performance of public pages. In particular, the following may be processed:

  • cleaned public path and technical route;
  • measured performance value and technical attribution information;
  • general network speed;
  • browser, operating system, and device type;
  • country;
  • SDK or script version;
  • time the measurement value was received.

Query parameters and URL fragments are removed before transmission by our configuration. The service is not used to reconstruct a cross-page session or identify individual visitors.

Vercel's reporting window depends on the Speed Insights tier: ordinary Speed Insights offers date ranges of up to seven days, while Speed Insights Plus on Pro includes 30 days. These dashboard windows describe access to reports, not a guaranteed complete deletion period for all underlying personal or technical provider data. Vercel's purpose-specific retention criteria apply separately.

Further information: Vercel Speed Insights, privacy and data fields and Vercel Speed Insights, limits and reporting periods.

8.3 Umami Analytics

If you consent to usage statistics, we use the open-source Umami Analytics software via analytics.lanfermann.dev.

We operate the Umami application and PostgreSQL database on a virtual server in Vienna, Austria, provided by netcup GmbH. The collection endpoint reaches our server directly over HTTPS. Cloudflare provides DNS for this endpoint and does not proxy its analytics requests.

The infrastructure provider is:

netcup GmbH Emmy-Noether-Straße 10 76131 Karlsruhe Germany

Our website client software is configured so that Umami is loaded only after your consent. Automatic page view tracking, automatic general click collection, performance measurement, session replay, heatmaps, and identification functions are disabled in our integration. Page views and selected interactions are transmitted deliberately after consent.

In particular, the following information may be processed:

  • normalized public path, hostname, and page title;
  • cleaned referrer;
  • screen resolution and browser language;
  • browser, operating system, and device type;
  • approximate location at country, region, or city level;
  • pseudonymous session and event identifiers;
  • fixed event names and sparse event properties;
  • standardized campaign parameters utm_source, utm_medium, utm_campaign, utm_content, and utm_term, where they meet the technical length and character limits of our website.

The IP address and full user agent are technically processed at the network and server level. Umami temporarily uses request characteristics to determine approximate location and create a pseudonymous session. The raw IP address is not written to the session or event records in our Umami analytics database. Umami instead stores derived, pseudonymous session identifiers and approximate location; this does not make the records anonymous. Technical server logs may contain request metadata. Container logs use size-based rotation with up to three 10 MB files per container; this is not a fixed time-based deletion period.

Our regular website is configured in particular as follows:

  • Search events do not contain the entered search text, but only its length, the number of results, and the category of the highest-ranked result or the value "unmatched";
  • Events from the contact interface contain at most the general contact category and information about whether the name and message were completed, but not the entered content;
  • Scroll and conversion events contain only predefined event names and the sparse values intended for them;
  • Other query parameters and URL fragments are removed before regular transmission.

These restrictions are implemented by the website client software we provide. We do not use the Umami endpoint to receive free-form content.

A daily deletion job removes analytics data older than 13 months from the active database. Daily backups are encrypted before upload to a private Amazon S3 bucket in Frankfurt (eu-central-1), with additional S3 server-side encryption. Backups become eligible for automatic deletion after 30 days; S3 performs deletion asynchronously. A backup can therefore temporarily retain data that has already been deleted from the active database. The retention purge runs before restored data is made available again. The backup decryption key is stored separately from the server. AWS processing and international transfers are described in sections 4.3 and 10.

A separate internal reporting system retains copies from our earlier analytics setup. Its detailed event and session records are configured to expire after 90 days. Raw import copies have separate expiry timestamps, generally 90 days after import or refresh, so these copies can outlast the detailed event view. Summary reports and reporting configuration are not covered by that detail-expiry rule. Deletion requests must therefore also be assessed against these separate copies.

Further information: Umami Documentation, netcup Privacy Policy, and Amazon S3 backup expiration.

Analytics preferences

Optional usage analytics and performance measurement are currently disabled.

10. Recipients and international data transfers

Depending on the function you use and your consent, recipients of personal data may include in particular Vercel, Cloudflare, Amazon Web Services, netcup, and Zoho. Disclosure takes place only where necessary to provide the relevant function, a legal basis exists, and the data protection agreements required by contract have been concluded.

Vercel, Cloudflare, and parts of the AWS infrastructure are based in the United States or use global infrastructures. To the extent a transfer to a US company is covered by its current certification under the EU-US Data Privacy Framework that applies to the specific processing, the transfer is based on the European Commission's adequacy decision under Art. 45 GDPR.

Where such certification does not apply or a transfer takes place to another third country, we use in particular the standard contractual clauses approved by the European Commission under Art. 46(2)(c) GDPR. We take a transfer assessment into account and, where necessary, supplementary technical and organizational measures.

For Zoho, the primary service data are processed in the EU data center region. In rare cases, limited support access may take place from India; according to its own information, Zoho uses standard contractual clauses and supplementary measures for this.

You can request a copy of the relevant safeguards or further information about transfers to third countries from Justin@Lanfermann.dev. Trade secrets and security-relevant information may be redacted appropriately.

Further information about the EU-US Data Privacy Framework is provided by the European Commission.

11. Overview of the main retention periods

Storage and deletion rules
ProcessingRetention period or criterion
Umami analytics and session data in the active databaseDaily deletion of data older than 13 months; encrypted backups separately expire after 30 days, with asynchronous S3 deletion
Umami and proxy container logsOlder log entries are removed when the storage limit is reached. The retention period depends on log volume, not a fixed number of days.
Cloudflare logsWe do not export request logs. Cloudflare retains operational and security data as needed to provide and secure its services and meet legal obligations. See Cloudflare’s retention criteria.
CloudFront visitor access logsDisabled
Access cookie for protected resourcesNo more than 24 hours
Local settings and consent selectionUntil changed, technically invalidated, or the website data is deleted in the browser
Email communicationAs long as necessary for processing, appropriate follow-up, documentation, legal obligations, or specific legal claims; then deleted
Recent commands and Snake best score30 days per selection or saved best score; expired values are discarded on the next storage access (section 5).

The periods below describe identifier lifetimes and the history available in Vercel’s dashboard. They are distinct from deletion periods for underlying records. See sections 4 and 8 for the processing and retention details.

Identifier lifetime and dashboard access
Service or identifierLifetime or reporting window
Vercel runtime logsUp to 1 day on Pro without Observability Plus. Vercel documentation.
Vercel Web Analytics identifier24 hours. Vercel privacy information.
Vercel Web AnalyticsGenerally up to 12 months without Web Analytics Plus. Vercel documentation.
Vercel Speed Insights7 days, or 30 days with Speed Insights Plus on Pro. Vercel documentation.

Where data must be retained for longer because of legal obligations or to assert, exercise, or defend legal claims, processing is restricted to that purpose. The data are deleted when the reason no longer applies. The contractual and documented deletion or overwriting criteria of the relevant infrastructure provider apply to backup and recovery copies managed by that provider; we do not use such copies for ordinary processing purposes.

12. Data security

We use appropriate technical and organizational measures to protect personal data against loss, manipulation, unauthorized access, and unauthorized disclosure. Transmission between your browser and our publicly accessible services is encrypted via HTTPS/TLS.

Despite appropriate protective measures, data transmission over the Internet cannot be guaranteed to be entirely risk-free.

13. Your rights

Subject to the statutory requirements, you have in particular the following rights:

  • Access to the personal data we process under Art. 15 GDPR;
  • Rectification of inaccurate data under Art. 16 GDPR;
  • Erasure under Art. 17 GDPR;
  • Restriction of processing under Art. 18 GDPR;
  • Data portability under Art. 20 GDPR, where the statutory requirements are met;
  • Withdrawal of consent at any time with effect for the future under Art. 7(3) GDPR;
  • Complaint to a data protection supervisory authority under Art. 77 GDPR.

Right to object under Art. 21 GDPR

Where we process personal data on the basis of Art. 6(1)(f) GDPR, you have the right to object to this processing at any time on grounds relating to your particular situation.

Following your objection, we generally no longer process the data concerned unless we can demonstrate compelling legitimate grounds that override your interests, rights, and freedoms, or the processing serves the establishment, exercise, or defense of legal claims.

You can submit your objection to Justin@Lanfermann.dev.

To exercise your rights, a message to Justin@Lanfermann.dev is sufficient. Where we have reasonable doubts about your identity, we may request the additional information necessary to verify it. We respond without undue delay and in any event within one month of receiving your request. Where necessary because of the complexity or number of requests, this period may be extended by up to two further months. We inform you of the extension and its reasons within the initial month.

Some statistics records are not directly associated with a named person. Under Art. 11 GDPR, we do not have to collect additional identifying information solely to identify someone for a rights request. If we can demonstrate that we cannot identify the records relating to you, we explain this where possible; the rights in Articles 15 to 20 do not apply in that situation unless information you provide enables identification. We consider available session information and any information you supply that could enable a reliable association. The absence of a name alone does not establish that association is impossible.

14. Right to complain and competent supervisory authority

You may lodge a complaint with a data protection supervisory authority, in particular in the member state of your habitual residence, your place of work, or the place of the alleged infringement.

The authority competent for us is:

Bavarian State Office for Data Protection Supervision (BayLDA) Promenade 18 91522 Ansbach Germany Telephone: +49 (0) 981 180093-0 Email: poststelle@lda.bayern.de

Further information and the online complaint form are available on the BayLDA website.

15. Changes to this Privacy Policy

We adapt this Privacy Policy when our websites, the services used, or the legal requirements change. The update date shown in each case indicates the version of the policy.

If a purpose requiring consent, a provider, or the scope of data changes materially, we do not automatically use an existing consent for the changed processing. Instead, we obtain a new selection where necessary.