Files
computer-repair/src/app/layout.js
T
asownerytandClaude Opus 5.5 c085e2b031 Phase 1: technical SEO foundations
- Per-page titles, descriptions, canonicals, Open Graph/Twitter tags
  via a shared pageMetadata() helper; metadataBase on the root layout
- Sitemap generated from a route list on the canonical non-www host;
  robots.txt points to it; /services removed
- One H1 per page; decorative images get empty alt text
- JSON-LD: site-wide ComputerRepairService, FAQPage on the homepage,
  Service on each service page
- FAQ answers are now server-rendered (forceMount) so the schema matches
  the HTML; fixed the nested payment FAQ item
- Drop web design (page, nav link, homepage card and FAQs); 301 the old URL
- Remove GA, Facebook Pixel and Vercel Analytics/Speed Insights
- Fix tel: links (+640211... -> +64211...)
- Add og-image.png and logo.png

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-30 20:24:29 +13:00

39 lines
1.0 KiB
JavaScript

import localFont from "next/font/local";
import "./globals.css";
import Navbar from "./components/Navbar";
import Footer from "./components/Footer";
import ChatwootWidget from "./components/ChatwootWidget";
import JsonLd from "./components/JsonLd";
import { SITE_URL, business, localBusinessSchema } from "@/lib/site";
const geistSans = localFont({
src: "./fonts/GeistVF.woff",
variable: "--font-geist-sans",
weight: "100 900",
});
const geistMono = localFont({
src: "./fonts/GeistMonoVF.woff",
variable: "--font-geist-mono",
weight: "100 900",
});
// Pages set their own title, description and canonical via pageMetadata().
export const metadata = {
metadataBase: new URL(SITE_URL),
title: business.name,
};
export default function RootLayout({ children }) {
return (
<html lang="en-NZ">
<body className={`${geistSans.variable} ${geistMono.variable}`}>
<JsonLd data={localBusinessSchema()} />
<ChatwootWidget />
<Navbar />
{children}
<Footer />
</body>
</html>
);
}