import React from 'react'; import type { Metadata } from 'next'; import EventGenerator from './EventGenerator'; import { Calendar, Shield, Zap, Smartphone, Clock, UserCheck, Download, Share2, Check } from 'lucide-react'; import { QRCodeSVG } from 'qrcode.react'; import { ToolBreadcrumb } from '@/components/seo/BreadcrumbSchema'; import { RelatedTools } from '@/components/marketing/RelatedTools'; // SEO Optimized Metadata export const metadata: Metadata = { title: { absolute: 'Free Event QR Code Generator | Termin & Kalender QR | QR Master', }, description: 'Create a QR code for your event. Verabredung & Termine direkt in den Kalender speichern. Save the date instantly. Free & Easy.', keywords: ['event qr code', 'calendar qr code', 'save the date qr', 'ical qr generator', 'invitation qr code', 'event qr code erstellen', 'veranstaltung qr code', 'kalender qr code', 'termin qr code', 'save the date qr code'], alternates: { canonical: 'https://www.qrmaster.net/tools/event-qr-code', }, openGraph: { title: 'Free Event QR Code Generator | QR Master', description: 'Generate QR codes to save events to calendars. Share dates easily.', type: 'website', url: 'https://www.qrmaster.net/tools/event-qr-code', images: [{ url: '/og-event-generator.png', width: 1200, height: 630 }], }, twitter: { card: 'summary_large_image', title: 'Free Event QR Code Generator', description: 'Create QR codes for events. Instant save-to-calendar.', }, robots: { index: true, follow: true, }, }; // JSON-LD Structured Data const jsonLd = { '@context': 'https://schema.org', '@graph': [ { '@type': 'SoftwareApplication', name: 'Event QR Code Generator', applicationCategory: 'UtilitiesApplication', operatingSystem: 'Web Browser', offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD', }, aggregateRating: { '@type': 'AggregateRating', ratingValue: '4.8', ratingCount: '760', }, description: 'Generate QR codes that add event details to the user\'s digital calendar.', }, { '@type': 'HowTo', name: 'How to Create an Event QR Code', description: 'Create a QR code that saves an event to a calendar.', step: [ { '@type': 'HowToStep', position: 1, name: 'Enter Event Details', text: 'Fill in the Event Title, Location, Description, Start Time, and End Time.', }, { '@type': 'HowToStep', position: 2, name: 'Customize', text: 'Choose a color and frame style like "Save the Date".', }, { '@type': 'HowToStep', position: 3, name: 'Download', text: 'Save the QR code and add it to your invitations.', }, { '@type': 'HowToStep', position: 4, name: 'Test', text: 'Scan the code to ensure the event details and times are correct.', }, { '@type': 'HowToStep', position: 5, name: 'Share', text: 'Distribute it via email, flyers, or social media.', }, ], totalTime: 'PT45S', }, { '@type': 'FAQPage', mainEntity: [ { '@type': 'Question', name: 'Which calendars does it support?', acceptedAnswer: { '@type': 'Answer', text: 'The QR code uses the standard iCalendar (ICS) format. It works with Apple Calendar, Google Calendar, Outlook, and most other mobile calendar apps.', }, }, { '@type': 'Question', name: 'Can I change the date after printing?', acceptedAnswer: { '@type': 'Answer', text: 'No. This is a static QR code, meaning the event details are permanently embedded in the image. If the date changes, you must create a new QR code. Use our Dynamic QR Code to edit events anytime.', }, }, { '@type': 'Question', name: 'Is there a limit to the description length?', acceptedAnswer: { '@type': 'Answer', text: 'Yes, because the data is stored in the QR code pattern. We recommend keeping descriptions concise (under 300 characters) to ensure the code remains easy to scan.', }, }, { '@type': 'Question', name: 'Do users need an app?', acceptedAnswer: { '@type': 'Answer', text: 'No special app is needed. Standard camera apps on iOS and Android can read the code and will prompt the user to "Add to Calendar".', }, }, { '@type': 'Question', name: 'Is it free?', acceptedAnswer: { '@type': 'Answer', text: 'Yes. Creating and scanning the code is completely free and requires no signup.', }, }, ], }, ], }; export default function EventQRCodePage() { return ( <>