ceo optimization , you tobe video addeds, and connect to links to footel ancors
This commit is contained in:
@@ -4,41 +4,97 @@ import { Analytics } from "@vercel/analytics/next";
|
||||
import { LanguageProvider } from "@/contexts/language-context";
|
||||
import "./globals.css";
|
||||
|
||||
// Fonts
|
||||
const _geist = Geist({ subsets: ["latin"] });
|
||||
const _geistMono = Geist_Mono({ subsets: ["latin"] });
|
||||
|
||||
// ---------------------------------------------
|
||||
// MULTI-LANGUAGE SEO METADATA (UZ / RU / EN)
|
||||
// ---------------------------------------------
|
||||
export const metadata: Metadata = {
|
||||
title: "v0 App",
|
||||
description: "Created with v0",
|
||||
generator: "v0.app",
|
||||
title:
|
||||
"DWATT – Elektr zaryadlash stansiyalarini boshqarish tizimi | EV Charging Management Platform",
|
||||
description:
|
||||
"Dwatt – elektromobil zaryadlash stansiyalarini boshqarish, monitoring va avtomatlashtirish uchun yaratilgan platforma.",
|
||||
keywords: [
|
||||
"dwatt",
|
||||
"dwatt.uz",
|
||||
"ev charging uz",
|
||||
"заправка электромобилей",
|
||||
"ev charging management",
|
||||
"зарядная станция",
|
||||
"ev charger software",
|
||||
"uzbekistan ev charging",
|
||||
"charging management platform",
|
||||
],
|
||||
authors: [{ name: "DWATT" }],
|
||||
robots: "index, follow",
|
||||
themeColor: "#004CEE",
|
||||
metadataBase: new URL("https://dwatt.uz"),
|
||||
|
||||
// MULTILINGUAL SUPPORT FOR SEO
|
||||
alternates: {
|
||||
canonical: "https://dwatt.uz",
|
||||
languages: {
|
||||
"uz-UZ": "https://dwatt.uz/uz",
|
||||
"ru-RU": "https://dwatt.uz/ru",
|
||||
"en-US": "https://dwatt.uz/en",
|
||||
},
|
||||
},
|
||||
|
||||
// SOCIAL SHARE (Open Graph)
|
||||
openGraph: {
|
||||
type: "website",
|
||||
url: "https://dwatt.uz",
|
||||
siteName: "DWATT",
|
||||
title:
|
||||
"DWATT – EV Charging Management Platform | Elektr zaryadlash boshqaruvi",
|
||||
description:
|
||||
"Elektromobil zaryadlash stansiyalarini boshqarish, monitoring qilish va avtomatlashtirish uchun mo'ljallangan professional tizim.",
|
||||
images: [
|
||||
{
|
||||
url: "https://dwatt.uz/og-image.png",
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: "DWATT EV Charging Platform",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
// TWITTER SEO
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: "DWATT – Elektr zaryadlash stansiyalarini boshqarish tizimi",
|
||||
description:
|
||||
"Dwatt elektromobil zaryadlash stansiyalarini boshqarish uchun yaratilgan professional tizim.",
|
||||
images: ["https://dwatt.uz/og-image.png"],
|
||||
site: "@dwatt",
|
||||
},
|
||||
|
||||
icons: {
|
||||
icon: [
|
||||
{
|
||||
url: "/icon-light-32x32.png",
|
||||
media: "(prefers-color-scheme: light)",
|
||||
},
|
||||
{
|
||||
url: "/icon-dark-32x32.png",
|
||||
media: "(prefers-color-scheme: dark)",
|
||||
},
|
||||
{
|
||||
url: "/icon.svg",
|
||||
type: "image/svg+xml",
|
||||
},
|
||||
{ url: "/icon-light-32x32.png", media: "(prefers-color-scheme: light)" },
|
||||
{ url: "/icon-dark-32x32.png", media: "(prefers-color-scheme: dark)" },
|
||||
{ url: "/icon.svg", type: "image/svg+xml" },
|
||||
],
|
||||
apple: "/apple-icon.png",
|
||||
},
|
||||
};
|
||||
|
||||
// ---------------------------------------------
|
||||
// ROOT LAYOUT WITH MULTI-LANGUAGE SUPPORT
|
||||
// ---------------------------------------------
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: Readonly<{
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}>) {
|
||||
}) {
|
||||
return (
|
||||
<html lang="en">
|
||||
<body className={`font-sans antialiased`}>
|
||||
<LanguageProvider>{children}</LanguageProvider>
|
||||
<html lang="uz" suppressHydrationWarning>
|
||||
<body className={`antialiased font-sans`}>
|
||||
<LanguageProvider>
|
||||
{children}
|
||||
</LanguageProvider>
|
||||
<Analytics />
|
||||
</body>
|
||||
</html>
|
||||
|
||||
11
app/robots.ts
Normal file
11
app/robots.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { MetadataRoute } from "next";
|
||||
|
||||
export default function robots(): MetadataRoute.Robots {
|
||||
return {
|
||||
rules: {
|
||||
userAgent: "*",
|
||||
allow: "/",
|
||||
},
|
||||
sitemap: "https://dwatt.uz/sitemap.xml",
|
||||
};
|
||||
}
|
||||
32
app/sitemap.ts
Normal file
32
app/sitemap.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import { MetadataRoute } from "next";
|
||||
|
||||
export default function sitemap(): MetadataRoute.Sitemap {
|
||||
const base = "https://dwatt.uz";
|
||||
|
||||
return [
|
||||
{
|
||||
url: `${base}`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: "weekly",
|
||||
priority: 1.0,
|
||||
},
|
||||
{
|
||||
url: `${base}/uz`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: "weekly",
|
||||
priority: 0.9,
|
||||
},
|
||||
{
|
||||
url: `${base}/ru`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: "weekly",
|
||||
priority: 0.9,
|
||||
},
|
||||
{
|
||||
url: `${base}/en`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: "weekly",
|
||||
priority: 0.9,
|
||||
},
|
||||
];
|
||||
}
|
||||
@@ -24,17 +24,17 @@ export default function Footer() {
|
||||
<h4 className="font-semibold mb-4">{t.footer.product.title}</h4>
|
||||
<ul className="space-y-2 text-sm text-white/70">
|
||||
<li>
|
||||
<a href="#" className="hover:text-white transition">
|
||||
<a href="#features" className="hover:text-white transition">
|
||||
{t.footer.product.items[0]}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" className="hover:text-white transition">
|
||||
<a href="#pricing" className="hover:text-white transition">
|
||||
{t.footer.product.items[1]}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" className="hover:text-white transition">
|
||||
<a href="#secure" className="hover:text-white transition">
|
||||
{t.footer.product.items[2]}
|
||||
</a>
|
||||
</li>
|
||||
@@ -50,12 +50,12 @@ export default function Footer() {
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" className="hover:text-white transition">
|
||||
<a href="#video" className="hover:text-white transition">
|
||||
{t.footer.company.items[1]}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" className="hover:text-white transition">
|
||||
<a href="#contact" className="hover:text-white transition">
|
||||
{t.footer.company.items[2]}
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -21,7 +21,7 @@ export default function HowItWorks() {
|
||||
];
|
||||
|
||||
return (
|
||||
<section className="py-20 md:py-32 px-4 sm:px-6 lg:px-8">
|
||||
<section id="secure" className="py-20 md:py-32 px-4 sm:px-6 lg:px-8">
|
||||
<div className="max-w-7xl mx-auto">
|
||||
<div className="text-center mb-12 md:mb-16">
|
||||
<h2 className="text-3xl md:text-4xl font-bold text-foreground mb-4">
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
import { useLanguage } from "@/contexts/language-context"
|
||||
import { toEmbedUrl } from "@/lib/embedUrl";
|
||||
import { Play } from "lucide-react"
|
||||
|
||||
export default function Video() {
|
||||
const {t} = useLanguage();
|
||||
return (
|
||||
<section className="py-20 md:py-32 px-4 sm:px-6 lg:px-8">
|
||||
<section id="video" className="py-20 md:py-32 px-4 sm:px-6 lg:px-8">
|
||||
<div className="max-w-4xl mx-auto">
|
||||
<div className="text-center mb-12">
|
||||
<h2 className="text-3xl md:text-4xl font-bold text-foreground mb-4">{t.action.title}</h2>
|
||||
|
||||
Reference in New Issue
Block a user