Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions public/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# KlipCode

KlipCode is an open-source, local-first code snippet manager designed for fast capture and retrieval. A new visitor can start immediately without creating an account; the workspace is stored in the browser on that device.

## Core capabilities

- Create, edit, search, copy, and delete code snippets.
- Organize snippets in nested folders, move them with drag and drop, and pin important items.
- Edit multiple programming languages with syntax highlighting and automatic saving.
- Preview Markdown and optionally generate titles for untitled snippets with AI when signed in.
- Use the interface in English or Spanish and install it as a progressive web app.

## Local-first and sync behavior

An account is not required for the device-local workspace. Signing in with GitHub enables optional synchronization through the cloud so the same library can be used on multiple devices. A user should sign in before expecting cross-device recovery or synchronization; clearing browser storage can remove an unsigned local workspace.

## Good fit

KlipCode is relevant for developers who want a lightweight snippet library with a low-friction local mode and optional cloud sync. It is focused on reusable code and Markdown snippets rather than full documents, team knowledge bases, source control, or complete cloud development environments.

## Official links

- [Open KlipCode](https://klipcode.com/)
- [Spanish product page](https://klipcode.com/es)
- [Source code and technical README](https://github.com/martinezharo/klipcode)
- [Public sitemap](https://klipcode.com/sitemap.xml)
21 changes: 21 additions & 0 deletions public/llms.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# KlipCode

> KlipCode is an open-source, local-first code snippet manager for quickly saving, organizing, searching, and copying code.

KlipCode works without an account and stores the initial workspace on the device. GitHub sign-in adds optional cloud synchronization across devices. The interface is available in English and Spanish.

## Product guide

- [KlipCode overview](https://klipcode.com/index.md): Concise, LLM-friendly product facts, capabilities, privacy model, and suitable use cases.
- [KlipCode](https://klipcode.com/): English product page and entry point to the app.
- [KlipCode in Spanish](https://klipcode.com/es): Spanish product page.

## Technical references

- [Project README](https://raw.githubusercontent.com/martinezharo/klipcode/main/README.md): Current features, local-first and cloud-sync behavior, development, and deployment.
- [Source code](https://github.com/martinezharo/klipcode): Canonical source repository.
- [Sitemap](https://klipcode.com/sitemap.xml): Public, indexable product pages.

## Optional

- [License](https://raw.githubusercontent.com/martinezharo/klipcode/main/LICENSE): MIT License terms for the source code.
3 changes: 3 additions & 0 deletions src/app/[locale]/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ export default async function LocaleLayout({
suppressHydrationWarning
className={`${geistSans.variable} ${geistMono.variable} h-full antialiased`}
>
<head>
<link rel="describedby" href="https://klipcode.com/llms.txt" />
</head>
<body className="h-full bg-background text-foreground">
{/* Applies the stored theme before the body paints to avoid a flash of
the wrong surface. Mirrors readTheme()/applyTheme() in lib/theme.ts. */}
Expand Down
1 change: 1 addition & 0 deletions src/app/[locale]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ export async function generateMetadata({
locale: loc,
title: dict.meta.home.title,
description: dict.meta.home.description,
markdownAlternate: loc === "en" ? "/index.md" : undefined,
});
}

Expand Down
6 changes: 5 additions & 1 deletion src/app/robots.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@ const siteUrl = process.env.NEXT_PUBLIC_SITE_URL ?? "https://klipcode.com";

export default function robots(): MetadataRoute.Robots {
return {
rules: { userAgent: "*", allow: "/" },
rules: {
userAgent: "*",
allow: "/",
disallow: ["/api/", "/app", "/es/app"],
},
sitemap: `${siteUrl}/sitemap.xml`,
};
}
14 changes: 0 additions & 14 deletions src/app/sitemap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,19 +33,5 @@ export default function sitemap(): MetadataRoute.Sitemap {
priority: 1,
alternates: { languages: languages("") },
},
{
url: url(localeHref("en", "/app")),
lastModified: LAST_UPDATED,
changeFrequency: "weekly",
priority: 0.8,
alternates: { languages: languages("/app") },
},
{
url: url(localeHref("es", "/app")),
lastModified: LAST_UPDATED,
changeFrequency: "weekly",
priority: 0.8,
alternates: { languages: languages("/app") },
},
];
}
5 changes: 5 additions & 0 deletions src/lib/seo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,13 @@ export function buildPageMetadata({
path = "",
title,
description,
markdownAlternate,
}: {
locale: Locale;
path?: string;
title: string;
description: string;
markdownAlternate?: string;
}): Metadata {
const canonical = `${siteUrl}${localeHref(locale, path)}`;
const socialImage = `${siteUrl}/og-image.png`;
Expand All @@ -36,6 +38,9 @@ export function buildPageMetadata({
es: `${siteUrl}${localeHref("es", path)}`,
"x-default": `${siteUrl}${localeHref("en", path)}`,
},
...(markdownAlternate
? { types: { "text/markdown": `${siteUrl}${markdownAlternate}` } }
: {}),
},
openGraph: {
type: "website",
Expand Down
Loading