93 lines
3.4 KiB
TypeScript
93 lines
3.4 KiB
TypeScript
import React from 'react';
|
|
import type { Metadata } from 'next';
|
|
import SeoJsonLd from '@/components/SeoJsonLd';
|
|
import { organizationSchema, websiteSchema, softwareApplicationSchema, reviewSchema, aggregateRatingSchema } from '@/lib/schema';
|
|
import { getFeaturedTestimonials, getAggregateRating } from '@/lib/testimonial-data';
|
|
import HomePageClient from '@/components/marketing/HomePageClient';
|
|
|
|
function truncateAtWord(text: string, maxLength: number): string {
|
|
if (text.length <= maxLength) return text;
|
|
const truncated = text.slice(0, maxLength);
|
|
const lastSpace = truncated.lastIndexOf(' ');
|
|
return lastSpace > 0 ? truncated.slice(0, lastSpace) : truncated;
|
|
}
|
|
|
|
export async function generateMetadata(): Promise<Metadata> {
|
|
const title = truncateAtWord('QR Master: Dynamic QR Generator', 60);
|
|
const description = truncateAtWord(
|
|
'Create dynamic QR codes, track scans, and scale campaigns with secure analytics. Free advanced features, bulk generation, and custom branding available.',
|
|
160
|
|
);
|
|
|
|
return {
|
|
title,
|
|
description,
|
|
keywords: ['qr generator', 'free qr code generator', 'custom qr code generator', 'qr code maker', 'online qr code generator', 'dynamic qr code', 'qr code with logo'],
|
|
alternates: {
|
|
canonical: 'https://www.qrmaster.net/',
|
|
languages: {
|
|
'x-default': 'https://www.qrmaster.net/',
|
|
en: 'https://www.qrmaster.net/',
|
|
de: 'https://www.qrmaster.net/qr-code-erstellen',
|
|
},
|
|
},
|
|
openGraph: {
|
|
title,
|
|
description,
|
|
url: 'https://www.qrmaster.net/',
|
|
type: 'website',
|
|
images: [
|
|
{
|
|
url: 'https://www.qrmaster.net/og-image.png',
|
|
width: 1200,
|
|
height: 630,
|
|
alt: 'QR Master - Dynamic QR Code Generator and Analytics Platform',
|
|
},
|
|
],
|
|
},
|
|
twitter: {
|
|
title,
|
|
description,
|
|
},
|
|
};
|
|
}
|
|
|
|
export default function HomePage() {
|
|
const featuredTestimonials = getFeaturedTestimonials();
|
|
const aggregateRating = getAggregateRating();
|
|
const reviewSchemas = featuredTestimonials.map(t => reviewSchema(t));
|
|
|
|
return (
|
|
<>
|
|
<SeoJsonLd data={[
|
|
websiteSchema(),
|
|
organizationSchema(),
|
|
softwareApplicationSchema(aggregateRating),
|
|
aggregateRatingSchema(aggregateRating),
|
|
...reviewSchemas
|
|
]} />
|
|
|
|
{/* Server-rendered SEO content for crawlers */}
|
|
<div className="sr-only" aria-hidden="false">
|
|
|
|
<p>
|
|
Create professional QR codes for your business with QR Master. Our dynamic QR code generator
|
|
lets you create trackable QR codes, edit destinations anytime, and view detailed analytics.
|
|
Perfect for restaurants, retail, events, and marketing campaigns.
|
|
</p>
|
|
<p>
|
|
Features include: Dynamic QR codes with real-time tracking, bulk QR code generation from Excel/CSV,
|
|
custom branding with colors and logos, advanced scan analytics showing device types and locations,
|
|
vCard QR codes for digital business cards, and restaurant menu QR codes.
|
|
</p>
|
|
<p>
|
|
Start free with 3 active dynamic QR codes and unlimited static codes. Upgrade to Pro for 50 codes
|
|
with advanced analytics, or Business for 500 codes with bulk creation and priority support.
|
|
</p>
|
|
</div>
|
|
|
|
<HomePageClient />
|
|
</>
|
|
);
|
|
}
|