diff --git a/src/app/(auth)/signup/page.tsx b/src/app/(auth)/signup/page.tsx
index de504d2..85d75a6 100644
--- a/src/app/(auth)/signup/page.tsx
+++ b/src/app/(auth)/signup/page.tsx
@@ -1,7 +1,6 @@
'use client';
import React, { useState } from 'react';
-import { signIn } from 'next-auth/react';
import { useRouter } from 'next/navigation';
import Link from 'next/link';
import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/Card';
@@ -43,19 +42,16 @@ export default function SignupPage() {
body: JSON.stringify({ name, email, password }),
});
- if (response.ok) {
- // Auto sign in after signup
- const result = await signIn('credentials', {
- email,
- password,
- redirect: false,
- });
+ const data = await response.json();
- if (result?.ok) {
- router.push('/dashboard');
- }
+ if (response.ok && data.success) {
+ // Store user in localStorage for client-side
+ localStorage.setItem('user', JSON.stringify(data.user));
+
+ // Redirect to dashboard
+ router.push('/dashboard');
+ router.refresh();
} else {
- const data = await response.json();
setError(data.error || 'Failed to create account');
}
} catch (err) {
@@ -66,7 +62,8 @@ export default function SignupPage() {
};
const handleGoogleSignIn = () => {
- signIn('google', { callbackUrl: '/dashboard' });
+ // Redirect to Google OAuth API route
+ window.location.href = '/api/auth/google';
};
return (
diff --git a/src/app/(marketing)/blog/[slug]/page.tsx b/src/app/(marketing)/blog/[slug]/page.tsx
index 1be556e..6c69b24 100644
--- a/src/app/(marketing)/blog/[slug]/page.tsx
+++ b/src/app/(marketing)/blog/[slug]/page.tsx
@@ -37,7 +37,7 @@ const blogPosts: Record
= {
dateModified: '2025-10-16T09:00:00Z',
readTime: '8 Min',
category: 'Analytics',
- image: 'https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=1200&q=80',
+ image: 'https://images.unsplash.com/photo-1460925895917-afdab827c52f?w=1200&q=80',
imageAlt: 'QR code analytics dashboard showing real-time scan metrics and campaign performance data',
author: 'QR Master Team',
authorUrl: 'https://www.qrmaster.com/about',
@@ -140,6 +140,193 @@ const blogPosts: Record = {
Whether you're deploying QR codes for event tracking, print marketing, bulk generation, or API-driven automation, scan analytics provides the data foundation for smarter, more effective campaigns. Start leveraging QR analytics today to unlock the full potential of your QR marketing strategy.
`,
},
+ 'dynamische-vs-statische-qr-codes': {
+ slug: 'dynamische-vs-statische-qr-codes',
+ title: 'Dynamische vs. Statische QR-Codes: Der ultimative Vergleich',
+ excerpt: 'Entdecken Sie die wichtigsten Unterschiede zwischen dynamischen und statischen QR-Codes und wählen Sie die richtige Option für Ihre Kampagne.',
+ date: 'October 15, 2025',
+ datePublished: '2025-10-15T09:00:00Z',
+ dateModified: '2025-10-15T09:00:00Z',
+ readTime: '6 Min',
+ category: 'Grundlagen',
+ image: 'https://images.unsplash.com/photo-1603791440384-56cd371ee9a7?w=1200&q=80',
+ imageAlt: 'Vergleich zwischen dynamischen und statischen QR-Codes mit Diagrammen',
+ author: 'QR Master Team',
+ authorUrl: 'https://www.qrmaster.com/about',
+ content: `
+
Was sind statische QR-Codes?
+
Statische QR-Codes enthalten fest eingebettete Informationen, die nach der Erstellung nicht mehr geändert werden können. Der QR-Code speichert die Daten direkt – zum Beispiel eine URL, einen Text oder Kontaktdaten. Sobald der Code gedruckt ist, bleibt sein Inhalt permanent.
+
+
Vorteile statischer QR-Codes
+
Für immer gültig: Statische QR-Codes funktionieren unabhängig von Servern oder Abonnements. Sie sind ideal für Anwendungen, bei denen Sie garantiert langfristige Verfügbarkeit benötigen.
+
Keine laufenden Kosten: Da keine Server-Infrastruktur erforderlich ist, fallen keine monatlichen Gebühren an.
+
Schneller Scan: Direkter Zugriff auf Inhalte ohne Umleitung über Server.
+
+
Nachteile statischer QR-Codes
+
Nicht editierbar: Nach dem Druck können Sie die verlinkten Inhalte nicht mehr ändern.
+
Keine Analytics: Sie können nicht nachverfolgen, wie oft der Code gescannt wurde.
+
Größer bei langen URLs: Je mehr Daten eingebettet sind, desto komplexer und größer wird der QR-Code.
+
+
Was sind dynamische QR-Codes?
+
Dynamische QR-Codes enthalten eine kurze Weiterleitungs-URL, die auf einen Server verweist. Der Server speichert die eigentliche Ziel-URL. Das bedeutet, dass Sie die Ziel-URL jederzeit ändern können, ohne den gedruckten QR-Code neu erstellen zu müssen.
+
+
Vorteile dynamischer QR-Codes
+
Editierbar: Ändern Sie die Ziel-URL jederzeit, auch nach dem Druck.
+
Detaillierte Analytics: Verfolgen Sie Scans nach Standort, Gerät, Zeit und mehr.
+
Retargeting-fähig: Nutzen Sie Scan-Daten für personalisierte Marketing-Kampagnen.
+
Kompakter Code: Da nur eine kurze Umleitungs-URL eingebettet ist, bleibt der QR-Code kleiner und einfacher zu scannen.
+
+
Nachteile dynamischer QR-Codes
+
Erfordert Abo: Dynamische QR-Codes benötigen eine aktive Server-Infrastruktur, was meist mit monatlichen Kosten verbunden ist.
+
Abhängig vom Server: Wenn der Server ausfällt oder das Abo abläuft, funktioniert der QR-Code nicht mehr.
+
+
Vergleichstabelle: Statisch vs. Dynamisch
+
+
+
+
+ | Feature |
+ Statisch |
+ Dynamisch |
+
+
+
+
+ | Editierbar |
+ Nein |
+ Ja |
+
+
+ | Analytics |
+ Nein |
+ Ja |
+
+
+ | Kosten |
+ Kostenlos |
+ Abo erforderlich |
+
+
+ | Größe |
+ Größer bei langen URLs |
+ Immer kompakt |
+
+
+ | Gültigkeitsdauer |
+ Für immer |
+ Abhängig vom Abo |
+
+
+
+
+
+
Wann sollten Sie welchen QR-Code-Typ verwenden?
+
Verwenden Sie statische QR-Codes für:
+
• Visitenkarten mit festen Kontaktdaten
+
• WLAN-Passwörter
+
• Produktverpackungen mit permanenten URLs
+
• Anwendungen, bei denen Sie keine Analytics benötigen
+
+
Verwenden Sie dynamische QR-Codes für:
+
• Marketing-Kampagnen mit wechselnden Angeboten
+
• Event-Tickets mit aktualisierbaren Informationen
+
• Print-Anzeigen, bei denen Sie die Landingpage optimieren möchten
+
• Jede Anwendung, bei der Sie Scan-Statistiken tracken möchten
+
+
Fazit
+
Statische QR-Codes sind ideal für permanente, unveränderliche Inhalte ohne Tracking-Bedarf. Dynamische QR-Codes bieten Flexibilität, Analytics und Marketing-Power – perfekt für professionelle Kampagnen. Wählen Sie basierend auf Ihren Anforderungen: Langfristige Stabilität oder Marketing-Flexibilität?
+
`,
+ },
+ 'qr-codes-im-restaurant': {
+ slug: 'qr-codes-im-restaurant',
+ title: 'QR-Codes im Restaurant: Digitale Speisekarten & kontaktloses Bestellen',
+ excerpt: 'Erfahren Sie, wie Restaurants QR-Codes für digitale Menüs, kontaktlose Bestellungen und verbessertes Gästeerlebnis einsetzen.',
+ date: 'October 14, 2025',
+ datePublished: '2025-10-14T09:00:00Z',
+ dateModified: '2025-10-14T09:00:00Z',
+ readTime: '7 Min',
+ category: 'Anwendungsfälle',
+ image: 'https://images.unsplash.com/photo-1555396273-367ea4eb4db5?w=1200&q=80',
+ imageAlt: 'Restaurant-Tisch mit QR-Code für digitale Speisekarte',
+ author: 'QR Master Team',
+ authorUrl: 'https://www.qrmaster.com/about',
+ content: `
+
Warum QR-Codes für Restaurants?
+
Seit der Pandemie haben QR-Codes die Gastronomie revolutioniert. Sie ermöglichen kontaktloses Bestellen, reduzieren Druckkosten für Speisekarten und verbessern das Gästeerlebnis durch interaktive Funktionen. Moderne Gäste erwarten digitale Lösungen – QR-Codes liefern genau das.
+
+
Digitale Speisekarten mit QR-Codes
+
Vorteile für Restaurants
+
Kosten sparen: Keine teuren Speisekarten-Neudrucke bei Preisänderungen oder neuen Gerichten.
+
Aktualisierungen in Echtzeit: Passen Sie Ihr Menü sofort an – täglich wechselnde Angebote, Verfügbarkeiten oder Allergiehinweise.
+
Mehrsprachigkeit: Bieten Sie Ihre Speisekarte automatisch in mehreren Sprachen an.
+
Hygiene: Gäste scannen mit ihrem eigenen Smartphone – keine gemeinsam genutzten Speisekarten mehr.
+
+
Vorteile für Gäste
+
• Sofortiger Zugriff auf die Speisekarte ohne Warten
+
• Hochauflösende Bilder der Gerichte
+
• Detaillierte Nährwertangaben und Allergiehinweise
+
• Personalisierte Empfehlungen
+
+
Kontaktloses Bestellen via QR-Code
+
QR-Codes ermöglichen es Gästen, direkt vom Tisch aus zu bestellen – ohne auf Kellner zu warten. Das System ist einfach: Gast scannt Code → wählt Gerichte aus → bestätigt Bestellung → zahlt digital.
+
+
Vorteile des kontaktlosen Bestellens
+
Schnellerer Service: Bestellungen gehen direkt in die Küche, ohne Zwischenschritte.
+
Weniger Fehler: Gäste geben ihre Bestellung selbst ein – keine Missverständnisse mehr.
+
Upselling-Möglichkeiten: Zeigen Sie automatisch passende Empfehlungen oder Zusatzprodukte an.
+
Höhere Tischrotation: Weniger Wartezeiten bedeuten mehr bediente Gäste pro Abend.
+
+
QR-Code-Platzierung im Restaurant
+
Auf dem Tisch
+
Der klassische Ansatz: QR-Codes auf Tischaufstellern, Tischsets oder direkt auf dem Tisch. Ideal für Restaurants mit festem Sitzplatz.
+
+
An der Wand oder am Eingang
+
Für Schnellrestaurants oder Cafés: Gäste scannen beim Betreten und bestellen an der Theke oder am Tisch.
+
+
Auf Rechnungen und Flyern
+
Nutzen Sie QR-Codes auf Rechnungen für Online-Bewertungen, Treueprogramme oder Social-Media-Verlinkungen.
+
+
Best Practices für Restaurant-QR-Codes
+
1. Design: Markenkonform und ansprechend
+
Gestalten Sie QR-Codes in Ihren Markenfarben mit Ihrem Logo. Ein professionelles Design erhöht die Scan-Rate.
+
+
2. Klare Anweisungen
+
Fügen Sie einen Call-to-Action hinzu: "Scannen für Speisekarte" oder "Hier bestellen". Nicht jeder Gast ist mit QR-Codes vertraut.
+
+
3. Mobile Optimierung
+
Ihre digitale Speisekarte MUSS mobilfreundlich sein. Große Schriftarten, einfache Navigation, schnelle Ladezeiten.
+
+
4. Testen Sie regelmäßig
+
Prüfen Sie wöchentlich, ob alle QR-Codes funktionieren und zur richtigen Seite führen.
+
+
Analytics: Messen Sie den Erfolg
+
Mit dynamischen QR-Codes erhalten Sie wertvolle Insights:
+
• Wie viele Gäste scannen den QR-Code?
+
• Welche Gerichte werden am häufigsten angesehen?
+
• Zu welchen Uhrzeiten ist die Nachfrage am höchsten?
+
• Welche Tische haben die höchste Scan-Rate?
+
+
Praxisbeispiel: Pizza-Restaurant "Bella Italia"
+
Das fiktive Restaurant "Bella Italia" führte QR-Code-Bestellungen ein und erzielte innerhalb von 3 Monaten:
+
• 40% schnellere Bestellabwicklung
+
• 25% höherer Umsatz durch Upselling-Vorschläge
+
• 90% der Gäste bevorzugen QR-Bestellungen gegenüber klassischer Bedienung
+
• 50% Kosteneinsparung bei Speisekarten-Druck
+
+
Häufige Fragen (FAQ)
+
Was, wenn Gäste kein Smartphone haben?
+
Halten Sie einige gedruckte Speisekarten als Backup bereit – besonders für ältere Gäste.
+
+
Wie sicher ist das Bezahlen via QR-Code?
+
Nutzen Sie etablierte Payment-Anbieter wie Stripe oder PayPal, die höchste Sicherheitsstandards erfüllen.
+
+
Brauche ich technisches Know-how?
+
Nein! Plattformen wie QR Master ermöglichen die Erstellung und Verwaltung von Restaurant-QR-Codes ohne Programmierkenntnisse.
+
+
Fazit
+
QR-Codes sind die Zukunft der Gastronomie. Sie verbessern das Gästeerlebnis, sparen Kosten und steigern den Umsatz. Egal ob kleines Café oder gehobenes Restaurant – QR-Codes lohnen sich für jeden Betrieb. Starten Sie noch heute mit Ihrer digitalen Transformation!
+
`,
+ },
};
function truncateAtWord(text: string, maxLength: number): string {
@@ -210,7 +397,7 @@ export default function BlogPostPage({ params }: { params: { slug: string } }) {
{ name: post.title, url: `/blog/${post.slug}` },
];
- const schemas = [
+ const schemas: any[] = [
blogPostingSchema({
title: post.title,
description: post.excerpt,
diff --git a/src/app/(marketing)/blog/page.tsx b/src/app/(marketing)/blog/page.tsx
index fde65e6..dd77048 100644
--- a/src/app/(marketing)/blog/page.tsx
+++ b/src/app/(marketing)/blog/page.tsx
@@ -52,25 +52,25 @@ const blogPosts = [
date: 'October 16, 2025',
readTime: '8 Min',
category: 'Analytics',
- image: 'https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=800&q=80',
+ image: 'https://images.unsplash.com/photo-1460925895917-afdab827c52f?w=800&q=80',
},
{
slug: 'qr-codes-im-restaurant',
title: 'QR Codes in Restaurants: The Digital Menu Revolution',
excerpt: 'Discover how QR codes are revolutionizing the restaurant industry and what benefits they offer for restaurants and guests.',
- date: 'January 15, 2024',
+ date: 'January 15, 2025',
readTime: '5 Min',
category: 'Restaurant',
- image: 'https://images.unsplash.com/photo-1517248135467-4c7edcad34c4?w=800&q=80',
+ image: 'https://images.unsplash.com/photo-1555396273-367ea4eb4db5?w=800&q=80',
},
{
slug: 'dynamische-vs-statische-qr-codes',
title: 'Dynamic vs Static QR Codes: What\'s the Difference?',
excerpt: 'A comprehensive comparison between dynamic and static QR codes and when you should use each type.',
- date: 'January 10, 2024',
+ date: 'January 10, 2025',
readTime: '3 Min',
category: 'Basics',
- image: 'https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=800&q=80',
+ image: 'https://images.unsplash.com/photo-1603791440384-56cd371ee9a7?w=800&q=80',
},
];
diff --git a/src/app/(marketing)/faq/page.tsx b/src/app/(marketing)/faq/page.tsx
index 457efbf..e3e6206 100644
--- a/src/app/(marketing)/faq/page.tsx
+++ b/src/app/(marketing)/faq/page.tsx
@@ -60,7 +60,7 @@ const faqs = [
},
{
question: 'How do I brand my QR codes?',
- answer: 'QR Master offers full customization options including custom colors, logo embedding, rounded corners, and pattern styles. Branded QR codes maintain scannability while matching your brand identity. Upload your logo, choose your color palette, and preview designs before downloading.',
+ answer: 'QR Master offers customization options including custom colors, corner styles, and pattern designs. Branded QR codes maintain scannability while matching your brand identity. Choose your color palette and preview designs before downloading.',
},
{
question: 'Is scan analytics GDPR compliant?',
diff --git a/src/app/(marketing)/layout.tsx b/src/app/(marketing)/layout.tsx
index 16ac5b1..079da24 100644
--- a/src/app/(marketing)/layout.tsx
+++ b/src/app/(marketing)/layout.tsx
@@ -4,6 +4,7 @@ import React, { useState } from 'react';
import Link from 'next/link';
import { usePathname } from 'next/navigation';
import { Button } from '@/components/ui/Button';
+import CookieBanner from '@/components/CookieBanner';
import en from '@/i18n/en.json';
export default function MarketingLayout({
@@ -28,7 +29,7 @@ export default function MarketingLayout({