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]"> <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. Choose from open models or plug in your favorite online models.
</p> </p>
<Button {/* <Button
variant="playful-white" variant="playful-white"
className="!rounded-[12px] border-2 shadow-[0px_2px_0px_0px_rgba(0,0,0,1)] text-base h-[40px]" className="!rounded-[12px] border-2 shadow-[0px_2px_0px_0px_rgba(0,0,0,1)] text-base h-[40px]"
> >
Explore models Explore models
</Button> </Button> */}
</div> </div>
<div className="flex-1 w-full"> <div className="flex-1 w-full">
<div className="grid grid-cols-3"> <div className="grid grid-cols-3">
@ -143,12 +143,12 @@ export default function FavoriteModels() {
Connect your email, files, notes and calendar. Jan works where Connect your email, files, notes and calendar. Jan works where
you work. you work.
</p> </p>
<Button {/* <Button
variant="playful-white" variant="playful-white"
className="!rounded-[12px] border-2 shadow-[0px_2px_0px_0px_rgba(0,0,0,1)] text-base h-[40px]" className="!rounded-[12px] border-2 shadow-[0px_2px_0px_0px_rgba(0,0,0,1)] text-base h-[40px]"
> >
Explore tools Explore tools
</Button> </Button> */}
</div> </div>
<div className="flex-1 w-full"> <div className="flex-1 w-full">
<div className="grid grid-cols-3"> <div className="grid grid-cols-3">
@ -196,12 +196,12 @@ export default function FavoriteModels() {
Your context carries over, so you dont repeat yourself. Jan Your context carries over, so you dont repeat yourself. Jan
remembers your context and preferences. remembers your context and preferences.
</p> </p>
<Button {/* <Button
variant="playful-white" variant="playful-white"
className="!rounded-[12px] border-2 shadow-[0px_2px_0px_0px_rgba(0,0,0,1)] text-base h-[40px]" className="!rounded-[12px] border-2 shadow-[0px_2px_0px_0px_rgba(0,0,0,1)] text-base h-[40px]"
> >
Learn more Learn more
</Button> </Button> */}
</div> </div>
<div className="flex-1 w-full flex justify-center mt-10 px-8 md:px-0"> <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"> <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 { useData } from 'nextra/data'
import { useDiscordWidget } from '@/hooks/useDiscordWidget' import { useDiscordWidget } from '@/hooks/useDiscordWidget'
import { formatCompactNumber } from '@/utils/format' import { formatCompactNumber, totalDownload } from '@/utils/format'
const Home = () => { const Home = () => {
const { lastVersion, lastRelease, stars } = useData() const { lastVersion, lastRelease, stars, release } = useData()
const { data: discordWidget } = useDiscordWidget() const { data: discordWidget } = useDiscordWidget()
useEffect(() => { useEffect(() => {
@ -124,7 +124,7 @@ const Home = () => {
</h1> </h1>
</div> </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]"> <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> </p>
</div> </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"> <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="container mx-auto relative z-10">
<div className="md:mt-10"> <div className="md:mt-10">
<div className="lg:w-3/5 mx-auto"> <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 <h1
className="text-4xl lg:text-[50px] font-semibold -tracking-[1.3px] animate-on-scroll leading-tight" className="text-4xl lg:text-[50px] font-semibold -tracking-[1.3px] animate-on-scroll leading-tight"
data-delay="200" data-delay="200"
> >
Open Superintelligence Towards Open Superintelligence
</h1> </h1>
<p <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" data-delay="400"
> >
Jan takes the best of open source AI and packages it into an Jan takes the best of open source AI and packages it into an
@ -284,6 +284,28 @@ const Home = () => {
</span> </span>
</Button> </Button>
</a> </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 <a
href="https://huggingface.co/janhq" href="https://huggingface.co/janhq"
target="_blank" target="_blank"
@ -570,7 +592,7 @@ const Home = () => {
classNameButton="!shadow-none border-2" classNameButton="!shadow-none border-2"
/> />
<span className="text-xs font-medium text-center mt-2"> <span className="text-xs font-medium text-center mt-2">
+{formatCompactNumber(stars)} downloads, Free & Open source +{totalDownload(release)} downloads, Free & Open source
</span> </span>
</div> </div>
</div> </div>

View File

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

View File

@ -1,5 +1,5 @@
--- ---
title: Jan title: Overview
description: Working towards open superintelligence through community-driven AI description: Working towards open superintelligence through community-driven AI
keywords: 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. description: A comprehensive self-hosted AI server platform that provides OpenAI-compatible APIs, multi-tenant organization management, and AI model inference capabilities.
keywords: keywords:
[ [

View File

@ -1,6 +1,6 @@
--- ---
title: "Jan - Open-source ChatGPT alternative that runs 100% offline" title: "Open source ChatGPT alternative that runs 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." description: "Jan is building Open Superintelligence. Its the open-source ChatGPT alternative that leverages the best of open-source AI."
keywords: keywords:
[ [
Jan, Jan,

View File

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