Client and Challenge
Dymzavod home is a lounge restaurant with the website home.dymzavod.ru. It needed a site where staff manage content themselves, and table reservations go straight into the restaurant's operating system and are tracked in end-to-end analytics. The project is separate from the chain's website dymzavod.ru.
What Was Done
- Block-based pages in Payload CMS: hero, menu with sliders, menu tabs, VIP rooms, a day/night terrace, “bring a friend”, and contacts with opening hours.
- The menu as a separate collection: images or PDF, opened in a modal slider; separate images for desktop and mobile.
- A hookah page /specialmenu with a catalog, price list, and SEO text.
- A full-screen modal reservation form: name, phone, date, time, guests, hall.
- Globals: header, footer, contacts, reservation texts; administrator and editor roles, versioning.
- WebGL lines (ogl) and GSAP animations in blocks.
Architecture and Stack
Monolith: Next.js 16, React 19, TypeScript, Payload CMS 3, PostgreSQL, Tailwind 4. Pages are cached via ISR and revalidated by tags from Payload hooks, so edits in the admin panel appear on the site without a rebuild. Deployment: PM2 and a script (pull, install, migrations, build, reload). Tests: Vitest (26 files), Playwright e2e (4 files). Forms are protected by an origin guard, rate limiting, honeypot, timeouts, and idempotency.
Integrations
- Remarked: reservations are sent via a server-side API call (the CreateReserve method) rather than a widget; the hall and a data-processing consent flag are written to the comment.
- Roistat: a client-side counter with call tracking, loaded after cookie consent; “Reservation” and “Bring a friend” leads are sent from the server together with the visit source.
- Yandex Metrica: Session Replay, click map, and page views on client-side navigation.
- Calltouch: being connected (integration in preparation).
- SEO: sitemap, robots, Open Graph, JSON-LD schema.org/Restaurant generated from CMS data.
Performance
Google PageSpeed Insights, desktop: 92/92/96/100.

My Role
I was responsible for the architecture, CMS, integrations, and launch.
Result
A block-based website that staff edit themselves, with server-side reservations in Remarked and leads in Roistat.




