This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This project uses pnpm as the package manager. Key commands:
pnpm dev- Start development server on port 3333 with Turbopnpm build- Build the production applicationpnpm start- Start production serverpnpm lint- Run ESLint with Next.js configurationpnpm lint:fix- Format code with Prettier and fix linting issuespnpm format- Format code with Prettierpnpm type-check- Run TypeScript type checking without emitting files
This is a Next.js 15 application using the App Router with internationalization support. Key architectural decisions:
- Next.js 15 with App Router for routing and server-side rendering
- TypeScript for type safety
- Tailwind CSS for styling
- next-intl for internationalization (English and Chinese)
- PostHog for analytics with custom proxy configuration
- Zod for form validation and type safety
app/[locale]/- Internationalized pages using dynamic routingmodules/- Feature-specific code (careers, contact, i18n, portfolios)components/- Reusable UI componentslib/- Utility functions and external service integrationsmessages/- Translation files (en.json, zh-CN.json)
- Uses
next-intlwith locale-based routing - Supports English (
en) and Chinese (zh-CN) with English as default - Pages are implemented as MDX files with locale suffixes (e.g.,
page.en.mdx,page.zh-CN.mdx)
- MDX files for page content with dynamic imports based on locale
- Portfolio/work content managed through data sources in
modules/portfolios/ - Contact forms use server actions with form validation
- Responsive design with mobile-first approach
- Dark/light theme support with
next-themes - Analytics tracking with PostHog (proxied to bypass ad blockers)
- Server actions for form handling
- Static generation for performance
- Custom scrollbar styling and smooth scroll behavior
~/maps to the root directory for cleaner imports
- PostHog proxy rewrites for analytics
- Redirects from old
/portfolios/to new/work/paths - MDX support for content pages
- Custom font loading (Inter Variable)
- 50MB body size limit for server actions
- The application uses locale-based routing with
[locale]dynamic segments - Content is primarily in MDX format with dynamic imports based on locale
- Server actions are used for form submissions with Zod validation
- The site has specific redirects for portfolio → work path migration
- Analytics are proxied through the application domain to bypass ad blockers