diff --git a/package.json b/package.json
index 5841907..bcfd0cd 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,8 @@
"start": "next start",
"lint": "eslint",
"sitemap": "node scripts/generate-sitemap.cjs",
- "optimize-images": "node scripts/optimize-images.mjs"
+ "optimize-images": "node scripts/optimize-images.mjs",
+ "seo-audit": "node scripts/seo-test-selenium.cjs"
},
"dependencies": {
"axios": "^1.13.2",
diff --git a/public/sitemap.xml b/public/sitemap.xml
index d9e5244..5a2b8be 100644
--- a/public/sitemap.xml
+++ b/public/sitemap.xml
@@ -1 +1 @@
-https://antalya.metatronnest.com/daily1.0https://antalya.metatronnest.com/about-antalya-restaurant/monthly0.5https://antalya.metatronnest.com/antalya-restaurant-menu/weekly0.6https://antalya.metatronnest.com/antalya-restaurant-gallery/weekly0.6https://antalya.metatronnest.com/catering-services-ontario/weekly0.6https://antalya.metatronnest.com/book-a-table/weekly0.6https://antalya.metatronnest.com/antalya-turkish-food-blog/weekly0.6https://antalya.metatronnest.com/antalya-turkish-food-blog/the-art-of-turkish-tea/weekly0.6https://antalya.metatronnest.com/antalya-turkish-food-blog/secrets-of-charcoal-grilling/weekly0.6https://antalya.metatronnest.com/antalya-turkish-food-blog/a-taste-of-sweet-legacy/weekly0.6
\ No newline at end of file
+https://burlington.antalyarestaurant.ca/daily1.0https://burlington.antalyarestaurant.ca/about-antalya-restaurant/monthly0.5https://burlington.antalyarestaurant.ca/antalya-restaurant-menu/weekly0.6https://burlington.antalyarestaurant.ca/antalya-restaurant-gallery/weekly0.6https://burlington.antalyarestaurant.ca/catering-services-ontario/weekly0.6https://burlington.antalyarestaurant.ca/book-a-table/weekly0.6https://burlington.antalyarestaurant.ca/antalya-turkish-food-blog/weekly0.6https://burlington.antalyarestaurant.ca/antalya-turkish-food-blog/the-art-of-turkish-tea/weekly0.6https://burlington.antalyarestaurant.ca/antalya-turkish-food-blog/secrets-of-charcoal-grilling/weekly0.6https://burlington.antalyarestaurant.ca/antalya-turkish-food-blog/a-taste-of-sweet-legacy/weekly0.6
\ No newline at end of file
diff --git a/scripts/generate-sitemap.cjs b/scripts/generate-sitemap.cjs
index 42daeb8..283d7ce 100644
--- a/scripts/generate-sitemap.cjs
+++ b/scripts/generate-sitemap.cjs
@@ -3,7 +3,7 @@ const path = require("path");
const { SitemapStream, streamToPromise } = require("sitemap");
const { pathToFileURL } = require("url");
-const hostname = "https://antalya.metatronnest.com"; // localhost for development
+const hostname = "https://burlington.antalyarestaurant.ca"; // localhost for development
const addTrailingSlash = true; // ✅ Set this true if your Next.js uses trailingSlash: true
// Utility to format URLs based on config
diff --git a/src/app/about-antalya-restaurant/AboutContent.tsx b/src/app/about-antalya-restaurant/AboutContent.tsx
index 72b8ab6..d7cbe46 100644
--- a/src/app/about-antalya-restaurant/AboutContent.tsx
+++ b/src/app/about-antalya-restaurant/AboutContent.tsx
@@ -15,26 +15,11 @@ import 'swiper/css';
import 'swiper/css/navigation';
import { FaStar, FaChevronLeft, FaChevronRight } from 'react-icons/fa';
-interface Review {
- text?: string;
- description?: string;
- snippet?: string;
- review_text?: string;
- body?: string;
- content?: string;
- rating: number;
- profile_photo_url?: string;
- author_profile_photo_url?: string;
- user?: {
- thumbnail?: string;
- name?: string;
- };
- author_name?: string;
-}
+import { Review } from "@/utils/getReviews";
-export default function AboutContent() {
- const [reviews, setReviews] = useState([]);
- const [loading, setLoading] = useState(true);
+export default function AboutContent({ initialReviews = [] }: { initialReviews?: Review[] }) {
+ const [reviews, setReviews] = useState(initialReviews);
+ const [loading, setLoading] = useState(initialReviews.length === 0);
const [expandedReview, setExpandedReview] = useState(null);
const [swiperInstance, setSwiperInstance] = useState(null);
@@ -115,6 +100,8 @@ export default function AboutContent() {
};
useEffect(() => {
+ if (initialReviews.length > 0) return;
+
async function loadReviews() {
try {
const res = await fetch("/api/reviews");
@@ -132,7 +119,7 @@ export default function AboutContent() {
}
}
loadReviews();
- }, []);
+ }, [initialReviews]);
const displayedReviews = reviews.length > 0 && reviews.length < 3
? [...reviews, ...reviews, ...reviews]
diff --git a/src/app/about-antalya-restaurant/page.tsx b/src/app/about-antalya-restaurant/page.tsx
index 7b06adf..512985c 100644
--- a/src/app/about-antalya-restaurant/page.tsx
+++ b/src/app/about-antalya-restaurant/page.tsx
@@ -1,16 +1,16 @@
import { Metadata } from "next";
import AboutContent from "./AboutContent";
-import ClientOnly from "@/components/ClientOnly";
+import { getReviews } from "@/utils/getReviews";
export const metadata: Metadata = {
title: "About Antalya Restaurant | Authentic Turkish Dining",
description: "Learn about Antalya Restaurant in Ontario - where authentic Turkish flavours, warm hospitality come together for a memorable dining experience.",
};
-export default function AboutPage() {
+export default async function AboutPage() {
+ const reviews = await getReviews();
+
return (
-
-
-
+
);
}
diff --git a/src/app/antalya-turkish-food-blog/[id]/page.tsx b/src/app/antalya-turkish-food-blog/[id]/page.tsx
index c90f0b0..ea71fb4 100644
--- a/src/app/antalya-turkish-food-blog/[id]/page.tsx
+++ b/src/app/antalya-turkish-food-blog/[id]/page.tsx
@@ -20,8 +20,8 @@ export async function generateMetadata({ params }: { params: Promise<{ id: strin
}
return {
- title: `${blog.title} | Antalya Restaurant`,
- description: blog.excerpt,
+ title: blog.metatitle || `${blog.title} | Antalya Restaurant`,
+ description: blog.metadesc || blog.excerpt,
openGraph: {
title: blog.title,
description: blog.excerpt,
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index eb7eb75..960a200 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -25,10 +25,10 @@ const dmSans = DM_Sans({
// We'll use system fonts as fallback in the CSS variables
export const metadata: Metadata = {
- metadataBase: new URL("https://antalya.metatronnest.com"),
+ metadataBase: new URL("https://burlington.antalyarestaurant.ca"),
title: {
- default: "Antalya Restaurant Burlington - Authentic Turkish cuisine",
- template: "%s | Antalya Restaurant Burlington"
+ default: "Antalya Restaurant Burlington | Authentic Turkish Cuisine",
+ template: "%s"
},
description: "Experience the finest authentic Turkish cuisine at Antalya Restaurant Burlington. Enjoy our delicious kebabs, mezes, and desserts in a warm, inviting atmosphere.",
keywords: ["Turkish restaurant", "Antalya restaurant", "Turkish cuisine", "kebabs", "meze", "dining", "authentic food", "halal food", "middle eastern food"],
diff --git a/src/app/page.tsx b/src/app/page.tsx
index a883d01..8f6f3bf 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -11,13 +11,16 @@ import BookTable from "@/components/BookTable/BookTable";
import Footer from "@/components/Footer/Footer";
import { Metadata } from "next";
+import { getReviews } from "@/utils/getReviews";
export const metadata: Metadata = {
title: "Best Turkish Restaurant in Ontario | Antalya",
description: "Enjoy authentic Turkish dining at Antalya with charcoal-grilled kebabs, handcrafted dishes, & warm hospitality for a memorable taste of Turkey.",
};
-export default function Home() {
+export default async function Home() {
+ const reviews = await getReviews();
+
return (
@@ -26,7 +29,7 @@ export default function Home() {
-
+
diff --git a/src/components/Catering/Catering.tsx b/src/components/Catering/Catering.tsx
index 0fdee1a..d91b76b 100644
--- a/src/components/Catering/Catering.tsx
+++ b/src/components/Catering/Catering.tsx
@@ -185,9 +185,9 @@ export default function Catering() {
variants={containerVariants}
>
-
+
CATERING & EVENTS
-
+
diff --git a/src/components/NavbarClient.tsx b/src/components/NavbarClient.tsx
index d05395c..7c1b1ab 100644
--- a/src/components/NavbarClient.tsx
+++ b/src/components/NavbarClient.tsx
@@ -1,10 +1,5 @@
-"use client";
-import dynamic from "next/dynamic";
-
-const Navbar = dynamic(() => import("@/components/Navbar/Navbar"), {
- ssr: false,
-});
+import Navbar from "@/components/Navbar/Navbar";
export default function NavbarClient() {
return ;
diff --git a/src/components/Testimonials/Testimonials.tsx b/src/components/Testimonials/Testimonials.tsx
index 1a5f733..8a031f5 100644
--- a/src/components/Testimonials/Testimonials.tsx
+++ b/src/components/Testimonials/Testimonials.tsx
@@ -29,9 +29,9 @@ interface Review {
author_name?: string;
}
-export default function Testimonials() {
- const [reviews, setReviews] = useState([]);
- const [loading, setLoading] = useState(true);
+export default function Testimonials({ initialReviews = [] }: { initialReviews?: Review[] }) {
+ const [reviews, setReviews] = useState(initialReviews);
+ const [loading, setLoading] = useState(initialReviews.length === 0);
const [expandedReview, setExpandedReview] = useState(null);
const [swiperInstance, setSwiperInstance] = useState(null);
@@ -86,6 +86,8 @@ export default function Testimonials() {
}, [expandedReview, swiperInstance]);
useEffect(() => {
+ if (initialReviews.length > 0) return;
+
async function loadReviews() {
try {
const res = await fetch("/api/reviews");
@@ -120,7 +122,7 @@ export default function Testimonials() {
}
}
loadReviews();
- }, []);
+ }, [initialReviews]);
const displayedReviews = reviews.length > 0 && reviews.length < 3
? [...reviews, ...reviews, ...reviews]
diff --git a/src/utils/constant.ts b/src/utils/constant.ts
index 1ae9c2d..c58b645 100644
--- a/src/utils/constant.ts
+++ b/src/utils/constant.ts
@@ -4,7 +4,7 @@ export const blogData = [
slug: 'the-art-of-turkish-tea',
title: 'The Art of Turkish Tea',
metatitle: 'The Art of Turkish Tea – Tradition, Taste & Ritual',
- metadesc: 'Discover the art of Turkish tea – its history, brewing traditions, cultural significance, and how this cherished daily ritual reflects Turkish hospitality and heritage.',
+ metadesc: 'Discover the art of Turkish tea—its history, brewing traditions, and cultural significance, reflecting daily rituals, warm hospitality, and rich heritage.',
category: 'Culture',
date: 'October 15, 2025',
comments: '12 Comments',
diff --git a/src/utils/getReviews.ts b/src/utils/getReviews.ts
new file mode 100644
index 0000000..a701155
--- /dev/null
+++ b/src/utils/getReviews.ts
@@ -0,0 +1,63 @@
+
+export interface Review {
+ text?: string;
+ description?: string;
+ snippet?: string;
+ review_text?: string;
+ body?: string;
+ content?: string;
+ rating: number;
+ profile_photo_url?: string;
+ author_profile_photo_url?: string;
+ user?: {
+ thumbnail?: string;
+ name?: string;
+ };
+ author_name?: string;
+}
+
+export async function getReviews() {
+ const apiKey = "37eb7f83988cfd76ffb5c5af9adc25652efe5607e39997fc7d0e054d690ef25e";
+ const placeId = "ChIJjazCAVJhK4gRUj9RstvmUM0";
+
+ let allReviews: Review[] = [];
+ let nextPageToken: string | null = null;
+ let pageCount = 0;
+
+ try {
+ while (pageCount < 3) {
+ pageCount++;
+ const url: string = `https://serpapi.com/search.json?engine=google_maps_reviews&hl=en&api_key=${apiKey}&place_id=${placeId}${nextPageToken ? `&next_page_token=${nextPageToken}` : ""}`;
+
+ const response = await fetch(url, {
+ next: { revalidate: 3600 } // Cache for 1 hour
+ });
+
+ if (!response.ok) {
+ break;
+ }
+
+ const data = await response.json();
+
+ if (data.error || !data.reviews) {
+ break;
+ }
+
+ allReviews = [...allReviews, ...data.reviews];
+
+ if (!data.serpapi_pagination || !data.serpapi_pagination.next_page_token) {
+ break;
+ }
+
+ nextPageToken = data.serpapi_pagination.next_page_token;
+ }
+
+ return allReviews.filter((r: Review) =>
+ (r.text || r.description || r.snippet || r.review_text || r.body || r.content) &&
+ r.rating >= 4
+ );
+ } catch (error) {
+ console.error("Error fetching reviews:", error);
+ return [];
+ }
+}