Privacy policy

This page explains what information this site collects, why it is used, and how you can contact me about it.

This privacy policy applies to kurtisjustin.co.uk. It covers the personal website of Kurtis Justin, including the contact form, privacy-friendly analytics and links to other services.

Who runs this site

This site is run by Kurtis Justin. You can contact me at [email protected].

What information this site collects

This site may collect information in a few limited ways:

  • Information you choose to send through the contact form, such as your name, email address, subject and message.
  • Basic technical information needed to keep the site working, such as requests made to the site and security checks on the contact form.
  • Aggregate website-usage statistics from KJ’s Counter, using reviewed page and action names and a coarse country code.

Contact form

If you use the contact form, I will use the information you provide to read and respond to your message. This may include your name, email address, subject and message.

The contact form uses Cloudflare Turnstile for spam checks, a DigitalOcean Function and Resend for delivery to my mailbox. This separate contact service can process your connection IP for security and a short-lived in-memory rate limit. The contact email can include the submission page URL and browser user-agent. Those contact-service details and your form values are never copied into Counter analytics.

I keep contact messages for as long as needed to respond and manage the conversation. I may keep a copy for my records where there is an ongoing project, role conversation, collaboration or practical reason to refer back to it.

Analytics

When a link takes you between this site and KJ’s Games, Counter can count that arrival using a fixed site label in the link. The label is removed from the address bar after the page loads. Only the site label is recorded; no referring page, full URL or other query value is sent. This uses no analytics cookies, browser storage or visitor identifiers, and does not link your activity across the sites.

KJ’s Counter records explicit page, navigation, case-study, CV PDF and contact-form facts. It stores event rows and produces aggregate statistics, without visitor identifiers, sessions, fingerprints, contact values, full URLs or referring pages. The browser creates no analytics cookies or persistent storage.

Cloudflare processes incoming connection information to supply a coarse country code to the collector. Only that code, or Unknown when unavailable, is stored with analytics in Turso through DigitalOcean Functions. IP addresses and precise location are not analytics database fields. Country is an approximate description of the network used for an event, not proof of residence or identity; VPNs and network routing can affect it. Hosting and security providers still process network requests separately.

Raw analytics events become eligible for compaction after 30 days. A daily scheduled compaction process persists daily statistics and removes the corresponding raw rows in one transaction. Failed runs or backlogs can extend raw storage beyond 30 days; the schedule is not a strict age ceiling. Daily statistics remain after compaction; backups and exports require separate retention management.

I use these statistics to understand and improve the site, not for advertising, profiling or identifying visitors. The Privacy & analytics page explains the event and browser-storage boundaries.

Cookies and browser storage

Reading colours, extra reading space and the pause-animations choice can be saved in localStorage on this browser. These optional display preferences contain no identifier and are not sent to Counter or the contact service.

Counter creates no analytics cookies or browser-storage entries. Navigation previews can remember their displayed state in sessionStorage, independently of analytics. Cloudflare hosting and Turnstile can use separate security mechanisms or security cookies; no whole-site cookie-free claim is made.

This site links to external services such as LinkedIn, GitHub, KJ’s Games and other project websites. Those sites have their own privacy policies and settings. I am not responsible for how external sites handle your information.

Sharing information

I do not sell personal information.

I may share information with service providers where needed to run the site, deliver contact-form messages, protect the site from spam or provide privacy-friendly aggregate analytics. I may also share information if required by law.

Your rights

Depending on your location and the information involved, you may have rights to request access to your personal information, ask for it to be corrected, ask for it to be deleted, object to certain uses, or ask for processing to be restricted.

To ask about your information, email [email protected].

If you are in the UK and are unhappy with how your information is handled, you can contact the Information Commissioner’s Office.

Updates to this policy

This policy may be updated as the site changes, especially as analytics or contact features are refined.

Last updated: 9 October 2026.

Related page

For details about Counter, country statistics and browser storage, read the Privacy & analytics page.