Files
2026-07-13 13:32:05 +08:00

99 lines
3.9 KiB
TypeScript

export const appName = 'DeepEval';
/**
* Canonical public origin for the site. Single source of truth for
* every absolute URL we emit (sitemap, robots, JSON-LD, `metadataBase`,
* OG/image URLs, etc.) so a domain change only needs one edit.
*/
export const siteUrl = 'https://deepeval.com';
/**
* Site title used as the default `<title>` on routes that don't set
* their own, and as the suffix in the root layout's title template
* (`%s | {siteTitle}`). Kept verbatim from the old Docusaurus
* `config.title` for SERP continuity.
*/
export const siteTitle =
'DeepEval - The LLM Evaluation Framework';
/**
* Short meta-description used on the homepage and as the fallback for
* pages without a frontmatter `description:` and no extractable body
* paragraph.
*/
export const siteDescription =
'DeepEval is the open-source LLM evaluation framework for testing and benchmarking LLM applications.';
export const docsRoute = '/docs';
export const docsImageRoute = '/og/docs';
export const blogImageRoute = '/og/blog';
/**
* Raw-markdown API route prefix for any section. We host a Next.js
* route handler at `/llms.mdx/<section>/<slug>/content.md` for every
* section that wants the "Copy as Markdown" button.
*
* Pass either a section name (`"docs"`) or a source's `baseUrl`
* (`"/guides"`) — both work.
*/
export function contentRouteFor(sectionOrBaseUrl: string) {
const section = sectionOrBaseUrl.replace(/^\/+/, '').split('/')[0];
return `/llms.mdx/${section}`;
}
/** Back-compat alias. */
export const docsContentRoute = contentRouteFor('docs');
export const gitConfig = {
user: 'confident-ai',
repo: 'deepeval',
branch: 'main',
};
/** Community Discord invite — used by the `<DiscordButton>` CTA and
* referenced from the Kapa disclaimer copy. Single source of truth so
* rotating the invite is a one-line change. */
export const discordUrl = 'https://discord.gg/a3K9c8GRGt';
/** Community subreddit — used by the `<RedditButton>` CTA. */
export const redditUrl = 'https://www.reddit.com/r/deepeval/';
/**
* Kapa.ai Ask-AI config. Values mirror what the old Docusaurus site
* shipped (`old_deepeval_docs/docusaurus.config.ts`) but re-mapped to
* the *current* Kapa widget API — several attribute names were
* renamed in the 2024 refresh (see
* https://docs.kapa.ai/integrations/website-widget/configuration/behavior
* and `.../component-styles`). `websiteId` is the public Kapa project
* identifier; safe to ship in client bundles.
*
* The widget is loaded with `data-launcher-button-hidden="true"` in
* `app/layout.tsx` so Kapa's default floating launcher never renders;
* every click on an element with class `triggerClass` opens the modal
* via `data-modal-override-open-class`. `<AskAIButton>` applies that
* class, so any button rendered through it doubles as a Kapa trigger
* with no JS handler of our own.
*/
export const kapaConfig = {
websiteId: 'a3177869-c654-4b86-9c92-e4b4416f66e0',
projectName: 'DeepEval',
// Required by Kapa. Used as the modal accent / brand color.
projectColor: '#ffffff',
projectLogo:
'https://pbs.twimg.com/profile_images/1888060560161574912/qbw1-_2g_400x400.png',
modalTitle: 'Ask DeepEval',
chatDisclaimer:
"All the following results are AI generated, if you can't find the solution you're looking for, ping us in [Discord](https://discord.gg/a3K9c8GRGt) we'd be happy to have you!",
exampleQuestions:
'Can I create a dataset using my knowledge base?, Can I create a custom metrics for my use-case?',
uncertainAnswerCallout:
"It would be better to ask this question directly in DeepEval's [Discord](https://discord.gg/a3K9c8GRGt) channel.",
/**
* Any element that carries this class opens the Kapa modal on click.
* Stored as a bare class name (no leading dot) because Kapa's
* `data-modal-override-open-class` expects the class name, not a
* CSS selector.
*/
triggerClass: 'ask-ai-trigger',
} as const;