Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit b583d88

Browse filesBrowse files
committed
feat: add SEO metadata and branding assets
1 parent e585614 commit b583d88
Copy full SHA for b583d88
Expand file treeCollapse file tree

16 files changed

+160
-17
lines changed

‎apps/collabydraw/app/favicon.ico

Copy file name to clipboard
-21.1 KB
Binary file not shown.

‎apps/collabydraw/app/layout.tsx

Copy file name to clipboardExpand all lines: apps/collabydraw/app/layout.tsx
+10-4Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import "./globals.css";
44
import Provider from "./provider";
55
import { Toaster } from "sonner";
66
import { ThemeProvider } from "@/components/theme-provider";
7+
import { baseMetadata, jsonLdSchema } from "@/utils/metadata";
78

89
const geistSans = Geist({
910
variable: "--font-geist-sans",
@@ -26,10 +27,7 @@ const assistant = Assistant({
2627
display: "swap",
2728
});
2829

29-
export const metadata: Metadata = {
30-
title: "CollabyDraw | Om Sharma",
31-
description: "CollabyDraw Build By Om Sharma",
32-
};
30+
export const metadata: Metadata = baseMetadata;
3331

3432
export default function RootLayout({
3533
children,
@@ -38,6 +36,14 @@ export default function RootLayout({
3836
}>) {
3937
return (
4038
<html lang="en">
39+
<head>
40+
<script
41+
type="application/ld+json"
42+
dangerouslySetInnerHTML={{
43+
__html: JSON.stringify(jsonLdSchema)
44+
}}
45+
/>
46+
</head>
4147
<body
4248
className={`${geistSans.variable} ${geistMono.variable} ${assistant.variable} antialiased flex min-h-screen flex-col bg-background`}
4349
>
+22Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./ui/tooltip";
2+
import Link from "next/link";
3+
import { EncryptedIcon } from "./SvgIcons";
4+
5+
export default function EncryptedWidget() {
6+
return (
7+
<div className="Secure_App_Tooltip fixed z-[4] bottom-4 right-4 rounded-lg hidden md:flex items-center surface-box-shadow">
8+
<TooltipProvider delayDuration={0}>
9+
<Tooltip key={""}>
10+
<TooltipTrigger asChild>
11+
<Link href="!#" className="text-color-primary">
12+
<EncryptedIcon className="w-[1.2rem] h-[1.2rem]" />
13+
</Link>
14+
</TooltipTrigger>
15+
<TooltipContent className="font-excalifont">
16+
Your drawings are end-to-end encrypted so Collabydraw&apos;s servers will never see them.
17+
</TooltipContent>
18+
</Tooltip>
19+
</TooltipProvider>
20+
</div>
21+
);
22+
};

‎apps/collabydraw/components/IconButton.tsx

Copy file name to clipboardExpand all lines: apps/collabydraw/components/IconButton.tsx
-13Lines changed: 0 additions & 13 deletions
This file was deleted.

‎apps/collabydraw/components/SvgIcons.tsx

Copy file name to clipboardExpand all lines: apps/collabydraw/components/SvgIcons.tsx
+8Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,12 @@ export function TextIcon({ className }: { className: string }) {
3737
</g>
3838
</svg>
3939
)
40+
}
41+
42+
export function EncryptedIcon({ className }: { className: string }) {
43+
return (
44+
<svg aria-hidden="true" focusable="false" role="img" viewBox="0 0 24 24" className={cn("size-6", className)}>
45+
<path fill="currentColor" d="M11.553 22.894a.998.998 0 00.894 0s3.037-1.516 5.465-4.097C19.616 16.987 21 14.663 21 12V5a1 1 0 00-.649-.936l-8-3a.998.998 0 00-.702 0l-8 3A1 1 0 003 5v7c0 2.663 1.384 4.987 3.088 6.797 2.428 2.581 5.465 4.097 5.465 4.097zm-1.303-8.481l6.644-6.644a.856.856 0 111.212 1.212l-7.25 7.25a.856.856 0 01-1.212 0l-3.75-3.75a.856.856 0 111.212-1.212l3.144 3.144z"></path>
46+
</svg>
47+
)
4048
}

‎apps/collabydraw/components/canvas/CanvasBoard.tsx

Copy file name to clipboardExpand all lines: apps/collabydraw/components/canvas/CanvasBoard.tsx
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import CollaborationToolbar from "../CollaborationToolbar";
2020
import ZoomControl from "../ZoomControl";
2121
import CollabydrawTextEditorContainer from "../Collabydraw-TextEditorContainer";
2222
import { HomeWelcome, MainMenuWelcome, ToolMenuWelcome } from "../welcome-screen";
23+
import EncryptedWidget from "../EncryptedWidget";
2324

2425
export default function CanvasBoard() {
2526
const { data: session, status } = useSession();
@@ -368,7 +369,10 @@ export default function CanvasBoard() {
368369
}))
369370
}
370371
/>
372+
)}
371373

374+
{!isLoading && matches && (
375+
<EncryptedWidget />
372376
)}
373377

374378
<CollabydrawTextEditorContainer />
40.3 KB
Loading
196 KB
Loading
66.1 KB
Loading
98.1 KB
Loading
Loading
Loading
Loading
Loading
1.15 MB
Loading

‎apps/collabydraw/utils/metadata.ts

Copy file name to clipboard
+116Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
import { Metadata } from "next";
2+
3+
export const baseMetadata: Metadata = {
4+
metadataBase: new URL("https://collabydraw.xyz"),
5+
title: {
6+
default: "Collabydraw | Hand-drawn look & feel • Collaborative • Secure",
7+
template: "%s | Collabydraw",
8+
},
9+
description:
10+
"Collabydraw is a secure, end-to-end encrypted collaborative whiteboard tool that lets you draw and brainstorm together in real time.",
11+
keywords: [
12+
"collaborative drawing",
13+
"online whiteboard",
14+
"real-time canvas",
15+
"digital whiteboard",
16+
"Excalidraw alternative",
17+
"end-to-end encrypted whiteboard",
18+
],
19+
authors: [{ name: "Om Sharma" }],
20+
creator: "Om Sharma",
21+
publisher: "Collabydraw",
22+
23+
openGraph: {
24+
type: "website",
25+
locale: "en_US",
26+
url: "https://collabydraw.xyz",
27+
title: "Collabydraw — Collaborative whiteboarding made easy",
28+
description:
29+
"Excalidraw is a virtual collaborative whiteboard tool that lets you easily sketch diagrams that have a hand-drawn feel to them.",
30+
siteName: "Collabydraw",
31+
images: [
32+
{
33+
url: "/brand/CollabyDraw1.png",
34+
width: 1349,
35+
height: 767,
36+
alt: "Collabydraw - Collaborative Drawing Tool UI",
37+
},
38+
],
39+
},
40+
41+
twitter: {
42+
card: "summary_large_image",
43+
title: "Collabydraw — Collaborative whiteboarding made easy",
44+
description:
45+
"Excalidraw is a virtual collaborative whiteboard tool that lets you easily sketch diagrams that have a hand-drawn feel to them.",
46+
creator: "@1omsharma",
47+
images: ["/brand/CollabyDraw1.png"],
48+
},
49+
50+
robots: {
51+
index: true,
52+
follow: true,
53+
googleBot: {
54+
index: true,
55+
follow: true,
56+
noimageindex: false,
57+
"max-video-preview": -1,
58+
"max-image-preview": "large",
59+
"max-snippet": -1,
60+
},
61+
},
62+
63+
verification: {
64+
google: "your-google-site-verification-code",
65+
},
66+
67+
alternates: {
68+
canonical: "https://collabydraw.xyz",
69+
},
70+
71+
icons: {
72+
icon: [
73+
{ url: "/brand/favicon.png" },
74+
{ url: "/brand/favicon.png", sizes: "180x180", type: "image/png" },
75+
],
76+
apple: [{ url: "/brand/favicon.png" }],
77+
},
78+
79+
other: {
80+
"msapplication-TileColor": "#ffffff",
81+
"theme-color": "#ffffff",
82+
},
83+
};
84+
85+
// Optional: page-specific
86+
export const generateRoomMetadata: Metadata = {
87+
title: "Join Room | Collabydraw",
88+
description:
89+
"Join a secure, end-to-end encrypted drawing room. Collaborate in real-time with others. No login required.",
90+
openGraph: {
91+
...baseMetadata.openGraph,
92+
title: "Join Room | Collabydraw",
93+
description:
94+
"Join a secure, end-to-end encrypted drawing room. Collaborate in real-time with others. No login required.",
95+
},
96+
twitter: {
97+
...baseMetadata.twitter,
98+
title: "Join Room | Collabydraw",
99+
},
100+
};
101+
102+
// Structured Data (JSON-LD)
103+
export const jsonLdSchema = {
104+
"@context": "https://schema.org",
105+
"@type": "WebApplication",
106+
name: "Collabydraw",
107+
url: "https://collabydraw.xyz",
108+
description: "End-to-end encrypted real-time collaborative drawing tool",
109+
applicationCategory: "Productivity",
110+
operatingSystem: "All",
111+
offers: {
112+
"@type": "Offer",
113+
price: "0",
114+
priceCurrency: "USD",
115+
},
116+
};

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.