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 }, + ]; +}