import PageTitle from "../../components/PageTitle";
import { metadata as defaultMetadata } from "../layout";

export const metadata = {
  title: "Privacy",
  openGraph: {
    ...defaultMetadata.openGraph,
    title: "Privacy",
    url: "/privacy",
  },
  alternates: {
    ...defaultMetadata.alternates,
    canonical: "/privacy",
  },
};

<PageTitle canonical="/privacy">Privacy</PageTitle>

Okay, this is an easy one. 😉

## Hosting

Pages and first-party assets on this website are served by [**▲ Vercel**](https://vercel.com/). Refer to their [privacy policy](https://vercel.com/legal/privacy-policy) for more information.

For a likely excessive level of privacy and security, this website is also mirrored on the [🧅 Tor network](https://www.torproject.org/) at:

> [**jarvis2i2vp4j4tbxjogsnqdemnte5xhzyi7hziiyzxwge3hzmh57zad.onion**](http://jarvis2i2vp4j4tbxjogsnqdemnte5xhzyi7hziiyzxwge3hzmh57zad.onion/)

## Analytics

A very simple hit counter on each blog post tallies an aggregate number of pageviews (i.e. `hits = hits + 1`) in a [Neon Postgres](https://neon.tech/) database. Individual views and identifying (or non-identifying) details are **never stored or logged**.

The [database schema](https://github.com/jakejarvis/jarv.is/blob/main/prisma/schema.prisma), [serverless function](https://github.com/jakejarvis/jarv.is/blob/main/app/api/hits/route.ts) and [client script](https://github.com/jakejarvis/jarv.is/blob/main/app/notes/%5Bslug%5D/counter.tsx) are open source, and [snapshots of the database](https://github.com/jakejarvis/website-stats) are public.

[**Vercel Analytics**](https://vercel.com/products/observability) is also used to gain insights into referrers, search terms, etc. [without collecting anything identifiable](https://vercel.com/docs/analytics/privacy-policy#data-point-information) about you.

## Third-Party Content

Occasionally, embedded content from third-party services is included in posts, and some may contain tracking code that is outside of my control. Please refer to their privacy policies for more information:

- [CodePen](https://blog.codepen.io/documentation/privacy/)
- [GitHub](https://docs.github.com/en/github/site-policy/github-privacy-statement)
- [Twitter](https://twitter.com/en/privacy)
- [Vimeo](https://vimeo.com/privacy)
- [YouTube](https://policies.google.com/privacy)

## Fighting Spam

Using [**Cloudflare Turnstile**](https://www.cloudflare.com/products/turnstile/) to fight bot spam on the [contact form](/contact) was an easy choice over seemingly unavoidable alternatives like [reCAPTCHA](https://developers.google.com/recaptcha/).

You can refer to Cloudflare's [privacy policy](https://www.cloudflare.com/privacypolicy/) and [terms of service](https://www.cloudflare.com/website-terms/) for more details. While some information is sent to the Turnstile API about your behavior (on the contact page only), at least you won't be helping a certain internet conglomerate [train their self-driving cars](https://blog.cloudflare.com/moving-from-recaptcha-to-hcaptcha/). 🚗
