diff --git a/README.md b/README.md index 7b1ca43..43e8019 100644 --- a/README.md +++ b/README.md @@ -473,3 +473,10 @@ For support, email support@qrmaster.net or open an issue on GitHub. --- Built with ❀️ by QR Master Team + + + +Führe diese im Terminal aus: + +IndexNow (Bing/Yandex + Partner): npm run submit:indexnow +Google Indexing API: npm run trigger:indexing \ No newline at end of file diff --git a/next.config.mjs b/next.config.mjs index e49dee2..6a18d4c 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -20,6 +20,25 @@ const nextConfig = { pagesBufferLength: 2, }, poweredByHeader: false, + async redirects() { + return [ + { + source: '/tools/phone-qr-code', + destination: '/tools/call-qr-code-generator', + permanent: true, + }, + { + source: '/barcode-generator', + destination: '/tools/barcode-generator', + permanent: true, + }, + { + source: '/bar-code-generator', + destination: '/tools/barcode-generator', + permanent: true, + }, + ]; + }, }; export default nextConfig; diff --git a/package-lock.json b/package-lock.json index 26eb543..81270b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,6 +63,7 @@ "@types/react": "^18.2.45", "@types/react-dom": "^18.2.18", "autoprefixer": "^10.4.16", + "cross-env": "^10.1.0", "eslint": "^8.56.0", "eslint-config-next": "^16.1.1", "next-sitemap": "^4.2.3", @@ -1422,6 +1423,13 @@ "tslib": "^2.4.0" } }, + "node_modules/@epic-web/invariant": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", + "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", + "dev": true, + "license": "MIT" + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.12", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", @@ -5845,6 +5853,24 @@ "node": ">= 6" } }, + "node_modules/cross-env": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", + "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@epic-web/invariant": "^1.0.0", + "cross-spawn": "^7.0.6" + }, + "bin": { + "cross-env": "dist/bin/cross-env.js", + "cross-env-shell": "dist/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", diff --git a/package.json b/package.json index 9d3a423..7744f62 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "dev": "next dev -p 3050", - "build": "prisma generate && next build", + "build": "prisma generate && cross-env NODE_OPTIONS='--max-old-space-size=4096' next build", "trigger:indexing": "tsx scripts/trigger-indexing.ts", "submit:indexnow": "tsx scripts/submit-indexnow.ts", "start": "next start", @@ -82,6 +82,7 @@ "@types/react": "^18.2.45", "@types/react-dom": "^18.2.18", "autoprefixer": "^10.4.16", + "cross-env": "^10.1.0", "eslint": "^8.56.0", "eslint-config-next": "^16.1.1", "next-sitemap": "^4.2.3", @@ -96,4 +97,4 @@ "engines": { "node": ">=18.0.0" } -} \ No newline at end of file +} diff --git a/public/images/examples/qr_example_business_1769163647196.png b/public/images/examples/qr_example_business_1769163647196.png new file mode 100644 index 0000000..8fb13a7 Binary files /dev/null and b/public/images/examples/qr_example_business_1769163647196.png differ diff --git a/public/images/examples/qr_example_ecommerce_1769163606650.png b/public/images/examples/qr_example_ecommerce_1769163606650.png new file mode 100644 index 0000000..37c0e64 Binary files /dev/null and b/public/images/examples/qr_example_ecommerce_1769163606650.png differ diff --git a/public/images/examples/qr_example_event_1769163635077.png b/public/images/examples/qr_example_event_1769163635077.png new file mode 100644 index 0000000..bf8ca29 Binary files /dev/null and b/public/images/examples/qr_example_event_1769163635077.png differ diff --git a/public/images/examples/qr_example_nonprofit_1769163705055.png b/public/images/examples/qr_example_nonprofit_1769163705055.png new file mode 100644 index 0000000..55444de Binary files /dev/null and b/public/images/examples/qr_example_nonprofit_1769163705055.png differ diff --git a/public/images/examples/qr_example_packaging_1769163674382.png b/public/images/examples/qr_example_packaging_1769163674382.png new file mode 100644 index 0000000..508405e Binary files /dev/null and b/public/images/examples/qr_example_packaging_1769163674382.png differ diff --git a/public/images/examples/qr_example_realestate_1769163689433.png b/public/images/examples/qr_example_realestate_1769163689433.png new file mode 100644 index 0000000..3195f2f Binary files /dev/null and b/public/images/examples/qr_example_realestate_1769163689433.png differ diff --git a/public/images/examples/qr_example_restaurant_1769163621640.png b/public/images/examples/qr_example_restaurant_1769163621640.png new file mode 100644 index 0000000..d32ae6b Binary files /dev/null and b/public/images/examples/qr_example_restaurant_1769163621640.png differ diff --git a/public/images/examples/qr_example_social_1769163660794.png b/public/images/examples/qr_example_social_1769163660794.png new file mode 100644 index 0000000..ddbd75a Binary files /dev/null and b/public/images/examples/qr_example_social_1769163660794.png differ diff --git a/src/app/(marketing)/MarketingLayout.tsx b/src/app/(marketing)/MarketingLayout.tsx index a45fabf..9c567f2 100644 --- a/src/app/(marketing)/MarketingLayout.tsx +++ b/src/app/(marketing)/MarketingLayout.tsx @@ -50,7 +50,7 @@ export default function MarketingLayout({ { name: 'WhatsApp', description: 'Start a chat', href: '/tools/whatsapp-qr-code', icon: MessageCircle, color: 'text-green-500', bgColor: 'bg-green-50' }, { name: 'Email', description: 'Compose an email', href: '/tools/email-qr-code', icon: Mail, color: 'text-amber-500', bgColor: 'bg-amber-50' }, { name: 'SMS', description: 'Send a text message', href: '/tools/sms-qr-code', icon: MessageSquare, color: 'text-cyan-500', bgColor: 'bg-cyan-50' }, - { name: 'Phone', description: 'Start a call', href: '/tools/phone-qr-code', icon: Phone, color: 'text-violet-500', bgColor: 'bg-violet-50' }, + { name: 'Call', description: 'Start a call', href: '/tools/call-qr-code-generator', icon: Phone, color: 'text-violet-500', bgColor: 'bg-violet-50' }, { name: 'Event', description: 'Add calendar event', href: '/tools/event-qr-code', icon: Calendar, color: 'text-red-500', bgColor: 'bg-red-50' }, { name: 'Location', description: 'Share a place', href: '/tools/geolocation-qr-code', icon: MapPin, color: 'text-emerald-500', bgColor: 'bg-emerald-50' }, { name: 'Facebook', description: 'Facebook profile/page', href: '/tools/facebook-qr-code', icon: Facebook, color: 'text-blue-600', bgColor: 'bg-blue-50' }, @@ -85,7 +85,7 @@ export default function MarketingLayout({
  • WhatsApp QR Code
  • Email QR Code
  • SMS QR Code
  • -
  • Phone QR Code
  • +
  • Call QR Code
  • Event QR Code
  • Location QR Code
  • Facebook QR Code
  • diff --git a/src/app/(marketing)/bulk-qr-code-generator/page.tsx b/src/app/(marketing)/bulk-qr-code-generator/page.tsx index 3c1d566..b817a40 100644 --- a/src/app/(marketing)/bulk-qr-code-generator/page.tsx +++ b/src/app/(marketing)/bulk-qr-code-generator/page.tsx @@ -496,6 +496,9 @@ export default function BulkQRCodeGeneratorPage() { + + + {/* How It Works */}
    diff --git a/src/app/(marketing)/custom-qr-code-generator/page.tsx b/src/app/(marketing)/custom-qr-code-generator/page.tsx new file mode 100644 index 0000000..faa695b --- /dev/null +++ b/src/app/(marketing)/custom-qr-code-generator/page.tsx @@ -0,0 +1,661 @@ +import React from 'react'; +import type { Metadata } from 'next'; +import Link from 'next/link'; +import Image from 'next/image'; +import { Button } from '@/components/ui/Button'; +import { Card } from '@/components/ui/Card'; +import SeoJsonLd from '@/components/SeoJsonLd'; +import Breadcrumbs, { BreadcrumbItem } from '@/components/Breadcrumbs'; +import { breadcrumbSchema } from '@/lib/schema'; +import { + Palette, + Upload, + Frame, + Download, + CheckCircle2, + Smartphone, + FileType, + Zap, + Shield, + Eye +} from 'lucide-react'; +import { MiniGenerator } from '@/components/marketing/MiniGenerator'; + +export const metadata: Metadata = { + title: 'Custom QR Code Generator with Logo & Colors | QR Master', + description: 'Create custom QR codes with your logo, brand colors, and unique frames. Free designer with instant preview. Download PNG/SVG. No signup needed to try.', + keywords: [ + 'custom qr code generator', + 'qr code with logo', + 'qr code generator with logo', + 'branded qr code generator', + 'custom qr code design', + 'qr code maker with logo', + 'personalized qr code', + 'design qr code online' + ], + alternates: { + canonical: 'https://www.qrmaster.net/custom-qr-code-generator', + languages: { + 'x-default': 'https://www.qrmaster.net/custom-qr-code-generator', + en: 'https://www.qrmaster.net/custom-qr-code-generator', + }, + }, + openGraph: { + title: 'Custom QR Code Generator with Logo & Brand Colors', + description: 'Design unique QR codes with your logo, colors, and frames. Free, high-quality exports.', + url: 'https://www.qrmaster.net/custom-qr-code-generator', + type: 'website', + images: [{ + url: '/images/og/og-custom-qr-generator.png', + width: 1200, + height: 630 + }] + }, + twitter: { + title: 'Custom QR Code Generator with Logo & Brand Colors', + description: 'Design unique QR codes with your logo, colors, and frames. Free, high-quality exports.', + }, +}; + +export default function CustomQRCodeGeneratorPage() { + const features = [ + { + icon: Upload, + title: 'Logo Integration', + description: 'Upload your logo or icon. Auto-resize and safe positioning. Transparent backgrounds supported.', + }, + { + icon: Palette, + title: 'Custom Colors & Gradients', + description: 'Match your brand palette. Solid colors or smooth gradients. Separate eye, pattern, frame colors.', + }, + { + icon: Frame, + title: 'Custom Frames', + description: '"Scan Me", "Learn More", "Follow Us". 20+ pre-designed frames. Custom text frames.', + }, + { + icon: FileType, + title: 'Multiple Export Formats', + description: 'PNG (high-res, up to 4000px). SVG (vector, infinitely scalable). PDF (print-ready).', + }, + { + icon: Shield, + title: 'Scan-Safe Design Engine', + description: 'Automatic error correction (Level H - 30%). Logo placement tested for scannability. Works on all devices.', + }, + { + icon: Eye, + title: 'Instant Preview', + description: 'See changes in real-time. Test scan with your phone. What you see is what you get.', + }, + ]; + + const designExamples = [ + { + name: 'E-Commerce', + description: 'Logo center, gradient purple-blue', + image: '/images/examples/qr_example_ecommerce_1769163606650.png', + category: 'Retail', + }, + { + name: 'Restaurant Menu', + description: 'Food icon, warm colors, "Menu" frame', + image: '/images/examples/qr_example_restaurant_1769163621640.png', + category: 'Hospitality', + }, + { + name: 'Event Ticket', + description: 'Gradient, geometric pattern, "Scan to Enter"', + image: '/images/examples/qr_example_event_1769163635077.png', + category: 'Events', + }, + { + name: 'Business Card', + description: 'Minimalist, corporate blue/gray', + image: '/images/examples/qr_example_business_1769163647196.png', + category: 'Professional', + }, + { + name: 'Social Media', + description: 'Instagram-style gradient, "Follow Us"', + image: '/images/examples/qr_example_social_1769163660794.png', + category: 'Social', + }, + { + name: 'Product Packaging', + description: 'Premium black & gold, brand logo', + image: '/images/examples/qr_example_packaging_1769163674382.png', + category: 'Luxury', + }, + { + name: 'Real Estate', + description: 'House icon, professional blue, "View Listing"', + image: '/images/examples/qr_example_realestate_1769163689433.png', + category: 'Real Estate', + }, + { + name: 'Non-Profit', + description: 'Heart icon, warm gradient, "Donate Now"', + image: '/images/examples/qr_example_nonprofit_1769163705055.png', + category: 'Charity', + }, + ]; + + const useCases = [ + { + icon: 'πŸ“’', + title: 'Marketing Campaigns', + description: 'Print ads, flyers, billboards. Match campaign branding. Track by design/location.', + }, + { + icon: 'πŸ’Ό', + title: 'Business Cards', + description: 'vCard QR with your logo. Professional first impression. Easy contact sharing.', + }, + { + icon: 'πŸ“¦', + title: 'Product Packaging', + description: 'QR codes on labels and boxes. Link to manuals, videos, support. Premium branded look.', + }, + { + icon: 'πŸŽ‰', + title: 'Events & Conferences', + description: 'Branded event QR codes. Registration, schedules, networking. Consistent event identity.', + }, + ]; + + const comparison = [ + { feature: 'Colors', generic: 'Black & white only', branded: 'Your brand colors' }, + { feature: 'Logo', generic: 'No logo', branded: 'Your logo integrated' }, + { feature: 'Design', generic: 'Generic look', branded: 'Professional design' }, + { feature: 'Brand Recognition', generic: 'Low', branded: 'Instant brand trust' }, + { feature: 'Campaign Tracking', generic: 'Harder to track', branded: 'Campaign-specific branding' }, + ]; + + const faqs = [ + { + question: 'Can I add my company logo to a QR code?', + answer: 'Yes! Upload your logo (PNG, SVG, JPG) and we\'ll automatically position it safely in the center. The logo is sized to maintain scannability using error correction.', + }, + { + question: 'Will my QR code still work with a logo and custom colors?', + answer: 'Absolutely. Our generator uses advanced error correction (Level H - 30% redundancy) to ensure your QR code remains scannable even with logos and colors.', + }, + { + question: 'What file formats can I download?', + answer: 'High-resolution PNG (up to 4000x4000px), scalable SVG (vector), or print-ready PDF.', + }, + { + question: 'Can I use gradients instead of solid colors?', + answer: 'Yes! Choose from preset gradients or create custom linear/radial gradients.', + }, + { + question: 'How do I know if my custom QR code works?', + answer: 'Use the built-in preview and test scan with your phone camera before downloading.', + }, + { + question: 'Is there a limit on logo size?', + answer: 'Logos up to 5MB. We automatically resize for optimal scanning. Transparent backgrounds (PNG) work best.', + }, + { + question: 'Can I customize the QR code frame?', + answer: 'Yes! Choose from 20+ frames ("Scan Me", "Learn More") or create custom text frames.', + }, + { + question: 'Are custom QR codes free?', + answer: 'Static custom QR codes (URL, text, vCard, WiFi) are completely free forever. Dynamic QR codes (editable, trackable) require a paid plan.', + }, + { + question: 'Can I change the corner style?', + answer: 'Yes! Customize corner dots, eyes, and patterns. Choose square, rounded, or circular styles.', + }, + { + question: 'What\'s the difference between static and dynamic custom QR codes?', + answer: 'Both can be customized with logos/colors. Static = data encoded directly (free, permanent). Dynamic = redirect URL (editable, trackable, requires account).', + }, + ]; + + const softwareSchema = { + '@context': 'https://schema.org', + '@type': 'SoftwareApplication', + '@id': 'https://www.qrmaster.net/custom-qr-code-generator#software', + name: 'QR Master - Custom QR Code Generator with Logo', + applicationCategory: 'DesignApplication', + offers: { + '@type': 'Offer', + price: '0', + priceCurrency: 'EUR', + }, + featureList: [ + 'Upload custom logo', + 'Custom brand colors and gradients', + '20+ frame designs', + 'High-resolution PNG downloads', + 'Scalable SVG exports', + 'Print-ready PDF output', + 'Real-time preview', + 'Scan-safe design validation', + ], + }; + + const howToSchema = { + '@context': 'https://schema.org', + '@type': 'HowTo', + '@id': 'https://www.qrmaster.net/custom-qr-code-generator#howto', + name: 'How to Create a Custom QR Code with Logo', + step: [ + { + '@type': 'HowToStep', + position: 1, + name: 'Choose QR Code Type', + text: 'Select URL, vCard, WiFi, or other QR code type.', + }, + { + '@type': 'HowToStep', + position: 2, + name: 'Upload Your Logo', + text: 'Upload your company logo (PNG, SVG, JPG). Auto-positioned safely.', + }, + { + '@type': 'HowToStep', + position: 3, + name: 'Customize Colors & Frame', + text: 'Choose brand colors, gradients, and frame style.', + }, + { + '@type': 'HowToStep', + position: 4, + name: 'Download', + text: 'Download as high-res PNG, SVG, or PDF. Ready to print or share.', + }, + ], + }; + + const faqSchema = { + '@context': 'https://schema.org', + '@type': 'FAQPage', + '@id': 'https://www.qrmaster.net/custom-qr-code-generator#faq', + mainEntity: faqs.map((faq) => ({ + '@type': 'Question', + name: faq.question, + acceptedAnswer: { + '@type': 'Answer', + text: faq.answer, + }, + })), + }; + + const breadcrumbItems: BreadcrumbItem[] = [ + { name: 'Home', url: '/' }, + { name: 'Custom QR Code Generator', url: '/custom-qr-code-generator' }, + ]; + + return ( + <> + +
    + {/* Hero Section */} +
    +
    + +
    +
    +
    + ✨ + Free Static QR Codes Forever +
    + +

    + Custom QR Code Generator with Logo +

    + +

    + Add your logo, choose custom colors, and design unique frames. Professional QR codes in minutes – try it free, no signup required. +

    + +
    + {[ + 'No signup required to test', + 'High-resolution downloads', + 'Tested for scannability', + ].map((feature, index) => ( +
    +
    + +
    + {feature} +
    + ))} +
    + +
    + + + + + See Examples + +
    +
    + + {/* Preview Card */} +
    + + + +
    +
    +
    +
    + + {/* Scan-Safe Technology Section */} +
    +
    +
    +

    + Your Logo Won't Break the QR Code – Here's Why +

    +

    + QR codes have built-in error correction. Our generator uses the highest level (H = 30% redundancy), which means up to 30% of the code can be covered or damaged and still scan perfectly. +

    +
    + + +
    +

    + When you add a logo, we automatically: +

    +
      +
    • + + Calculate safe placement zones +
    • +
    • + + Size your logo to stay within error correction limits +
    • +
    • + + Test scannability before download +
    • +
    + +
    +

    Technical Details:

    +

    + Based on DENSO WAVE QR Code specification (ISO/IEC 18004). Error correction levels: L (7%), M (15%), Q (25%), H (30%). We use Level H for maximum reliability with custom designs. +

    +
    +
    +
    +
    +
    + + {/* Features Grid */} +
    +
    +
    +

    + Everything You Need for Branded QR Codes +

    +
    + +
    + {features.map((feature, index) => ( + + +

    + {feature.title} +

    +

    {feature.description}

    +
    + ))} +
    +
    +
    + + {/* Design Gallery */} +
    +
    +
    +

    + Get Inspired: Custom QR Code Examples +

    +

    + Real examples of custom QR codes for different industries and use cases +

    +
    + +
    + {designExamples.map((example, index) => ( + +
    + {`${example.name} +
    +
    +
    + + {example.category} + +
    +

    {example.name}

    +

    {example.description}

    + + + +
    +
    + ))} +
    +
    +
    + + {/* How It Works */} +
    +
    +
    +

    + Create Your Custom QR Code in 4 Steps +

    +
    + +
    + {[ + { + step: 1, + title: 'Choose QR Type & Enter Data', + description: 'URL, vCard, WiFi, Text, Email, SMS. Enter your destination.', + }, + { + step: 2, + title: 'Upload Your Logo', + description: 'Drag & drop PNG/SVG/JPG. Auto-positioned and sized. Or choose from icon library.', + }, + { + step: 3, + title: 'Customize Design', + description: 'Pick brand colors or gradients. Choose frame style ("Scan Me", custom text). Adjust corner shapes.', + }, + { + step: 4, + title: 'Download & Use', + description: 'High-res PNG or vector SVG. Print-ready quality. Scan-tested and verified.', + }, + ].map((step, index) => ( + +
    +
    + {step.step} +
    +
    +

    {step.title}

    +

    {step.description}

    +
    +
    +
    + ))} +
    +
    +
    + + {/* Comparison Section */} +
    +
    +
    +

    + Why Custom QR Codes Perform Better +

    +
    + + + + + + + + + + + + {comparison.map((row, index) => ( + + + + + + ))} + +
    FeatureGeneric QR CodeCustom Branded QR Code
    {row.feature}❌ {row.generic}βœ… {row.branded}
    +
    + +
    +

    + Note: Branded QR codes can improve brand recognition and recall, user trust and engagement, and campaign tracking and attribution. +

    +
    +
    +
    + + {/* Use Cases */} +
    +
    +
    +

    + Perfect For Every Industry +

    +
    + +
    + {useCases.map((useCase, index) => ( + +
    {useCase.icon}
    +

    {useCase.title}

    +

    {useCase.description}

    +
    + ))} +
    +
    +
    + + {/* FAQ Section */} +
    +
    +
    +

    + Frequently Asked Questions +

    +
    + +
    + {faqs.map((faq, index) => ( + +

    + {faq.question} +

    +

    {faq.answer}

    +
    + ))} +
    +
    +
    + + {/* Trust Section */} +
    +
    +
    +

    + Secure and Reliable +

    +
    +
    +
    + +
    + Your data is never stored +
    +
    +
    + +
    + Works on all modern devices and QR scanners +
    +
    +
    + +
    + Used by businesses and creators worldwide +
    +
    +
    +
    +
    + + {/* Final CTA */} +
    +
    +

    + Start Creating Branded QR Codes Today +

    +

    + Free static QR codes with logo, colors, and frames. No signup required to try. Upgrade for tracking and bulk generation. +

    +
    + + + + + + +
    +
    +
    +
    + + ); +} diff --git a/src/app/(marketing)/manage-qr-codes/page.tsx b/src/app/(marketing)/manage-qr-codes/page.tsx new file mode 100644 index 0000000..2b035bd --- /dev/null +++ b/src/app/(marketing)/manage-qr-codes/page.tsx @@ -0,0 +1,740 @@ +import React from 'react'; +import type { Metadata } from 'next'; +import Link from 'next/link'; +import { Button } from '@/components/ui/Button'; +import { Card } from '@/components/ui/Card'; +import SeoJsonLd from '@/components/SeoJsonLd'; +import Breadcrumbs, { BreadcrumbItem } from '@/components/Breadcrumbs'; +import { breadcrumbSchema } from '@/lib/schema'; +import { + LayoutDashboard, + FolderTree, + Edit3, + Users, + BarChart3, + Bell, + CheckCircle2, + XCircle, + Store, + UtensilsCrossed, + CalendarDays, + Megaphone, +} from 'lucide-react'; + +export const metadata: Metadata = { + title: 'QR Code Management Software – Organize, Edit & Scale | QR Master', + description: 'Manage QR codes at scale with folders, bulk editing, team collaboration, and campaign organization. Centralized dashboard for businesses. Free trial available.', + keywords: [ + 'manage qr codes', + 'qr code management software', + 'qr code management system', + 'bulk qr code management', + 'qr code campaign management', + 'qr code dashboard', + 'organize qr codes', + ], + alternates: { + canonical: 'https://www.qrmaster.net/manage-qr-codes', + languages: { + 'x-default': 'https://www.qrmaster.net/manage-qr-codes', + en: 'https://www.qrmaster.net/manage-qr-codes', + }, + }, + openGraph: { + title: 'QR Code Management Software – Organize, Edit & Scale', + description: 'Manage QR codes at scale with folders, bulk editing, team collaboration, and campaign organization.', + url: 'https://www.qrmaster.net/manage-qr-codes', + type: 'website', + images: [{ + url: '/images/og/og-manage-qr-codes.png', + width: 1200, + height: 630 + }] + }, + twitter: { + title: 'QR Code Management Software – Organize, Edit & Scale', + description: 'Manage QR codes at scale with folders, bulk editing, team collaboration, and campaign organization.', + }, +}; + +export default function ManageQRCodesPage() { + const problems = [ + { + icon: BarChart3, + title: 'No Visibility', + issues: [ + 'Can\'t find QR codes across campaigns', + 'No central place to see all codes', + 'Hard to track which ones are active', + ], + }, + { + icon: Edit3, + title: 'Can\'t Update or Organize', + issues: [ + 'Printed QR codes are permanent (static)', + 'No way to organize by campaign/location', + 'Manual spreadsheet tracking', + ], + }, + { + icon: Users, + title: 'No Team Collaboration', + issues: [ + 'QR codes scattered across devices', + 'No centralized management system', + 'No permissions or access control', + 'Can\'t track who created/edited what', + ], + }, + ]; + + const features = [ + { + icon: LayoutDashboard, + title: 'Centralized Dashboard', + description: 'All QR codes in one place. Search, filter, sort by campaign/date/type. Quick performance overview.', + }, + { + icon: FolderTree, + title: 'Campaign Organization', + description: 'Create folders and tags. Group by location, product, event. Archive old campaigns.', + }, + { + icon: Edit3, + title: 'Bulk Editing', + description: 'Edit multiple QR destinations at once. Bulk export, duplicate, archive. Schedule URL changes in advance.', + }, + { + icon: Users, + title: 'Team Collaboration', + description: 'Invite team members. Set roles (viewer, editor, admin). Activity log for accountability.', + }, + { + icon: BarChart3, + title: 'Performance Tracking', + description: 'Track scans per QR code. See locations, devices, timestamps. Export analytics to CSV.', + }, + { + icon: Bell, + title: 'Smart Alerts', + description: 'Get notified on high scan activity. Alert when errors occur. Weekly performance summaries.', + }, + ]; + + const useCases = [ + { + icon: Store, + title: 'Retail & E-Commerce', + description: 'Manage product QR codes across locations. Track in-store vs online performance. Update promo URLs seasonally.', + }, + { + icon: UtensilsCrossed, + title: 'Restaurants & Hospitality', + description: 'Manage digital menu QR codes. Update locations/specials easily. Track table/location-specific scans.', + }, + { + icon: CalendarDays, + title: 'Events & Conferences', + description: 'Manage attendee/session QR codes. Track check-ins in real-time. Organize by event, date, venue.', + }, + { + icon: Megaphone, + title: 'Marketing Agencies', + description: 'Manage multiple client campaigns. Team permissions and white-label reports. Client-specific analytics.', + }, + ]; + + const comparison = [ + { feature: 'Create QR Codes', free: 'Static only', qrMaster: 'Static + Dynamic' }, + { feature: 'Central Dashboard', free: false, qrMaster: true }, + { feature: 'Edit After Deploy', free: false, qrMaster: true }, + { feature: 'Organize Campaigns', free: false, qrMaster: true }, + { feature: 'Team Collaboration', free: false, qrMaster: true }, + { feature: 'Bulk Operations', free: false, qrMaster: true }, + { feature: 'Analytics', free: false, qrMaster: true }, + { feature: 'API Access', free: false, qrMaster: true }, + ]; + + const plans = [ + { + name: 'Free', + price: '€0', + period: 'forever', + features: [ + '3 Dynamic QR Codes', + 'Basic Dashboard', + 'Basic Analytics', + 'Perfect for trying', + ], + cta: 'Start Free', + href: '/signup', + highlighted: false, + }, + { + name: 'Pro', + price: '€9', + period: 'per month', + features: [ + '50 Dynamic QR Codes', + 'Advanced Analytics', + 'Team Collaboration (3 users)', + 'Priority Support', + ], + cta: 'Start Free Trial', + href: '/signup?plan=pro', + highlighted: true, + }, + { + name: 'Business', + price: '€29', + period: 'per month', + features: [ + '500 Dynamic QR Codes', + 'Full Analytics + CSV Export', + 'Unlimited Team Members', + 'API Access', + ], + cta: 'Start Free Trial', + href: '/signup?plan=business', + highlighted: false, + }, + ]; + + const faqs = [ + { + question: 'What does "manage QR codes" mean?', + answer: 'QR code management means having a central dashboard to create, organize, edit, track, and analyze all your QR codes in one place instead of scattered files.', + }, + { + question: 'Can I edit a QR code after printing it?', + answer: 'Yes, with dynamic QR codes. QR Master uses a redirect URL, so you can change the destination anytime. The printed QR code image stays the same.', + }, + { + question: 'How many QR codes can I manage?', + answer: 'Pro plan: 50 dynamic QR codes. Business plan: 500. Enterprise: Unlimited. All plans include unlimited static QR codes.', + }, + { + question: 'Can my team access and edit QR codes?', + answer: 'Yes! Invite team members on Business and Enterprise plans. Set permissions (viewer, editor, admin) for each member.', + }, + { + question: 'What analytics can I track?', + answer: 'Total scans, unique scans, locations (city/country), devices (iOS/Android), browsers, timestamps, referrers. Export to CSV.', + }, + { + question: 'Can I organize QR codes by campaign?', + answer: 'Absolutely. Use folders, tags, and custom labels to organize by campaign, location, product, or any criteria.', + }, + { + question: 'What happens to my dynamic QR codes if I cancel?', + answer: 'Dynamic QR codes require an active subscription to redirect. Check our terms for data retention policies. You can always export your data and download static versions.', + }, + { + question: 'Is there an API for bulk management?', + answer: 'Yes, Business and Enterprise plans include full API access for creating, editing, and tracking QR codes programmatically.', + }, + ]; + + const softwareSchema = { + '@context': 'https://schema.org', + '@type': 'SoftwareApplication', + '@id': 'https://www.qrmaster.net/manage-qr-codes#software', + name: 'QR Master - QR Code Management Platform', + applicationCategory: 'BusinessApplication', + offers: { + '@type': 'AggregateOffer', + lowPrice: '0', + highPrice: '29', + priceCurrency: 'EUR', + }, + featureList: [ + 'Centralized QR code dashboard', + 'Campaign organization with folders and tags', + 'Bulk editing and operations', + 'Team collaboration with permissions', + 'Real-time scan analytics', + 'API access for automation', + ], + }; + + const breadcrumbItems: BreadcrumbItem[] = [ + { name: 'Home', url: '/' }, + { name: 'Manage QR Codes', url: '/manage-qr-codes' }, + ]; + + return ( + <> + +
    + {/* Hero Section */} +
    +
    + +
    +
    +
    + βœ… + Get Started Free +
    + +

    + QR Code Management Software – Organize, Edit & Scale +

    + +

    + The complete QR code management platform for businesses. Organize campaigns, edit in bulk, collaborate with teams, and track performance from one central dashboard. +

    + +
    + {[ + 'No Credit Card Required', + 'Full Features', + 'Cancel Anytime', + ].map((feature, index) => ( +
    +
    + +
    + {feature} +
    + ))} +
    + +
    + + + + + See Dashboard Demo + +
    +
    + + {/* Dashboard Preview Card */} +
    + +

    Dashboard Overview

    +
    +
    +
    + All QR Codes + 127 +
    +
    Across 12 campaigns
    +
    +
    +
    +
    Active
    +
    94
    +
    +
    +
    Archived
    +
    33
    +
    +
    +
    +
    Recent Activity
    +
    +
    + Campaign "Summer Sale" edited + 2m ago +
    +
    + Bulk update: 12 codes + 1h ago +
    +
    +
    +
    +
    +
    + Team Members +
    + {[1, 2, 3].map((i) => ( +
    + ))} +
    +
    +
    + +
    +
    +
    +
    + + {/* Problem Statement */} +
    +
    +
    +

    + Why Managing QR Codes Manually is Chaos +

    +
    + +
    + {problems.map((problem, index) => ( + + +

    {problem.title}

    +
      + {problem.issues.map((issue, idx) => ( +
    • + + {issue} +
    • + ))} +
    +
    + ))} +
    + +
    +

    + A Complete Management Platform Solves All of This ↓ +

    +
    +
    +
    + + {/* Core Features */} +
    +
    +
    +

    + Everything You Need to Manage QR Codes at Scale +

    +
    + +
    + {features.map((feature, index) => ( + + +

    + {feature.title} +

    +

    {feature.description}

    +
    + ))} +
    +
    +
    + + {/* Workflow Diagram */} +
    +
    +
    +

    + Your QR Code Management Workflow +

    +
    + +
    + {[ + { + step: 1, + title: 'Create & Customize', + description: 'Upload CSV or create individually', + }, + { + step: 2, + title: 'Organize', + description: 'Tag, folder, assign to campaigns', + }, + { + step: 3, + title: 'Deploy', + description: 'Download, print, distribute', + }, + { + step: 4, + title: 'Track & Analyze', + description: 'Monitor scans, locations, devices', + }, + { + step: 5, + title: 'Optimize', + description: 'Edit URLs, A/B test, improve', + }, + ].map((step, index) => ( +
    + +
    +
    + {step.step} +
    +
    +

    {step.title}

    +

    {step.description}

    +
    +
    +
    + {index < 4 && ( +
    +
    +
    + )} +
    + ))} +
    +
    +
    + + {/* Dashboard Preview */} +
    +
    +
    +

    + See Your Dashboard in Action +

    +
    + + +
    +
    +

    QR Code Management

    + + + +
    + +
    + {[ + { name: 'Summer Campaign 2024', scans: 1247, status: 'Active', folder: 'Marketing' }, + { name: 'Product Launch - Widget Pro', scans: 892, status: 'Active', folder: 'Products' }, + { name: 'Event Check-in - TechConf', scans: 2341, status: 'Complete', folder: 'Events' }, + ].map((qr, index) => ( +
    +
    +
    {qr.name}
    +
    πŸ“ {qr.folder}
    +
    +
    +
    +
    {qr.scans.toLocaleString()}
    +
    scans
    +
    +
    + {qr.status} +
    + +
    +
    + ))} +
    + +
    +
    + + View all codes at a glance +
    +
    + + Click to edit destination instantly +
    +
    + + Filter by campaign or folder +
    +
    +
    +
    +
    +
    + + {/* Use Cases by Industry */} +
    +
    +
    +

    + QR Code Management for Every Business +

    +
    + +
    + {useCases.map((useCase, index) => ( + + +

    {useCase.title}

    +

    {useCase.description}

    +
    + ))} +
    +
    +
    + + {/* Feature Comparison */} +
    +
    +
    +

    + Free QR Tools vs QR Code Management Platform +

    +
    + + + + + + + + + + + + {comparison.map((row, index) => ( + + + + + + ))} + +
    FeatureFree QR ToolQR Master Manage
    {row.feature} + {typeof row.free === 'boolean' ? ( + row.free ? ( + βœ“ + ) : ( + βœ— + ) + ) : ( + {row.free} + )} + + {typeof row.qrMaster === 'boolean' ? ( + βœ“ + ) : ( + {row.qrMaster} + )} +
    +
    +
    +
    + + {/* FAQ Section */} +
    +
    +
    +

    + Frequently Asked Questions +

    +
    + +
    + {faqs.map((faq, index) => ( + +

    + {faq.question} +

    +

    {faq.answer}

    +
    + ))} +
    +
    +
    + + {/* Pricing Teaser */} +
    +
    +
    +

    + Start Managing Your QR Codes Today +

    +
    + +
    + {plans.map((plan, index) => ( + + {plan.highlighted && ( +
    + Most Popular +
    + )} +
    +

    {plan.name}

    +
    + {plan.price} + /{plan.period} +
    +
    +
      + {plan.features.map((feature, idx) => ( +
    • + + {feature} +
    • + ))} +
    + + + +
    + ))} +
    + +
    + No credit card required β€’ Full features β€’ Cancel anytime +
    +
    +
    + + {/* Trust & CTA */} +
    +
    +

    + Built for Teams and Businesses +

    +

    + QR Master helps marketing teams, agencies, event organizers, and businesses manage their QR codes efficiently. +

    +
    +
    + + Built for retail, events, hospitality, and more +
    +
    + + Secure data handling +
    +
    + + Reliable uptime and performance +
    +
    + + + +
    +
    +
    + + ); +} diff --git a/src/app/(marketing)/page.tsx b/src/app/(marketing)/page.tsx index 5d5650a..f3d65b0 100644 --- a/src/app/(marketing)/page.tsx +++ b/src/app/(marketing)/page.tsx @@ -21,6 +21,7 @@ export async function generateMetadata(): Promise { 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: { @@ -60,7 +61,7 @@ export default function HomePage() { vCard QR codes for digital business cards, and restaurant menu QR codes.

    - Start free with 3 dynamic QR codes and unlimited static codes. Upgrade to Pro for 50 codes + 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.

    diff --git a/src/app/(marketing)/pricing/PricingClient.tsx b/src/app/(marketing)/pricing/PricingClient.tsx index 4654ea7..9b90189 100644 --- a/src/app/(marketing)/pricing/PricingClient.tsx +++ b/src/app/(marketing)/pricing/PricingClient.tsx @@ -119,7 +119,7 @@ export default function PricingPage() { period: 'forever', showDiscount: false, features: [ - '3 dynamic QR codes', + '3 active dynamic QR codes (8 types available)', 'Unlimited static QR codes', 'Basic scan tracking', 'Standard QR design templates', diff --git a/src/app/(marketing)/qr-code-tracking/page.tsx b/src/app/(marketing)/qr-code-tracking/page.tsx index 4e267be..83f4896 100644 --- a/src/app/(marketing)/qr-code-tracking/page.tsx +++ b/src/app/(marketing)/qr-code-tracking/page.tsx @@ -319,79 +319,79 @@ export default function QRCodeTrackingPage() {
    {/* Comparison Table */} -
    -
    -
    -

    - QR Master vs Free Tools -

    -

    - See why businesses choose QR Master for QR code tracking -

    -
    +
    +
    +
    +

    + QR Master vs Free Tools +

    +

    + See why businesses choose QR Master for QR code tracking +

    +
    - - - - - - - - - - - {comparisonData.map((row, index) => ( - - - + + ))} + +
    FeatureFree ToolsQR Master
    {row.feature} - {typeof row.free === 'boolean' ? ( - row.free ? ( + + + + + + + + + + + {comparisonData.map((row, index) => ( + + + + - - - ))} - -
    FeatureFree ToolsQR Master
    {row.feature} + {typeof row.free === 'boolean' ? ( + row.free ? ( + βœ“ + ) : ( + βœ— + ) + ) : ( + {row.free} + )} + + {typeof row.qrMaster === 'boolean' ? ( βœ“ ) : ( - βœ— - ) - ) : ( - {row.free} - )} - - {typeof row.qrMaster === 'boolean' ? ( - βœ“ - ) : ( - {row.qrMaster} - )} -
    -
    - - - - {/* CTA Section */} -
    -
    -

    - Start Tracking Your QR Codes Today -

    -

    - Join thousands of businesses using QR Master to track and optimize their QR code campaigns -

    -
    - - - - - - + {row.qrMaster} + )} +
    +
    -
    -
    + + + {/* CTA Section */} +
    +
    +

    + Start Tracking Your QR Codes Today +

    +

    + Join thousands of businesses using QR Master to track and optimize their QR code campaigns +

    +
    + + + + + + +
    +
    +
    ); diff --git a/src/app/(marketing)/tools/phone-qr-code/PhoneGenerator.tsx b/src/app/(marketing)/tools/call-qr-code-generator/PhoneGenerator.tsx similarity index 95% rename from src/app/(marketing)/tools/phone-qr-code/PhoneGenerator.tsx rename to src/app/(marketing)/tools/call-qr-code-generator/PhoneGenerator.tsx index eb810eb..a7cae48 100644 --- a/src/app/(marketing)/tools/phone-qr-code/PhoneGenerator.tsx +++ b/src/app/(marketing)/tools/call-qr-code-generator/PhoneGenerator.tsx @@ -57,7 +57,7 @@ export default function PhoneGenerator() { const { toPng } = await import('html-to-image'); const dataUrl = await toPng(qrRef.current, { cacheBust: true, pixelRatio: 3 }); const link = document.createElement('a'); - link.download = `phone-qr-code.png`; + link.download = `call-qr-code.png`; link.href = dataUrl; link.click(); } else { @@ -67,7 +67,7 @@ export default function PhoneGenerator() { const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; - link.download = `phone-qr-code.svg`; + link.download = `call-qr-code.svg`; link.click(); } } @@ -95,11 +95,11 @@ export default function PhoneGenerator() {

    - Phone Number + Call Number

    - +

    - Scanning initiates a call on any mobile phone. + Scanning initiates a direct call on any mobile phone.

    diff --git a/src/app/(marketing)/tools/phone-qr-code/page.tsx b/src/app/(marketing)/tools/call-qr-code-generator/page.tsx similarity index 87% rename from src/app/(marketing)/tools/phone-qr-code/page.tsx rename to src/app/(marketing)/tools/call-qr-code-generator/page.tsx index baacc42..b4283dd 100644 --- a/src/app/(marketing)/tools/phone-qr-code/page.tsx +++ b/src/app/(marketing)/tools/call-qr-code-generator/page.tsx @@ -7,26 +7,26 @@ import { ToolBreadcrumb } from '@/components/seo/BreadcrumbSchema'; import { RelatedTools } from '@/components/marketing/RelatedTools'; import { generateSoftwareAppSchema, generateFaqSchema } from '@/lib/schema-utils'; -// SEO Optimized Metadata +// SEO Optimized Metadata for "Call QR Code" export const metadata: Metadata = { title: { - absolute: 'Free Phone QR Code Generator | Anruf & Telefon QR | QR Master', + absolute: 'Free Call QR Code Generator | Click-to-Call & Phone QR | QR Master', }, - description: 'Create a QR code that makes a phone call. Anruf und Telefonat starten per Scan. Perfect for business cards & support. Kostenlos Call-QR erstellen.', - keywords: ['phone qr code', 'call qr code', 'phone number qr generator', 'click to call qr', 'business card qr code', 'telefon qr code', 'anruf qr code', 'qr code telefonnummer', 'anruf starten qr code', 'telefonnummer scannen'], + description: 'Create Action-Oriented Call QR Codes. Scanners instantly dial your number. Perfect for "Call Now" buttons on print & flyers. Free & No Signup.', + keywords: ['call qr code', 'click to call qr code', 'call now qr code', 'phone call qr generator', 'qr code for calling', 'call me qr', 'direct call qr code', 'dialer qr code', 'telefon qr code', 'anruf qr code'], alternates: { - canonical: 'https://www.qrmaster.net/tools/phone-qr-code', + canonical: 'https://www.qrmaster.net/tools/call-qr-code-generator', }, openGraph: { - title: 'Free Phone QR Code Generator | QR Master', - description: 'Generate QR codes to initiate phone calls instantly. Share your number easily.', + title: 'Free Call QR Code Generator | Click-to-Call | QR Master', + description: 'Generate Click-to-Call QR Codes. One scan to start a phone call instantly. Best for flyers and business cards.', type: 'website', - url: 'https://www.qrmaster.net/tools/phone-qr-code', + url: 'https://www.qrmaster.net/tools/call-qr-code-generator', images: [{ url: '/og-phone-generator.png', width: 1200, height: 630 }], }, twitter: { card: 'summary_large_image', - title: 'Free Phone QR Code Generator', + title: 'Free Call QR Code Generator | Start Calls with a Scan', description: 'Create QR codes for instant calling. Free and reliable.', }, robots: { @@ -40,13 +40,13 @@ const jsonLd = { '@context': 'https://schema.org', '@graph': [ generateSoftwareAppSchema( - 'Phone QR Code Generator', + 'Call QR Code Generator', 'Generate QR codes that trigger a phone call when scanned on a mobile device.', '/og-phone-generator.png' ), { '@type': 'HowTo', - name: 'How to Create a Phone QR Code', + name: 'How to Create a Call QR Code', description: 'Create a QR code that dials a number automatically.', step: [ { @@ -65,7 +65,7 @@ const jsonLd = { '@type': 'HowToStep', position: 3, name: 'Download', - text: 'Save the QR code and print it on your materials.', + text: 'Save the "Call Now" QR code and print it on your materials.', }, { '@type': 'HowToStep', @@ -85,7 +85,7 @@ const jsonLd = { generateFaqSchema({ 'Does it call automatically?': { question: 'Does it call automatically?', - answer: 'Scanning the QR code opens the phone dialer with the number pre-filled. The user must tap the call button to initiate the call.', + answer: 'Scanning the QR code opens the phone dialer with the number pre-filled. The user must tap the call button to initiate the call (security feature of phones).', }, 'Does it work internationally?': { question: 'Does it work internationally?', @@ -97,7 +97,7 @@ const jsonLd = { }, 'Can I track calls?': { question: 'Can I track calls?', - answer: 'This static QR code cannot track calls. For tracking scans and analytics, consider using our Dynamic QR Code solution.', + answer: 'This static Call QR Code cannot track calls. For tracking scans and analytics, consider using our VCard Plus solution.', }, 'Is it free?': { question: 'Is it free?', @@ -107,14 +107,14 @@ const jsonLd = { ], }; -export default function PhoneQRCodePage() { +export default function CallQRCodePage() { return ( <>