The site now presents one freelance developer on one page: hero, introduction, four typical cases (developer for a product, make an app reliable, automate a process, a website) with what you get, how it runs and what it costs, a process automation section, technology and project fit, how I work, two live references, questions and contact. - Hero and closing headline are drawn from running binary digits. - Each case explains its four steps with an animated drawing; the automation section shows example workflows with work travelling between systems; a pipeline run shows what a test catches before a release. - Contact is one email address, kept in parts and assembled in the browser so it never appears in the page source (src/domain/email.ts, spec first). - Imprint and privacy pages added. - The old site (blog, case studies, contact form, fixed-price pages, video rendering and related scripts) is removed. Its URLs redirect to the homepage. - The deploy smoke test checks the legal pages and the redirects instead of the removed case study. - Dev scripts use docker compose v2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
98 lines
3.7 KiB
TypeScript
98 lines
3.7 KiB
TypeScript
import type { Metadata } from "next";
|
|
import { EmailLink } from "@/src/components/EmailLink";
|
|
import { LegalPage, LegalSection } from "@/src/components/LegalPage";
|
|
import { OWNER } from "@/src/content/site";
|
|
|
|
export const metadata: Metadata = {
|
|
title: "Privacy",
|
|
description: "How mintel.me handles personal data.",
|
|
alternates: { canonical: "/privacy" },
|
|
robots: { index: false, follow: true },
|
|
};
|
|
|
|
const LINK = "font-bold text-slate-900 underline-offset-4 hover:underline";
|
|
|
|
export default function PrivacyPage() {
|
|
return (
|
|
<LegalPage title="Privacy">
|
|
<LegalSection heading="Who is responsible">
|
|
<p>
|
|
{OWNER.name}, {OWNER.street}, {OWNER.city}, {OWNER.country}.
|
|
<br />
|
|
Email: <EmailLink className={LINK} />
|
|
</p>
|
|
</LegalSection>
|
|
|
|
<LegalSection heading="In short">
|
|
<p>
|
|
This website sets no cookies, shows no advertising and includes no
|
|
content from third parties. Fonts and images are served from this
|
|
website itself.
|
|
</p>
|
|
</LegalSection>
|
|
|
|
<LegalSection heading="Server logs">
|
|
<p>
|
|
When you open a page, the server processes technical data that your
|
|
browser sends: your IP address, the time, the page requested and the
|
|
browser type. This is necessary to deliver the website and to keep it
|
|
secure. The legal basis is my legitimate interest in running the
|
|
website (Article 6(1)(f) GDPR).
|
|
</p>
|
|
</LegalSection>
|
|
|
|
<LegalSection heading="Visitor statistics">
|
|
<p>
|
|
I count page views with Umami, which I run on my own server. It works
|
|
without cookies and does not create profiles of individual visitors.
|
|
The data is not passed on to third parties. The legal basis is my
|
|
legitimate interest in understanding how the website is used (Article
|
|
6(1)(f) GDPR).
|
|
</p>
|
|
</LegalSection>
|
|
|
|
<LegalSection heading="Error reports">
|
|
<p>
|
|
If something on this website fails technically, an error report is
|
|
sent to an error tracking service that I run on my own server. It
|
|
contains technical details such as the page, the browser and the error
|
|
message. Sessions are not recorded. The legal basis is my legitimate
|
|
interest in a working website (Article 6(1)(f) GDPR).
|
|
</p>
|
|
</LegalSection>
|
|
|
|
<LegalSection heading="Storage in your browser">
|
|
<p>
|
|
If loading a page fails, the website stores a timestamp in your
|
|
browser's session storage so that it reloads only once. It is
|
|
deleted when you close the tab and is not sent anywhere.
|
|
</p>
|
|
</LegalSection>
|
|
|
|
<LegalSection heading="When you write to me">
|
|
<p>
|
|
If you send me an email, I process what you write and your address in
|
|
order to answer you and, if it comes to that, to prepare a contract
|
|
(Article 6(1)(b) GDPR). I keep the correspondence for as long as it is
|
|
needed for that purpose or as the law requires.
|
|
</p>
|
|
</LegalSection>
|
|
|
|
<LegalSection heading="Your rights">
|
|
<p>You have the right to:</p>
|
|
<ul>
|
|
<li>ask what data I hold about you</li>
|
|
<li>have incorrect data corrected</li>
|
|
<li>have your data deleted or its processing restricted</li>
|
|
<li>object to processing that is based on legitimate interest</li>
|
|
<li>receive your data in a portable format</li>
|
|
<li>complain to a data protection supervisory authority</li>
|
|
</ul>
|
|
<p>
|
|
To use any of these rights, write to <EmailLink className={LINK} />.
|
|
</p>
|
|
</LegalSection>
|
|
</LegalPage>
|
|
);
|
|
}
|