Initial commit

This commit is contained in:
2026-06-20 15:41:55 +05:30
commit 2778527442
163 changed files with 72703 additions and 0 deletions

103
src/app/layout.tsx Normal file
View File

@@ -0,0 +1,103 @@
import type { Metadata, Viewport } from "next";
import { Hanken_Grotesk, Inter } from "next/font/google";
import "./globals.css";
import { Navbar } from "@/components/layout/Navbar";
import { Footer } from "@/components/layout/Footer";
const hankenGrotesk = Hanken_Grotesk({
subsets: ["latin"],
weight: ["600", "700", "800"],
variable: "--font-display",
display: "swap",
});
const inter = Inter({
subsets: ["latin"],
weight: ["400", "600", "700"],
variable: "--font-body",
display: "swap",
});
export const metadata: Metadata = {
metadataBase: new URL("https://nearle.in"),
title: {
default: "Nearle — Your Neighborhood, Delivered",
template: "%s | Nearle",
},
description:
"Hyper-local essentials, hot meals, and professional services from verified businesses within your 2km radius. India's #1 neighborhood commerce platform.",
keywords: [
"hyperlocal",
"neighborhood delivery",
"Coimbatore",
"local grocery",
"Nearle",
"home services",
"India delivery",
"neighborhood commerce",
],
openGraph: {
title: "Nearle — Your Neighborhood, Delivered",
description:
"Hyper-local essentials, hot meals, and professional services from verified businesses within your 2km radius.",
url: "https://nearle.in",
siteName: "Nearle",
locale: "en_IN",
type: "website",
images: [
{
url: "/logo.png",
width: 512,
height: 512,
alt: "Nearle logo",
},
],
},
twitter: {
card: "summary",
title: "Nearle — Your Neighborhood, Delivered",
description:
"India's hyperlocal neighborhood commerce platform",
images: ["/logo.png"],
},
alternates: { canonical: "/" },
icons: {
icon: "/favicon.ico",
shortcut: "/favicon.ico",
apple: "/apple-icon.png",
},
robots: { index: true, follow: true },
};
export const viewport: Viewport = {
themeColor: "#4d046a",
width: "device-width",
initialScale: 1,
};
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html
lang="en"
className={`${hankenGrotesk.variable} ${inter.variable}`}
suppressHydrationWarning
>
<head>
{/* Material Symbols Outlined */}
<link
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap"
rel="stylesheet"
/>
</head>
<body className="bg-background text-on-surface font-body antialiased" suppressHydrationWarning>
<Navbar />
<main>{children}</main>
<Footer />
</body>
</html>
);
}