chore: update feedback #1

This commit is contained in:
Faisal Amir 2025-09-23 13:29:28 +07:00
parent 3c004819ca
commit 2f85f214ea
9 changed files with 50 additions and 20 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 369 KiB

After

Width:  |  Height:  |  Size: 418 KiB

View File

@ -91,12 +91,12 @@ export default function FavoriteModels() {
<p className="text-gray-700 mb-4 max-w-sm text-base -tracking-[0.4px]">
Choose from open models or plug in your favorite online models.
</p>
<Button
{/* <Button
variant="playful-white"
className="!rounded-[12px] border-2 shadow-[0px_2px_0px_0px_rgba(0,0,0,1)] text-base h-[40px]"
>
Explore models
</Button>
</Button> */}
</div>
<div className="flex-1 w-full">
<div className="grid grid-cols-3">
@ -143,12 +143,12 @@ export default function FavoriteModels() {
Connect your email, files, notes and calendar. Jan works where
you work.
</p>
<Button
{/* <Button
variant="playful-white"
className="!rounded-[12px] border-2 shadow-[0px_2px_0px_0px_rgba(0,0,0,1)] text-base h-[40px]"
>
Explore tools
</Button>
</Button> */}
</div>
<div className="flex-1 w-full">
<div className="grid grid-cols-3">
@ -196,12 +196,12 @@ export default function FavoriteModels() {
Your context carries over, so you dont repeat yourself. Jan
remembers your context and preferences.
</p>
<Button
{/* <Button
variant="playful-white"
className="!rounded-[12px] border-2 shadow-[0px_2px_0px_0px_rgba(0,0,0,1)] text-base h-[40px]"
>
Learn more
</Button>
</Button> */}
</div>
<div className="flex-1 w-full flex justify-center mt-10 px-8 md:px-0">
<div className="relative max-w-xs scale-[70%] md:scale-100 origin-center">

View File

@ -19,10 +19,10 @@ import { DropdownButton } from '@/components/ui/dropdown-button'
import { useData } from 'nextra/data'
import { useDiscordWidget } from '@/hooks/useDiscordWidget'
import { formatCompactNumber } from '@/utils/format'
import { formatCompactNumber, totalDownload } from '@/utils/format'
const Home = () => {
const { lastVersion, lastRelease, stars } = useData()
const { lastVersion, lastRelease, stars, release } = useData()
const { data: discordWidget } = useDiscordWidget()
useEffect(() => {
@ -124,7 +124,7 @@ const Home = () => {
</h1>
</div>
<p className="px-4 lg:px-0 mt-2 text-lg lg:text-2xl font-medium leading-relaxed text-white animate-fade-in-up delay-500 -tracking-[0.6px]">
The best of open-source AI in an easy-to-use product.
Jan is the open-source ChatGPT replacement.
</p>
</div>
<div className="flex px-4 flex-col lg:flex-row items-center gap-4 w-full justify-center text-center animate-fade-in-up delay-600 mt-8 lg:mt-10">
@ -244,15 +244,15 @@ const Home = () => {
<div className="container mx-auto relative z-10">
<div className="md:mt-10">
<div className="lg:w-3/5 mx-auto">
<div className="relative text-center md:text-left lg:max-w-[512px]">
<div className="relative text-center md:text-left">
<h1
className="text-4xl lg:text-[50px] font-semibold -tracking-[1.3px] animate-on-scroll leading-tight"
data-delay="200"
>
Open Superintelligence
Towards Open Superintelligence
</h1>
<p
className="-tracking-[0.6px] mt-4 text-xl text-neutral-700 animate-on-scroll"
className="-tracking-[0.6px] mt-4 text-xl text-neutral-700 animate-on-scroll lg:max-w-[512px]"
data-delay="400"
>
Jan takes the best of open source AI and packages it into an
@ -284,6 +284,28 @@ const Home = () => {
</span>
</Button>
</a>
<a
href="https://discord.com/invite/FTk2MvZwJH"
target="_blank"
rel="noopener noreferrer"
>
<Button
variant="playful"
className="bg-[#5765F2] py-2 border-2 hover:bg-[#5765F2] text-white h-18 pl-2 justify-start w-full md:w-60 transition-colors duration-200"
size="xxl"
>
<span className="bg-white text-black flex items-center justify-center w-14 h-14 rounded-lg mr-2">
<FaDiscord className="size-8 text-[#5765F2]" />
</span>
<span className="flex items-start flex-col">
<span className="font-bold text-lg">Discord</span>
<span className="text-sm mt-1">
{formatCompactNumber(discordWidget.presence_count)}{' '}
Online
</span>
</span>
</Button>
</a>
<a
href="https://huggingface.co/janhq"
target="_blank"
@ -570,7 +592,7 @@ const Home = () => {
classNameButton="!shadow-none border-2"
/>
<span className="text-xs font-medium text-center mt-2">
+{formatCompactNumber(stars)} downloads, Free & Open source
+{totalDownload(release)} downloads, Free & Open source
</span>
</div>
</div>

View File

@ -13,7 +13,6 @@ const MENU_ITEMS = [
{ name: 'Changelog', href: '/changelog' },
{ name: 'Blog', href: '/blog' },
{ name: 'Handbook', href: '/handbook' },
{ name: 'API Reference', href: '/api-reference' },
]
const Navbar = ({ noScroll }: { noScroll?: boolean }) => {

View File

@ -1,5 +1,5 @@
---
title: Jan
title: Overview
description: Working towards open superintelligence through community-driven AI
keywords:
[

View File

@ -1,5 +1,5 @@
---
title: Jan Server
title: Overview
description: A comprehensive self-hosted AI server platform that provides OpenAI-compatible APIs, multi-tenant organization management, and AI model inference capabilities.
keywords:
[

View File

@ -1,6 +1,6 @@
---
title: "Jan - Open-source ChatGPT alternative that runs 100% offline"
description: "Jan takes the best of open-source AI and packages it into an easy-to-use product. We exist to build Open Superintelligence that runs on a $1,000 laptop."
title: "Open source ChatGPT alternative that runs offline"
description: "Jan is building Open Superintelligence. Its the open-source ChatGPT alternative that leverages the best of open-source AI."
keywords:
[
Jan,

View File

@ -106,8 +106,15 @@ const config: DocsThemeConfig = {
},
head: function useHead() {
const { title, frontMatter } = useConfig()
const titleTemplate = (frontMatter?.title || title) + ' - ' + 'Jan'
const { asPath } = useRouter()
const titleTemplate =
(asPath.includes('/desktop')
? 'Jan Desktop'
: asPath.includes('/server')
? 'Jan Server'
: 'Jan') +
' - ' +
(frontMatter?.title || title)
return (
<Fragment>
@ -144,7 +151,9 @@ const config: DocsThemeConfig = {
content={
frontMatter?.ogImage
? 'https://jan.ai/' + frontMatter?.ogImage
: 'https://jan.ai/assets/images/general/og-image.png'
: asPath.includes('/docs')
? 'https://jan.ai/assets/images/general/og-image-docs.png'
: 'https://jan.ai/assets/images/general/og-image.png'
}
/>
<meta property="og:image:alt" content="Jan-OGImage" />