done landing page

This commit is contained in:
2025-11-10 17:10:34 +05:30
parent 3852d46661
commit 483515e163
105 changed files with 3529 additions and 104 deletions

View File

@@ -1,20 +1,42 @@
import type { Metadata } from "next";
import { Geist, Geist_Mono } from "next/font/google";
import { Playfair_Display } from "next/font/google";
import "./globals.css";
const geistSans = Geist({
variable: "--font-geist-sans",
subsets: ["latin"],
});
const geistMono = Geist_Mono({
variable: "--font-geist-mono",
subsets: ["latin"],
});
import SmoothScrollProvider from "@/lib/useLenisScroll";
import { LayoutWithTransition } from "@/layout/Layout";
export const metadata: Metadata = {
title: "Create Next App",
description: "Generated by create next app",
title:
"Whispering Tree | Smart IoT & AI Solutions for Tree Health Monitoring",
description:
"Whispering Tree combines IoT sensors and AI analytics to monitor the health of trees in real time. Our smart environmental system helps cities, organizations, and individuals optimize irrigation, detect stress early, and promote sustainable growth through data-driven insights.",
keywords: [
"Whispering Tree",
"tree health monitoring",
"IoT for environment",
"AI tree analytics",
"smart irrigation",
"urban forestry technology",
"environmental intelligence",
"FalktronTrees",
"Matthias Mut",
"AI for sustainability",
"smart city solutions",
"real-time tree monitoring",
"IoT sensors for trees",
"green technology",
"water optimization system",
],
openGraph: {
title:
"Whispering Tree | Smart IoT & AI Solutions for Tree Health Monitoring",
description:
"Whispering Tree combines IoT sensors and AI analytics to monitor the health of trees in real time. Our smart environmental system helps cities, organizations, and individuals optimize irrigation, detect stress early, and promote sustainable growth through data-driven insights.",
url: "https://whisperingtree.com",
type: "website",
},
icons: {
icon: "/fav.svg",
},
};
export default function RootLayout({
@@ -24,10 +46,10 @@ export default function RootLayout({
}>) {
return (
<html lang="en">
<body
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
>
{children}
<body className={`antialiased`}>
<LayoutWithTransition>
<SmoothScrollProvider>{children}</SmoothScrollProvider>
</LayoutWithTransition>
</body>
</html>
);