Files
mintel.me/apps/web/src/content/site.ts
T
mmintelandClaude Opus 5.5 123ab8e354
Build & Deploy / 🔍 Prepare (push) Successful in 5s
Build & Deploy / 🏗️ Build (push) Successful in 6m28s
Build & Deploy / 🚀 Deploy (push) Successful in 17s
Build & Deploy / 🩺 Smoke Test (push) Successful in 4s
Build & Deploy / 🔔 Notify (push) Successful in 2s
feat: share image, metadata and icons that match the new site
The link preview used an old template with a blog description. The share
image is now a screenshot of the real hero (scripts/render-share-image.mjs),
served as Open Graph and Twitter image. Title and description come from one
place and are used by the page, the previews and the structured data. Adds an
apple touch icon and removes the old share-image template and its fonts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 23:33:02 +02:00

34 lines
1.2 KiB
TypeScript

import { parseEmailParts, type EmailParts } from "@/src/domain/email";
export const SITE_NAME = "Marc Mintel";
export const SITE_URL = "https://mintel.me";
/** One wording for the browser title, search results and link previews. */
export const SITE_TITLE =
"Marc Mintel — Freelance developer for web apps and websites";
export const SITE_DESCRIPTION =
"Freelance developer with 15 years of experience. I build web apps, interfaces and websites, and automate processes between your systems.";
// The contact address, kept in parts on purpose: the complete address must never
// appear as one string in the page source (see src/components/EmailLink.tsx).
const parsedEmail = parseEmailParts({
user: "hello",
domain: "mintel",
tld: "me",
});
if (parsedEmail.ok === false) {
throw new Error(
`Invalid contact address in src/content/site.ts: ${parsedEmail.error}`,
);
}
export const CONTACT_EMAIL_PARTS: EmailParts = parsedEmail.value;
/** Details required for the imprint (section 5 DDG). */
export const OWNER = {
name: "Marc Mintel",
street: "Georg-Meistermann-Straße 7",
city: "54586 Schüller",
country: "Germany",
vatId: "DE367588065",
} as const;