This commit is contained in:
Timo Knuth 2026-01-12 16:56:52 +01:00
parent beed961eef
commit 111575aeda
5 changed files with 37 additions and 2 deletions

View File

@ -0,0 +1,4 @@
Contact: mailto:security@qrmaster.net
Expires: 2027-01-01T00:00:00.000Z
Strategies: https://www.qrmaster.net/.well-known/security.txt
Preferred-Languages: en, de

13
public/humans.txt Normal file
View File

@ -0,0 +1,13 @@
/* TEAM */
Founder: Timo Knuth
Site: https://qrmaster.net
Twitter: @qrmaster
/* THANKS */
Thanks to: Next.js, Vercel, Tailwind CSS, Stripe, Supabase
/* SITE */
Last update: 2026/01/12
Language: English, German
Doctype: HTML5
IDE: VS Code

View File

@ -3,6 +3,8 @@ import type { Metadata } from 'next';
import SeoJsonLd from '@/components/SeoJsonLd';
import { organizationSchema, websiteSchema } from '@/lib/schema';
import HomePageClient from '@/components/marketing/HomePageClient';
import { generateFaqSchema } from '@/lib/schema-utils';
import en from '@/i18n/en.json'; // Import English translations for schema generation
function truncateAtWord(text: string, maxLength: number): string {
if (text.length <= maxLength) return text;
@ -45,7 +47,7 @@ export async function generateMetadata(): Promise<Metadata> {
export default function HomePage() {
return (
<>
<SeoJsonLd data={[organizationSchema(), websiteSchema()]} />
<SeoJsonLd data={[organizationSchema(), websiteSchema(), generateFaqSchema(en.faq.questions)]} />
{/* Server-rendered SEO content for crawlers */}
<div className="sr-only" aria-hidden="false">

View File

@ -2,6 +2,7 @@ import React from 'react';
import type { Metadata } from 'next';
import SeoJsonLd from '@/components/SeoJsonLd';
import { organizationSchema, websiteSchema } from '@/lib/schema';
import { generateFaqSchema } from '@/lib/schema-utils';
import { Hero } from '@/components/marketing/Hero';
import { InstantGenerator } from '@/components/marketing/InstantGenerator';
import { StaticVsDynamic } from '@/components/marketing/StaticVsDynamic';
@ -66,7 +67,7 @@ export default function QRCodeErstellenPage() {
return (
<>
<SeoJsonLd data={[organizationSchema(), websiteSchema()]} />
<SeoJsonLd data={[organizationSchema(), websiteSchema(), generateFaqSchema(t.faq.questions)]} />
{/* Server-rendered SEO content for crawlers - GERMAN */}
<div className="sr-only" aria-hidden="false">

15
src/lib/schema-utils.ts Normal file
View File

@ -0,0 +1,15 @@
export function generateFaqSchema(questions: Record<string, { question: string; answer: string }>) {
return {
'@context': 'https://schema.org',
'@type': 'FAQPage',
mainEntity: Object.values(questions).map((item) => ({
'@type': 'Question',
name: item.question,
acceptedAnswer: {
'@type': 'Answer',
text: item.answer,
},
})),
};
}