This commit is contained in:
Timo Knuth
2026-01-25 14:59:25 +01:00
parent eef4855c1b
commit 30c1e57eab
104 changed files with 24652 additions and 24741 deletions

View File

@@ -1,42 +0,0 @@
/** @type {import('next-sitemap').IConfig} */
module.exports = {
siteUrl: 'https://www.qrmaster.net',
generateRobotsTxt: true,
robotsTxtOptions: {
policies: [
{
userAgent: '*',
allow: '/',
},
],
},
transform: async (config, path) => {
// Custom priority and changefreq based on path
let priority = 0.7;
let changefreq = 'weekly';
if (path === '/') {
priority = 0.9;
changefreq = 'daily';
} else if (path === '/blog') {
priority = 0.7;
changefreq = 'daily';
} else if (path === '/pricing') {
priority = 0.8;
changefreq = 'weekly';
} else if (path === '/faq') {
priority = 0.6;
changefreq = 'weekly';
} else if (path.startsWith('/blog/')) {
priority = 0.6;
changefreq = 'weekly';
}
return {
loc: path,
changefreq,
priority,
lastmod: new Date().toISOString(),
};
},
};

43
package-lock.json generated
View File

@@ -66,7 +66,6 @@
"cross-env": "^10.1.0", "cross-env": "^10.1.0",
"eslint": "^8.56.0", "eslint": "^8.56.0",
"eslint-config-next": "^16.1.1", "eslint-config-next": "^16.1.1",
"next-sitemap": "^4.2.3",
"postcss": "^8.4.32", "postcss": "^8.4.32",
"prettier": "^3.1.1", "prettier": "^3.1.1",
"prisma": "^5.7.0", "prisma": "^5.7.0",
@@ -1373,13 +1372,6 @@
"node": ">=6.9.0" "node": ">=6.9.0"
} }
}, },
"node_modules/@corex/deepmerge": {
"version": "4.0.43",
"resolved": "https://registry.npmjs.org/@corex/deepmerge/-/deepmerge-4.0.43.tgz",
"integrity": "sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==",
"dev": true,
"license": "MIT"
},
"node_modules/@edge-runtime/cookies": { "node_modules/@edge-runtime/cookies": {
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/@edge-runtime/cookies/-/cookies-6.0.0.tgz", "resolved": "https://registry.npmjs.org/@edge-runtime/cookies/-/cookies-6.0.0.tgz",
@@ -9444,41 +9436,6 @@
"uuid": "dist/bin/uuid" "uuid": "dist/bin/uuid"
} }
}, },
"node_modules/next-sitemap": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/next-sitemap/-/next-sitemap-4.2.3.tgz",
"integrity": "sha512-vjdCxeDuWDzldhCnyFCQipw5bfpl4HmZA7uoo3GAaYGjGgfL4Cxb1CiztPuWGmS+auYs7/8OekRS8C2cjdAsjQ==",
"dev": true,
"funding": [
{
"url": "https://github.com/iamvishnusankar/next-sitemap.git"
}
],
"license": "MIT",
"dependencies": {
"@corex/deepmerge": "^4.0.43",
"@next/env": "^13.4.3",
"fast-glob": "^3.2.12",
"minimist": "^1.2.8"
},
"bin": {
"next-sitemap": "bin/next-sitemap.mjs",
"next-sitemap-cjs": "bin/next-sitemap.cjs"
},
"engines": {
"node": ">=14.18"
},
"peerDependencies": {
"next": "*"
}
},
"node_modules/next-sitemap/node_modules/@next/env": {
"version": "13.5.11",
"resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.11.tgz",
"integrity": "sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg==",
"dev": true,
"license": "MIT"
},
"node_modules/next/node_modules/postcss": { "node_modules/next/node_modules/postcss": {
"version": "8.4.31", "version": "8.4.31",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",

View File

@@ -85,7 +85,6 @@
"cross-env": "^10.1.0", "cross-env": "^10.1.0",
"eslint": "^8.56.0", "eslint": "^8.56.0",
"eslint-config-next": "^16.1.1", "eslint-config-next": "^16.1.1",
"next-sitemap": "^4.2.3",
"postcss": "^8.4.32", "postcss": "^8.4.32",
"prettier": "^3.1.1", "prettier": "^3.1.1",
"prisma": "^5.7.0", "prisma": "^5.7.0",

View File

@@ -183,11 +183,7 @@ export default function BulkQRCodeGeneratorPage() {
priceCurrency: 'USD', priceCurrency: 'USD',
availability: 'https://schema.org/InStock', availability: 'https://schema.org/InStock',
}, },
aggregateRating: {
'@type': 'AggregateRating',
ratingValue: '4.8',
ratingCount: '980',
},
description: 'Generate hundreds of QR codes at once from CSV or Excel files. Perfect for products, events, inventory management with custom branding.', description: 'Generate hundreds of QR codes at once from CSV or Excel files. Perfect for products, events, inventory management with custom branding.',
featureList: [ featureList: [
'Excel and CSV file import', 'Excel and CSV file import',

View File

@@ -144,11 +144,7 @@ export default function DynamicQRCodeGeneratorPage() {
priceCurrency: 'USD', priceCurrency: 'USD',
availability: 'https://schema.org/InStock', availability: 'https://schema.org/InStock',
}, },
aggregateRating: {
'@type': 'AggregateRating',
ratingValue: '4.9',
ratingCount: '2150',
},
description: 'Create dynamic QR codes that can be edited after printing. Change destination URLs, track scans, and update content without reprinting.', description: 'Create dynamic QR codes that can be edited after printing. Change destination URLs, track scans, and update content without reprinting.',
featureList: [ featureList: [
'Edit QR codes after printing', 'Edit QR codes after printing',

View File

@@ -58,10 +58,6 @@ export default function MarketingGroupLayout({
type="application/ld+json" type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(organizationSchema()) }} dangerouslySetInnerHTML={{ __html: JSON.stringify(organizationSchema()) }}
/> />
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(websiteSchema()) }}
/>
<MarketingLayout> <MarketingLayout>
{children} {children}
</MarketingLayout> </MarketingLayout>

View File

@@ -46,7 +46,7 @@ export async function generateMetadata(): Promise<Metadata> {
export default function HomePage() { export default function HomePage() {
return ( return (
<> <>
<SeoJsonLd data={[organizationSchema(), websiteSchema()]} /> <SeoJsonLd data={[websiteSchema()]} />
{/* Server-rendered SEO content for crawlers */} {/* Server-rendered SEO content for crawlers */}
<div className="sr-only" aria-hidden="false"> <div className="sr-only" aria-hidden="false">

View File

@@ -112,11 +112,7 @@ export default function QRCodeTrackingPage() {
priceCurrency: 'USD', priceCurrency: 'USD',
availability: 'https://schema.org/InStock', availability: 'https://schema.org/InStock',
}, },
aggregateRating: {
'@type': 'AggregateRating',
ratingValue: '4.8',
ratingCount: '1250',
},
description: 'Track QR code scans with real-time analytics. Monitor location, device, time, and user behavior with our free QR code tracking software.', description: 'Track QR code scans with real-time analytics. Monitor location, device, time, and user behavior with our free QR code tracking software.',
features: [ features: [
'Real-time analytics dashboard', 'Real-time analytics dashboard',

View File

@@ -26,6 +26,7 @@ export default function sitemap(): MetadataRoute.Sitemap {
'zoom-qr-code', 'zoom-qr-code',
'teams-qr-code', 'teams-qr-code',
'barcode-generator', 'barcode-generator',
'website-qr-code-generator',
]; ];
// All blog posts // All blog posts
@@ -50,6 +51,12 @@ export default function sitemap(): MetadataRoute.Sitemap {
changeFrequency: 'weekly', changeFrequency: 'weekly',
priority: 1.0, priority: 1.0,
}, },
{
url: `${baseUrl}/newsletter`,
lastModified: new Date(),
changeFrequency: 'monthly',
priority: 0.7,
},
{ {
url: `${baseUrl}/qr-code-erstellen`, url: `${baseUrl}/qr-code-erstellen`,
lastModified: new Date(), lastModified: new Date(),

View File

@@ -68,8 +68,6 @@ export function organizationSchema() {
slogan: 'Dynamic QR codes that work smarter', slogan: 'Dynamic QR codes that work smarter',
foundingDate: '2025', foundingDate: '2025',
areaServed: 'Worldwide', areaServed: 'Worldwide',
serviceType: 'Software as a Service',
priceRange: '$0 - $29',
knowsAbout: [ knowsAbout: [
'QR Code Generation', 'QR Code Generation',
'Marketing Analytics', 'Marketing Analytics',
@@ -89,6 +87,11 @@ export function organizationSchema() {
applicationCategory: 'BusinessApplication', applicationCategory: 'BusinessApplication',
operatingSystem: 'Web Browser', operatingSystem: 'Web Browser',
image: 'https://www.qrmaster.net/static/og-image.png', image: 'https://www.qrmaster.net/static/og-image.png',
offers: {
'@type': 'Offer',
price: '0',
priceCurrency: 'EUR',
},
}, },
}, },
{ {
@@ -99,12 +102,15 @@ export function organizationSchema() {
applicationCategory: 'BusinessApplication', applicationCategory: 'BusinessApplication',
operatingSystem: 'Web Browser', operatingSystem: 'Web Browser',
image: 'https://www.qrmaster.net/static/og-image.png', image: 'https://www.qrmaster.net/static/og-image.png',
offers: {
'@type': 'Offer',
price: '9',
priceCurrency: 'EUR',
},
}, },
}, },
], ],
}, },
inLanguage: 'en',
mainEntityOfPage: 'https://www.qrmaster.net',
}; };
} }