diff --git a/src/app/(admin)/dashboard/layout.tsx b/src/app/(admin)/dashboard/layout.tsx index f566888..d2da5de 100644 --- a/src/app/(admin)/dashboard/layout.tsx +++ b/src/app/(admin)/dashboard/layout.tsx @@ -1,7 +1,15 @@ import { DashboardSidebar } from "@/app/(admin)/dashboard/_components/sidebar" import { SidebarProvider } from "@/components/ui/sidebar" +import type { Metadata } from "next" import { ReactNode } from "react" +export const metadata: Metadata = { + title: "Dashboard", + description: + "Manage your shortened URLs, view analytics, and monitor link performance. Access advanced features like custom slugs, expiration dates, and detailed statistics.", + keywords: ["URL dashboard", "link management", "analytics", "URL statistics", "link tracking"] +} + export default function DashboardLayout({ children }: { diff --git a/src/app/(public)/layout.tsx b/src/app/(public)/layout.tsx index ae361c6..d68de6a 100644 --- a/src/app/(public)/layout.tsx +++ b/src/app/(public)/layout.tsx @@ -1,8 +1,16 @@ import { ThemeToggle } from "@/components/theme-toggle" import { UserDropdown } from "@/components/user-dropdown" +import type { Metadata } from "next" import Link from "next/link" import { ReactNode } from "react" +export const metadata: Metadata = { + title: "Linker - Free URL Shortener", + description: + "Transform long URLs into short, shareable links. Perfect for social media, emails, and anywhere you need clean, manageable links. Get started for free!", + keywords: ["free URL shortener", "short links", "link shortener", "social media links", "shareable links"] +} + export default function PublicLayout({ children }: { diff --git a/src/app/favicon.ico b/src/app/favicon.ico new file mode 100644 index 0000000..016ae6c Binary files /dev/null and b/src/app/favicon.ico differ diff --git a/src/app/layout.tsx b/src/app/layout.tsx index f680843..512d2a6 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,8 +1,24 @@ +import type { Metadata } from "next" import { ReactNode } from "react" import "./globals.css" import { Toaster } from "@/components/ui/sonner" +import { env } from "@/lib/env/client" import { ThemeProvider } from "next-themes" +export const metadata: Metadata = { + title: { + default: "Linker - Smart URL Shortener & Link Management", + template: "%s | Linker" + }, + description: + "A powerful and intuitive URL shortening service with advanced analytics, custom slugs, expiration dates, and comprehensive link management features.", + keywords: ["URL shortener", "link management", "analytics", "custom slugs", "link tracking", "short links"], + authors: [{ name: "Taken" }], + creator: "Taken", + publisher: "Taken", + metadataBase: new URL(env.NEXT_PUBLIC_BASE_URL) +} + export default function RootLayout({ children }: { diff --git a/src/app/manifest.ts b/src/app/manifest.ts new file mode 100644 index 0000000..529bbe1 --- /dev/null +++ b/src/app/manifest.ts @@ -0,0 +1,16 @@ +import type { MetadataRoute } from 'next' + +export default function manifest(): MetadataRoute.Manifest { + return { + name: "Linker - Smart URL Shortener & Link Management", + short_name: "Linker", + description: "Transform long URLs into short, shareable links. Perfect for social media, emails, and anywhere you need clean, manageable links. Get started for free!", + start_url: "/", + display: "standalone", + icons: [{ + src: '/favicon.ico', + sizes: 'any', + type: 'image/x-icon', + }], + } +} \ No newline at end of file diff --git a/src/app/robots.ts b/src/app/robots.ts new file mode 100644 index 0000000..feb2f92 --- /dev/null +++ b/src/app/robots.ts @@ -0,0 +1,11 @@ +import type { MetadataRoute } from 'next' + +export default function robots(): MetadataRoute.Robots { + return { + rules: { + userAgent: "*", + allow: ["/", "/r/"], + disallow: "/dashboard/", + } + } +} \ No newline at end of file