From de8b82756252d060e7f2e4c6c7abea64697f399d Mon Sep 17 00:00:00 2001 From: Vectry Date: Tue, 10 Feb 2026 02:21:19 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20SEO=20improvements=20=E2=80=94=20Twitte?= =?UTF-8?q?r=20cards,=20canonical=20URL,=20sitemap,=20robots,=20llms.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds metadataBase, og:image, og:url, Twitter card tags, canonical URL, sitemap.ts, robots.ts with AI crawler directives, and llms.txt. --- apps/web/public/llms.txt | 22 ++++++++++++++++++++++ apps/web/src/app/layout.tsx | 27 +++++++++++++++++++++++++++ apps/web/src/app/robots.ts | 20 ++++++++++++++++++++ apps/web/src/app/sitemap.ts | 8 ++++++++ 4 files changed, 77 insertions(+) create mode 100644 apps/web/public/llms.txt create mode 100644 apps/web/src/app/robots.ts create mode 100644 apps/web/src/app/sitemap.ts diff --git a/apps/web/public/llms.txt b/apps/web/public/llms.txt new file mode 100644 index 0000000..09a4840 --- /dev/null +++ b/apps/web/public/llms.txt @@ -0,0 +1,22 @@ +# CodeBoard + +> CodeBoard is a developer tool that generates interactive onboarding documentation from any GitHub repository. Paste a URL and get architecture diagrams, module breakdowns, and getting started guides in minutes. + +CodeBoard uses AI to analyze codebases and produce structured documentation that helps new developers understand unfamiliar projects quickly. It generates visual architecture diagrams, identifies key modules and their relationships, and creates step-by-step getting started guides. + +## Product + +- [CodeBoard App](https://codeboard.vectry.tech): Paste a GitHub URL to generate documentation +- [Source Code](https://gitea.repi.fun/repi/codeboard): Repository on Gitea + +## Features + +- **Architecture Diagrams**: Auto-generated visual maps of codebase structure and dependencies +- **Module Breakdowns**: Detailed analysis of each major component with purpose and key files +- **Getting Started Guides**: Step-by-step instructions for setting up and running the project +- **Technology Detection**: Identifies frameworks, languages, and tools used in the project + +## Optional + +- [Vectry](https://vectry.tech): Built by Vectry, an engineering-first AI consultancy +- [AgentLens](https://agentlens.vectry.tech): Sister product — open-source agent observability platform diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx index c10f647..5f291b5 100644 --- a/apps/web/src/app/layout.tsx +++ b/apps/web/src/app/layout.tsx @@ -17,11 +17,13 @@ const jetbrainsMono = JetBrains_Mono({ }); export const metadata: Metadata = { + metadataBase: new URL("https://codeboard.vectry.tech"), title: "CodeBoard — Understand any codebase in 5 minutes", description: "Paste a GitHub URL and get interactive onboarding documentation with architecture diagrams, module breakdowns, and getting started guides. Built by Vectry AI consultancy.", keywords: ["code analysis", "documentation", "github", "codebase", "AI", "developer tools"], authors: [{ name: "Vectry" }], + creator: "Vectry", icons: { icon: [ { url: "/favicon.ico", sizes: "any" }, @@ -35,6 +37,31 @@ export const metadata: Metadata = { description: "Paste a GitHub URL and get interactive onboarding documentation with architecture diagrams, module breakdowns, and getting started guides.", type: "website", + url: "https://codeboard.vectry.tech", + siteName: "CodeBoard", + locale: "en_US", + images: [ + { + url: "/og-image.png", + width: 1200, + height: 630, + alt: "CodeBoard — Understand any codebase in 5 minutes", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: "CodeBoard — Understand any codebase in 5 minutes", + description: + "Paste a GitHub URL and get interactive onboarding documentation with architecture diagrams, module breakdowns, and getting started guides.", + images: ["/og-image.png"], + }, + alternates: { + canonical: "https://codeboard.vectry.tech", + }, + robots: { + index: true, + follow: true, }, }; diff --git a/apps/web/src/app/robots.ts b/apps/web/src/app/robots.ts new file mode 100644 index 0000000..2aee29d --- /dev/null +++ b/apps/web/src/app/robots.ts @@ -0,0 +1,20 @@ +import { MetadataRoute } from "next"; + +export default function robots(): MetadataRoute.Robots { + return { + rules: [ + { userAgent: "GPTBot", allow: "/" }, + { userAgent: "ClaudeBot", allow: "/" }, + { userAgent: "PerplexityBot", allow: "/" }, + { userAgent: "CCBot", disallow: "/" }, + { userAgent: "Google-Extended", disallow: "/" }, + { userAgent: "Bytespider", disallow: "/" }, + { + userAgent: "*", + allow: "/", + disallow: ["/api/"], + }, + ], + sitemap: "https://codeboard.vectry.tech/sitemap.xml", + }; +} diff --git a/apps/web/src/app/sitemap.ts b/apps/web/src/app/sitemap.ts new file mode 100644 index 0000000..52cadc7 --- /dev/null +++ b/apps/web/src/app/sitemap.ts @@ -0,0 +1,8 @@ +import { MetadataRoute } from "next"; + +export default function sitemap(): MetadataRoute.Sitemap { + const baseUrl = "https://codeboard.vectry.tech"; + return [ + { url: baseUrl, lastModified: new Date(), changeFrequency: "weekly", priority: 1.0 }, + ]; +}