gardesk/tarmac-web / bb46a92

Browse files

add JSON-LD schema, rich meta tags, canonical URLs

Authored by espadonne
SHA
bb46a929ae8371a3073b7a9333802f08ae1e90aa
Parents
2779442
Tree
e3ab05a

1 changed file

StatusFile+-
M src/app/layout.tsx 78 8
src/app/layout.tsxmodified
@@ -2,32 +2,96 @@ import type { Metadata } from "next";
22
 import "./globals.css";
33
 
44
 export const metadata: Metadata = {
5
+  metadataBase: new URL("https://tarmac.musicsian.com"),
56
   icons: {
67
     icon: [
78
       { url: "/favicon.svg", type: "image/svg+xml" },
89
       { url: "/favicon.png", type: "image/png" },
910
     ],
1011
   },
11
-  title: "tarmac — macOS tiling window manager",
12
+  title: {
13
+    default: "tarmac — tiling window manager for macOS",
14
+    template: "%s | tarmac",
15
+  },
1216
   description:
13
-    "A keyboard-driven tiling window manager for macOS, written in Rust. BSP layouts, workspaces, IPC, Lua configuration.",
17
+    "tarmac is a keyboard-driven tiling window manager for macOS written in Rust. Automatic BSP layouts, 10 workspaces, scratchpads, IPC, Lua configuration, and window borders via ers. An alternative to yabai and AeroSpace.",
1418
   keywords: [
1519
     "tarmac",
20
+    "tiling window manager",
1621
     "window manager",
17
-    "tiling",
18
-    "macos",
19
-    "rust",
20
-    "bsp",
22
+    "macos window manager",
23
+    "macos tiling",
24
+    "tiling wm",
25
+    "bsp layout",
2126
     "keyboard driven",
27
+    "yabai alternative",
28
+    "aerospace alternative",
29
+    "macos productivity",
30
+    "window tiling macos",
31
+    "rust window manager",
32
+    "lua configuration",
33
+    "ipc window manager",
34
+    "macos workspaces",
35
+    "scratchpad",
36
+    "window borders macos",
2237
   ],
2338
   authors: [{ name: "gardesk" }],
39
+  creator: "gardesk",
40
+  publisher: "gardesk",
41
+  alternates: {
42
+    canonical: "/",
43
+  },
2444
   openGraph: {
25
-    title: "tarmac — macOS tiling window manager",
45
+    title: "tarmac — tiling window manager for macOS",
2646
     description:
27
-      "A keyboard-driven tiling window manager for macOS, written in Rust.",
47
+      "Keyboard-driven tiling window manager for macOS. BSP layouts, workspaces, IPC, Lua config. Written in Rust.",
2848
     url: "https://tarmac.musicsian.com",
2949
     siteName: "tarmac",
3050
     type: "website",
51
+    locale: "en_US",
52
+  },
53
+  twitter: {
54
+    card: "summary_large_image",
55
+    title: "tarmac — tiling window manager for macOS",
56
+    description:
57
+      "Keyboard-driven tiling window manager for macOS. BSP layouts, workspaces, IPC, Lua config.",
58
+  },
59
+  robots: {
60
+    index: true,
61
+    follow: true,
62
+    googleBot: {
63
+      index: true,
64
+      follow: true,
65
+      "max-snippet": -1,
66
+      "max-image-preview": "large",
67
+      "max-video-preview": -1,
68
+    },
69
+  },
70
+};
71
+
72
+const jsonLd = {
73
+  "@context": "https://schema.org",
74
+  "@type": "SoftwareApplication",
75
+  name: "tarmac",
76
+  applicationCategory: "UtilitiesApplication",
77
+  operatingSystem: "macOS",
78
+  description:
79
+    "A keyboard-driven tiling window manager for macOS written in Rust. Automatic BSP window layouts, workspaces, scratchpads, IPC control, and Lua configuration.",
80
+  url: "https://tarmac.musicsian.com",
81
+  downloadUrl: "https://tarmac.musicsian.com/install.sh",
82
+  softwareVersion: "0.1.0",
83
+  programmingLanguage: "Rust",
84
+  license: "https://opensource.org/licenses/MIT",
85
+  author: {
86
+    "@type": "Person",
87
+    name: "gardesk",
88
+    url: "https://github.com/gardesk",
89
+  },
90
+  codeRepository: "https://github.com/gardesk/tarmac",
91
+  offers: {
92
+    "@type": "Offer",
93
+    price: "0",
94
+    priceCurrency: "USD",
3195
   },
3296
 };
3397
 
@@ -38,6 +102,12 @@ export default function RootLayout({
38102
 }>) {
39103
   return (
40104
     <html lang="en">
105
+      <head>
106
+        <script
107
+          type="application/ld+json"
108
+          dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
109
+        />
110
+      </head>
41111
       <body className="antialiased min-h-screen">{children}</body>
42112
     </html>
43113
   );