diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..90ff53b --- /dev/null +++ b/.gitattributes @@ -0,0 +1,10 @@ +# Lockfile +# +# merge=binary tells git to never line-merge this file. A lockfile that git +# stitched together from two sides is not a valid lockfile — it just looks like +# one. On conflict git now stops and keeps our side, so the resolution has to be +# a deliberate `yarn install`, not a silent guess. +# +# linguist-generated collapses it in GitHub diffs, so a 4000-line lockfile churn +# stops burying the actual review. +yarn.lock merge=binary linguist-generated=true diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c59233b..8c2dc45 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: '22' + node-version-file: '.nvmrc' cache: 'yarn' - name: Install dependencies diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..a45fd52 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +24 diff --git a/app/commit-plus/page.tsx b/app/commit-plus/page.tsx new file mode 100644 index 0000000..265f7aa --- /dev/null +++ b/app/commit-plus/page.tsx @@ -0,0 +1,567 @@ +import type { Metadata } from 'next' +import { + ArrowRight, + BookMarked, + GitPullRequest, + MessageCircle, + Trophy, + Users, + Video, + Zap, +} from 'lucide-react' +import { FeatureCard, Typography, buttonVariants } from '@commitpt/design-system' +import Header from '@/src/components/Header' +import Footer from '@/src/components/Footer' +import FAQ from '@/src/components/FAQ' +import { selectFaqs } from '@/src/data/faqs' +import { WHOP_COMMIT_PLUS_URL, WHOP_FREE_DISCORD_URL } from '@/src/lib/links' + +const DESCRIPTION = + 'Workshops e calls ao vivo exclusivas, revisões de código, projetos internos e acesso antecipado à plataforma. A comunidade gratuita no Discord continua gratuita.' + +export const metadata: Metadata = { + title: 'Commit+ O plano premium da CommitPT', + description: DESCRIPTION, + alternates: { + canonical: 'https://www.commitpt.com/commit-plus', + }, + openGraph: { + type: 'website', + url: 'https://www.commitpt.com/commit-plus', + title: 'Commit+ O plano premium da CommitPT', + description: DESCRIPTION, + siteName: 'CommitPT', + images: [{ url: '/commit_3_512w.webp', width: 512, height: 512, alt: 'CommitPT' }], + locale: 'pt_PT', + }, + twitter: { + card: 'summary', + title: 'Commit+ O plano premium da CommitPT', + description: DESCRIPTION, + images: ['/commit_3_512w.webp'], + }, + robots: { + index: true, + follow: true, + googleBot: { index: true, follow: true }, + }, +} + +// ── Page ────────────────────────────────────────────────────────────────────── + +export default function CommitPlusPage() { + return ( +