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
10 changes: 5 additions & 5 deletions app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@ export default function Page() {
<div className={'card-title'}>
AI model selection
<div className={'card-desc'}>
Run Mistral 7B and Llama 3 on your machine. Choose from{' '}
<span className={'whitespace-nowrap'}>GPT 4-o</span> and Claude 3 Sonnet.
Run local AI models on your machine. Choose from{' '}
<span className={'whitespace-nowrap'}>GPT 5, </span><span className={'whitespace-nowrap'}>Gemini 2.5, </span>and <span className={'whitespace-nowrap'}>Claude 3.7</span>.
</div>
</div>
</div>
Expand Down Expand Up @@ -157,21 +157,21 @@ export default function Page() {
<div className={'community-numbers'}>
<div className={'community-number'}>
<div className={'flex gap-2'}>
<div className={'number'}>6K</div>
<div className={'number'}>10K</div>
<div className={'plus'} />
</div>
<div className={'label'}>Community members</div>
</div>
<div className={'community-number'}>
<div className={'flex gap-2'}>
<div className={'number'}>190</div>
<div className={'number'}>215</div>
<div className={'plus'} />
</div>
<div className={'label'}>Countries represented</div>
</div>
<div className={'community-number'}>
<div className={'flex gap-2'}>
<div className={'number'}>330</div>
<div className={'number'}>400</div>
<div className={'plus'} />
</div>
<div className={'label'}>Contributors</div>
Expand Down
2 changes: 1 addition & 1 deletion app/pricing/components/billing-switch.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export function BillingCycleSwitch({ billingCycle, onBillingChange, show }: Bill
className='flex items-center justify-center rounded-md bg-[rgba(200,154,250,0.20)] px-1.5 py-1 sm:px-2 sm:py-1 md:px-2 md:py-1 lg:px-2 lg:py-1 xl:px-2 xl:py-1'
>
<span className='whitespace-nowrap font-inter text-xs font-medium leading-[150%] text-[#8427E0] sm:text-xs md:text-xs lg:text-xs xl:text-xs'>
Save 20%
Save 25%
</span>
</motion.div>
)}
Expand Down
6 changes: 1 addition & 5 deletions app/pricing/components/contact-dialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,7 @@ interface ContactDialogProps {
onOpenChange: (open: boolean) => void;
}

const cloudInquiryTypes = [
'Pricing Questions',
'Volume Discount',
'General Support'
];
const cloudInquiryTypes = ['Pricing Questions', 'General Support'];

const selfHostedInquiryTypes = [
'Pricing Questions',
Expand Down
6 changes: 3 additions & 3 deletions app/pricing/components/qa-section.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ const cloudFAQs = [
id: 'cloud-2',
question: 'How do I cancel my paid plan?',
answer:
"Your AppFlowy subscription, annual or monthly, will automatically renew until you cancel it. You can cancel your subscription by going to Settings in the left-hand sidebar on a desktop computer, then selecting Billing, then Change plan, then click Downgrade under the Free plan column. After you cancel, you'll lose access to all the paid features immediately.",
'Your AppFlowy subscription, annual or monthly, will automatically renew until you cancel it. You can cancel your subscription by going to Settings in the left-hand sidebar on a desktop computer, then selecting Billing, then Change plan, then click Downgrade under the Free plan column. After cancellation, your workspace will immediately move to the Free plan, and any usage above the free limits may be restricted.',
},
{
id: 'cloud-3',
question: 'How does adding and removing members work?',
answer:
"If you added members, your account will be charged a prorated amount based on the percentage of the billing cycle left when a user was added. If you removed members, you will not receive credit but instead will still have use of that seat for a different user for the remainder of the billing period.\n\nNote: After cancellation, you'll immediately lose access to all Pro features.",
'If you added members, your account will be charged a prorated amount based on the percentage of the billing cycle left when a user was added. If you removed members, you will not receive credit but instead will still have use of that seat for a different user for the remainder of the billing period.\n\nNote: After cancellation, your workspace will immediately move to the Free plan, and any usage above the free limits may be restricted.',
},
{
id: 'cloud-4',
Expand Down Expand Up @@ -83,7 +83,7 @@ const selfHostedFAQs = [
id: 'self-7',
question: 'Do your plans come with customer support?',
answer:
'We provide dedicated support for Team and Enterprise customers. You can access priority support information in the Super Admin panel under the Manage plan tab.',
'We provide dedicated support for Team and Enterprise customers. You can access priority support information in the Super Admin panel under the Upgrade Plan tab.',
},
{
id: 'self-8',
Expand Down
2 changes: 1 addition & 1 deletion app/pricing/config/comparison-data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ export const comparisonFeatureGroups: ComparisonFeatureGroup[] = [
free: 'Coming soon',
seed: 'Up to 3',
one: 'Up to 10',
team: 'Up to 100',
team: 'Up to 1000',
enterprise: 'Unlimited'
}
},
Expand Down
2 changes: 1 addition & 1 deletion app/pricing/config/pricing-plans.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ export const pricingPlans: PricingPlan[] = [
features: [
'Everything in Free, and',
'Unlimited storage',
'Up to 10 workspace members',
'Up to 50 workspace members',
'Up to 100 guest editors',
'Unlimited AI responses',
'50 AI images per month',
Expand Down
3 changes: 2 additions & 1 deletion app/pricing/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ import OpenGraphImage from '../../public/images/og-image.png';

const site_url = process.env.NEXT_PUBLIC_SITE_BASE_URL!;
const title = 'AppFlowy Pricing - Cloud & Self-hosted Plans';
const description = 'Choose the perfect AppFlowy plan for your team. Free forever plan, Pro cloud plan ($10/user/month), or self-hosted options from $1/month. AI-powered collaborative workspace with unlimited storage and advanced features.';
const description =
'Choose the perfect AppFlowy plan for your team.\nOpen source, true offline support, self-hosted, snappy performance, easy to use, and cross-platform.';

export async function generateMetadata(): Promise<Metadata> {
return {
Expand Down
28 changes: 22 additions & 6 deletions components/about/scroll-logos.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
'use client';
import React, { useEffect, useMemo, useRef } from 'react';
import { aboutPageConfig } from '@/lib/config/pages';
import { useDarkContext } from '@/lib/hooks/use-dark-context';

function ScrollLogos() {
const isDark = useDarkContext();
const scrollRef = useRef<HTMLDivElement | null>(null);

useEffect(() => {
Expand Down Expand Up @@ -47,16 +45,34 @@ function ScrollLogos() {
<div className={'developers-title'}>{aboutPageConfig.developers.title}</div>

<div ref={scrollRef} className={'developers-logos'}>
<div className={'logo-wrapper'}>
<div className={'logo-wrapper gap-4'}>
{logos.map((item, index) => (
<div
key={index}
style={{
color: '#1E0C32',
display: 'flex',
width: '220px',
height: '100px',
padding: '30px 20px',
flexDirection: 'column',
justifyContent: 'center',
alignItems: 'center',
gap: '10px',
borderRadius: '79px',
background: 'rgba(245, 245, 250, 0.45)',
color: 'var(--color-text)',
}}
className={'logo'}
className={'logo opacity-100'}
>
<img src={isDark ? item.darkLogo : item.logo} alt={item.name} />
<img
className='opacity-60'
style={{
filter:
'brightness(0) saturate(100%) invert(7%) sepia(32%) saturate(2387%) hue-rotate(264deg) brightness(96%) contrast(104%)',
}}
src={item.logo}
alt={item.name}
/>
</div>
))}
</div>
Expand Down
2 changes: 1 addition & 1 deletion components/product/mobile-views.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ function MobileViews() {
},
{
value: 'ai_chat',
label: 'Chat with AI & GPT-4',
label: 'Chat with AI & GPT-5',
icon: <ChatTeardrop />,
desc: 'Just ask AI. Get the answers you need\nwithout interrupting a colleague.',
},
Expand Down
6 changes: 3 additions & 3 deletions lib/config/pages.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -143,23 +143,23 @@ export const aboutPageConfig = {
),
communityData: [
{
value: 330,
value: 400,
label: 'GitHub Contributors',
link: {
text: 'Get started',
href: 'https://docs.appflowy.io/docs/documentation/software-contributions/contributing-to-appflowy\n',
},
},
{
value: 6000,
value: 10000,
label: 'Community members',
link: {
text: 'Join Discord',
href: 'https://discord.gg/9Q2xaN37tV',
},
},
{
value: 50000,
value: 150000,
label: 'Newsletter subscribers',
link: {
text: 'Subscribe',
Expand Down
Loading