Overview
BEKAS LOGISTICS is a customs brokerage and freight forwarding company from Kyiv. It has worked since 1998 and handles more than 1,200 customs operations and 9.9 million kilograms of cargo a year, plus 150+ cars imported from the USA every month. We built their first website in 2018 on WordPress. In 2026 we rebuilt it from scratch on Next.js 16, Payload CMS and PostgreSQL. The idea behind the new site is simple: a broker with experience since 1998 that works like a 2026 tech company.
Challenge
The old site had become a problem. It ran on a 2015-era template with stock photos, the footer copyright was stuck at "1998–2021", and the content had not changed in five years. Competitors in the Ukrainian customs market sit on the same templates, so we set the bar by global forwarders like Flexport, Maersk and DSV. The audience is B2B importers and car dealers who spend their day in dashboards, so a proper dark theme was a core requirement. The site needed seven service directions in two languages, and the client had to keep full control over every line of text.
Solution
The site runs on Next.js 16 with the App Router. Every page is a React Server Component, so all text, phone numbers and figures (9,900,000 kg of cargo, 1,200 customs operations) are in the HTML before any JavaScript runs. Content lives in Payload CMS on PostgreSQL. The client edits every string, price and FAQ entry in both languages without a developer.
Each of the 15 routes generates its own Open Graph image with Next.js ImageResponse. That gives 30 unique 1200×630 cards across two languages, built from live CMS data instead of drawn by hand. A link to any service page shows a correct preview in Telegram, Viber, LinkedIn and Messenger.
SEO is part of the framework setup. There is hreflang for uk and en with x-default and a generated sitemap. JSON-LD puts LocalBusiness on the home page and Service with BreadcrumbList on every service page. The design system is one tokens file in code. This is what lets the three themes (light, system and dark) apply before the first paint, with no flash of wrong colors. Motion is one scene per page, and every scene falls back to a plain fade when the user prefers reduced motion.
Key Features
- PageSpeed 99 on mobile and 100 on desktop, measured on the live site: LCP 1.8 s and 0.5 s, CLS 0.018 and 0.004, TBT 50 ms and 0 ms.
- 30 Open Graph images are generated from CMS content, one for every route in every language, with no manual design step.
- All page text, contacts and figures are in the server-rendered HTML, so search engines and AI crawlers read the page without running JavaScript.
- Every template carries structured data: LocalBusiness, Service, BreadcrumbList and FAQ.
- Seven service pages share one template in Payload CMS, and every field is bilingual and editable by the client.
- The site scores 100 on Best Practices and SEO and 97 on accessibility, with HSTS, granular cookie consent and WCAG 2.2 contrast checked in both themes.
Result
Fifteen bilingual routes shipped in one week. On the live site Google PageSpeed returns 100 in all four categories on desktop. On mobile it returns 99 for performance, 97 for accessibility, 100 for best practices and 100 for SEO (measured 10 August 2026). Every Core Web Vital sits inside the "good" range with room to spare. All fifteen routes are in the sitemap with uk and en hreflang, and each has its own preview card. The BEKAS team edits all of them in Payload CMS without touching code. The before and after slider above shows the visual change.


