The marketing website for Across Protocol — the fastest and lowest-cost cross-chain bridge.
- Next.js 15 (App Router)
- React 18
- Tailwind CSS
- Contentful (Headless CMS for blog)
- Vercel (Deployment)
- Amplitude (Analytics)
- Node.js (see
.nvmrc— lts/hydrogen) - Yarn
yarn
cp .env.example .envFill in the required environment variables in .env:
CONTENTFUL_SPACE_ID— Contentful space identifierCONTENTFUL_ACCESS_TOKEN— Contentful API tokenCONTENTFUL_REVALIDATE_SECRET— ISR revalidation webhook secret
yarn devOpen http://localhost:3000.
yarn buildyarn lint
yarn formatsrc/app/
├── (routes)/ # Next.js App Router pages
│ ├── page.tsx # Homepage
│ ├── across-bridge/ # Bridge product page
│ ├── across-plus/ # Plus product page
│ ├── across-settlement/ # Settlement layer page
│ ├── blog/ # Blog (Contentful CMS)
│ └── ...
├── api/ # API routes (ISR revalidation)
├── _components/ # Shared React components
├── _lib/ # Utilities (Contentful client, analytics)
├── _hooks/ # Custom React hooks
├── _constants/ # Configuration constants
└── _assets/ # Static images and logos
Blog content is managed in Contentful. Changes published in Contentful trigger ISR revalidation via the /api/revalidate webhook endpoint.
Event tracking uses Amplitude. To refresh tracking data:
yarn ampli:pullProprietary