feat: add marketing landing pages and tools for dynamic QR codes and analytics

This commit is contained in:
Timo Knuth
2026-04-07 14:50:16 +02:00
parent 8408159a96
commit a6fd2ed61f
14 changed files with 1360 additions and 92 deletions

View File

@@ -11,15 +11,15 @@ export function middleware(req: NextRequest) {
if (path === '/guide/bulk-qr-code-generation') {
return NextResponse.redirect(new URL('/learn/developer', req.url), 301);
}
if (path === '/guide/qr-code-best-practices') {
return NextResponse.redirect(new URL('/learn/basics', req.url), 301);
}
if (path === '/create-qr') {
return NextResponse.redirect(new URL('/dynamic-qr-code-generator', req.url), 301);
}
// Public routes that don't require authentication
const publicPaths = [
if (path === '/guide/qr-code-best-practices') {
return NextResponse.redirect(new URL('/learn/basics', req.url), 301);
}
if (path === '/create-qr') {
return NextResponse.redirect(new URL('/dynamic-qr-code-generator', req.url), 301);
}
// Public routes that don't require authentication
const publicPaths = [
'/',
'/pricing',
'/faq',
@@ -32,11 +32,11 @@ export function middleware(req: NextRequest) {
'/features',
// '/guide', // Redirected to /learn/*
'/qr-code-erstellen',
'/dynamic-qr-code-generator',
'/bulk-qr-code-generator',
'/qr-code-tracking',
'/qr-code-analytics',
'/reprint-calculator',
'/dynamic-qr-code-generator',
'/bulk-qr-code-generator',
'/qr-code-tracking',
'/qr-code-analytics',
'/reprint-calculator',
'/barcode-generator',
'/custom-qr-code-generator',
'/manage-qr-codes',
@@ -46,20 +46,21 @@ export function middleware(req: NextRequest) {
'/display',
'/contact',
'/about',
'/learn',
'/use-cases',
'/authors',
'/press',
'/testimonials',
'/qr-code-for-marketing-campaigns',
'/qr-code-for',
'/use-cases/flyer-qr-codes',
'/use-cases/packaging-qr-codes',
'/use-cases/real-estate-sign-qr-codes',
'/use-cases/feedback-qr-codes',
'/use-cases/payment-qr-codes',
'/use-cases/coupon-qr-codes',
];
'/learn',
'/use-cases',
'/authors',
'/press',
'/testimonials',
'/qr-code-for-marketing-campaigns',
'/qr-code-for',
'/qr-code-print-size-guide',
'/use-cases/flyer-qr-codes',
'/use-cases/packaging-qr-codes',
'/use-cases/real-estate-sign-qr-codes',
'/use-cases/feedback-qr-codes',
'/use-cases/payment-qr-codes',
'/use-cases/coupon-qr-codes',
];
// Check if path is public
const isPublicPath = publicPaths.some(p => path === p || path.startsWith(p + '/'));
@@ -108,4 +109,4 @@ export const config = {
*/
'/((?!_next/static|_next/image|favicon.ico|logo.svg|og-image.png).*)',
],
};
};