B2B services
An IT integrator's corporate site on Next.js
A bilingual, fully statically generated site: 64 pages, server rendering, self-hosted Cyrillic fonts, and a lead form delivering into Telegram and the CRM.
- Client
- In-house product
- Year
- 2026
64
Statically generated pages
19 ms
TTFB in production
0
Accessibility violations under axe-core
44 checks passing
0
External font requests
Challenge
We needed a fast bilingual site that indexes in both Yandex and Google, holds strong Core Web Vitals, and does not drift visually from the company's other products.
There was an extra constraint — the host: one virtual CPU and one gigabyte of RAM. A Next.js build does not fit in that memory, so the usual "push the source and build on the server" workflow simply does not apply.
Solution
The site runs on Next.js with the App Router: all 64 pages are generated ahead of time, so the server returns finished HTML with no per-request work. RU/EN localisation is handled by router rules rather than middleware, which removes JavaScript from every request — noticeable on a single core.
Fonts are self-hosted through next/font with the Cyrillic subset included; there are no requests to external font services at all. Animations, the carousel and the accordion are built on CSS and native elements instead of libraries, saving roughly 200 KB of JavaScript.
The build runs on a developer machine and a 14 MB artefact is shipped to the server, where activation is a symlink switch. Rolling back to the previous release is one command. TLS certificates are issued and renewed automatically, with no certbot and no cron job.
We show this case when explaining why site speed is not a final tuning pass but a consequence of decisions made at the start: where the fonts live, what renders on the server, and how much code reaches the browser at all.
Stack
- Next.js
- React
- TypeScript
- Tailwind CSS
- Caddy
- systemd
- Let's Encrypt
DEKART — DIGITAL
Tell us about the task
We reply within 15 minutes during business hours. The first consultation and estimate are free.