Selected work
What I’ve built.
My three biggest projects, newest first. Each title links to the live site.
Sports.ru
The largest Russian-language sports media platform
News, longreads and blogs over a full statistics layer, at tens of millions of page views a month. I work on the advertising core and two of the five monetization widgets, plus the parts other teams pick up — the E2E standard, the shared analytics utility, and an internal Chrome extension that QA and the analysts use.
The hard partMedia promo formats are paid placements on a fixed date — the Winter Olympics opening, a Champions League final, the World Cup — bought by Kinopoisk, Okko or Match TV, and they ship that morning or not at all. Each was rebuilt from scratch against hardcoded markup, about eight hours a time. For the Olympics opening there was no design, so I made one the night before. Then I fixed the real problem: a new promo plugs into the existing components instead of rewriting them, in any sport. A build now takes an hour.
- Vue
- TypeScript
- Pinia
- GraphQL
- TanStack
- Fastify
- Vite
- Vitest
MosNefteTrans
A fuel logistics operator and oil marketplace
A marketplace and CRM for a company shipping fuel across 89 regions of Russia, with Gazprom, Lukoil and Rosneft among its counterparties. I built the ordering flow, the order tracking and documents module, partner registration, and the internal admin for depots, products and pricing.
The hard partThe client wanted rail delivery added, but the brief described the outcome and not the mechanism — no carrier, no integration, no data model. I offered to own the design: surveyed the available rail APIs, chose ALTA, and worked through its documentation with the backend team and the client until the flow held together. The finished module prices a shipment exactly and draws its route on the map. It cut the time to register a rail order to a fifth, and became an add-on the client sells separately.
- Vue
- TypeScript
- Pinia
- Vite
- Jest
Zvet.ru
One of the largest furniture retailers in Russia
A furniture store selling direct from its own production, at around a million unique customers a year. I built the new authentication system — two-factor, Yandex ID, one-time SMS codes — redesigned the product page, and wrote much of the shared interactive layer: product cards, catalog filters, sliders, banners.
The hard partThe site scored 19 out of 100 on PageSpeed, and the problem had been deferred for years because nobody had made the business case for fixing it. I worked it in the gaps between urgent tickets: read the report line by line and fixed it item by item — lazy loading, bundler internals, font and image compression, dependencies that had stopped earning their weight — reporting each result in terms the client cared about. It finished at 91, with the bundle 27% smaller, and the client began paying for the optimization work as a line of its own.
- Vue
- Nuxt
- JavaScript
- Twig
- Webpack
- Gulp