Projects
Projects
Real case studies: problem → role → stack → outcome.
X5 Tech
Procurement approval module (NKZ 3.0)
Procurement approval at X5: roles, statuses, and long flows in one UI
Problem
The procurement approval module outgrew the legacy frontend: teams needed one interface for roles, statuses, drafts, and long approval flows.
Role
Built the module UI: RBAC matrix, state transitions, validated forms, change history. Owned the migration to Vite, added code splitting, Keycloak SSO, and Orval from OpenAPI.
- Consolidated procurement approval into one predictable interface
- Migration to Vite and code splitting improved long-flow performance
- Orval removed manual type updates when backend contracts changed
POTALONU / PREEGLOS
PREEGLOS — seat map editor
In-house seats.io alternative: venue editor and seat-picker widget
Problem
The ticketing service needed its own seats.io-like venue editor and seat picker widget that could be embedded into event sites without external SaaS.
Role
Canvas hall-layout editor, embeddable seat picker, events and bookings. Storefront, checkout, and Mini App on the same API.
- Organizers create venue layouts and connect seat selection without custom work per venue
- Embeddable seat-picker widget works on the storefront and in Telegram Mini App
- Hall, seat, and purchase data stay inside the product infrastructure
sendonate.com
sendonate.com — donations and OBS overlay
Streamer donations: dashboard, Mini App, and OBS overlay
Problem
Streamers accept tips in Telegram, configure alerts in a dashboard, and show them in OBS — three clients, one sendonate backend.
Role
In monolith/sendonate: React + Vite dashboard, Telegram Mini App, and websocket-pages for OBS. Evolved donation widget designs and streamer-dashboard functionality; Orval from OpenAPI, alert queue, and WebSocket reconnect.
- Three clients share one API — tips are not lost between Mini App, dashboard, and stream
- OBS overlay queues alerts during donation bursts
- Sentry and Orval simplify production error tracking and contract sync
ZodiacLab
ZodiacLab — marketplace and consultations
Services marketplace with catalog, orders, and in-browser video consultations
Problem
The product needed a storefront, account area, chats, and live A/V consultations between users — with tight client–backend alignment.
Role
zodiaclub-front on Next.js 15: catalog, account, chats. WebRTC via Socket.io signaling, Orval, Playwright e2e. Nest.js backend extensions.
- Users complete the journey from catalog to paid consultation in one product
- Video calls run on WebRTC with ICE candidate queueing before connection setup
- OpenAPI contracts stay aligned between client and backend via Orval
SmartPrice
SmartPrice — smart pricing
Web system for price lists, tech cards, and financial model for production
Problem
Production teams need one UI for own prices, tech cards, supplier and competitor prices, financial model and accounting — instead of scattered spreadsheets.
Role
Built the frontend on Next.js 16 and React 19: price lists, tech cards, financial model, accounting, staff. Zustand stores, REST via axios services, OpenAPI client generation (Orval), UI from Figma.
- Core flows (own prices, tech cards, financial model, accounting, staff) run against the API in production-core
- API types and client stay in sync with the backend via OpenAPI and Orval
- Complex tables and price versions match real Figma screens
ZodiacLab
ZodiacLab — Telegram bot for clients and specialists
Telegram hub: role menus, notifications, and AI consultant
Problem
Clients and specialists need quick actions and reminders in Telegram alongside the web cabinet.
Role
In zodiaclub-backend: polling bot, account link to the cabinet, role menus (client / specialist), pushes for consultations, reviews, earnings, and profile views. Button hub with deep links to the site.
- Client and specialist get a reminder one hour before a consultation
- Specialists get digests: reviews, weekly earnings, profile views
- Duplicate pushes are blocked by dedup records in PostgreSQL
ZodiacLab
ZodiacLab — Telegram bot for admins and moderators
Staff moderation and alerts without opening the web admin panel
Problem
Admins and moderators need to react quickly to specialist applications, support tickets, and reviews from Telegram.
Role
Separate Nest.js admin bot: ADMIN/MODERATOR linking, permission-based alerts, in-chat actions (approve / reject / take ticket / reply), action audit log, Open in admin button.
- Staff get role- and permission-based pushes, separate from the user bot
- Applications, tickets, and review moderation can be handled in Telegram
- Every action is written to an audit log
ZodiacLab
ZodiacLab — CRM bot and Mini App
Specialist database, pipeline, and tasks inside Telegram
Problem
The sales team needed a light CRM for specialists: contacts, pipeline stages, tasks, and stats — without a heavy external system.
Role
Self-hosted Express + Grammy + PostgreSQL service: admin/manager/viewer roles, specialist DB import, Telegram bot and Mini App (tasks, stats), cron reminders.
- Specialist database and pipeline are available from the bot and Mini App
- Tasks get morning reminders on an MSK schedule
- Deployed via Docker / Coolify on own infrastructure
NLMK
Cast iron release registration
Production data for blast furnace operations instead of spreadsheets
Problem
Blast furnace operators recorded cast iron releases manually: data was hard to filter by shift, and plant network connectivity was unreliable.
Role
Built a React SPA with TanStack Table for large datasets, React Query caching, and Sentry monitoring. Integrated Keycloak authentication.
- Core shop-floor operations moved into one web interface
- Filtered, sortable tables handle large datasets without UX degradation
- Sentry reduced time to diagnose production issues
SmartFish
SmartFish KKM — tablet POS
React Native (Expo) POS: shifts, sales, payments, and card terminal
Problem
SmartFish retail needed a tablet POS: open a shift, build a cart, take cash and card, and talk to the in-store POS terminal.
Role
Built a React Native and Expo app (Expo Router, NativeWind, Zustand): cashier auth, shifts, catalog, cart, payments (cash / card / QR on terminal), cashier vs admin/manager roles, EAS builds.
- Cashiers run shifts and sales from a tablet in the store
- Card payments go to the POS terminal over LAN with receipt printing
- Role split: cashier on a shift, admin/manager in view mode without opening a shift
SmartFish
SmartFish — management platform
Fish-farm management UI: sites, workshops, warehouses, staff
Problem
The production service has dozens of entities, roles, and API contracts: operators need one predictable interface instead of scattered screens.
Role
Build smartfish-frontend on React + TypeScript: sites, pools, warehouses, workshops, staff, RBAC, Yandex Maps, and analytics. Client and types are generated from OpenAPI (Orval).
- Modular structure keeps production screens in clear boundaries instead of one large SPA
- RBAC, maps, warehouses, and analytics live in one UI for operational roles
- OpenAPI keeps frontend and backend types in sync
Citilink
E-commerce migration to Next.js
Catalog and homepage: Symfony to Next.js without losing SEO
Problem
A major e-commerce site migrated catalog and homepage from legacy PHP/Symfony to Next.js while keeping filters, SSR, and microservice alignment.
Role
Contributed to online store migration: Next.js SSR, filters, sort, URL-state pagination, REST API with backend teams. Code review, Jest.
- Online store catalog on Next.js with SEO preserved
- URL-synced filters for wholesale and retail flows
- REST contracts aligned with backend and microservices
BI.ZONE
Threat Intelligence
Threat intelligence: relationship graphs, reports, and heavy grids
Problem
Security analysts needed entity graphs, filters over large datasets, and configurable dashboards in one product.
Role
Entity analysis page: relationship graph on D3.js, advanced filters, GraphQL reports on Apollo Client. @bizone npm packages, virtualized heavy lists.
- Analysts explore entity relationships in an interactive graph
- Dynamic reports connect to the same data model as core workflows
- Virtualization keeps heavy lists responsive in the browser
POTALONU
potalonu.com — events and tickets
Events storefront and ticket purchase on web and Telegram Mini App
Problem
The ticketing service needed matching purchase flows in the browser and Telegram, plus analytics for organizers.
Role
Built the Next.js 16 storefront: Orval, TanStack Query, React Hook Form + Zod, next-intl, Mini App on `@twa-dev/sdk`, Chart.js analytics.
- Ticket purchase works on web and Mini App with shared logic
- Organizers get basic sales analytics
- Localization covers core user flows
NDA
Marketplace (NDA)
Marketplace from scratch: catalog, checkout, i18n
Problem
An NDA client needed the full user journey from catalog to checkout with localization and observability.
Role
Built the Next.js 14 app: Orval, TailwindCSS, React Hook Form + Zod, next-intl, Storybook, Playwright e2e, and Sentry in production.
- User flow from catalog to checkout lives in one application
- OpenAPI client is generated automatically — fewer integration bugs
- Playwright and Storybook guard UI regressions
In2View
In2View — B2B research platform
Matching respondents and clients for customer development research
Problem
The startup needed an MVP: respondent search, surveys, roles, reports, and a marketing site — from zero to production.
Role
Built the platform on React + Redux Toolkit and REST API, marketing on Gatsby + Contentful, Firebase Auth with 2FA and PWA.
- MVP shipped to production with roles and survey-based matching
- PWA and 2FA met baseline enterprise client requirements
- Marketing site and app evolved in parallel
Rostelecom
Yaga — enterprise task tracker
Business process template module in a Jira-like system
Problem
The enterprise system needed configurable process templates without code changes for each new workflow.
Role
Template module on React + Redux Toolkit, REST via OpenAPI. Task breakdown, code review, memoization on heavy screens.
- Process templates configurable without developer involvement
- OpenAPI contract kept frontend and backend aligned
- Team worked in Scrum with regular code review
SberTech
SberTech — corporate knowledge base
Confluence-like product: micro frontends, UI Kit, and automated tests
Problem
An internal corporate knowledge base needed independent sections, a shared UI Kit, and stable user flows for teams maintaining documentation and work materials.
Role
Built new React features, improved UI Kit components, and integrated application parts into a micro frontend architecture via Module Federation. Wrote automated tests for user flows, including Playwright e2e tests.
- New functionality shipped inside one Confluence-like product without a separate app
- UI Kit kept the interface consistent across knowledge-base sections
- Playwright tests covered key user flows and reduced regression risk
SberTech
OpenSearch Dashboards + Vault
Certificate automation and log visualization
Problem
OpenSearch Dashboards had to integrate with Vault and rotate TLS certificates without manual ops.
Role
Small improvements around Dashboards–Vault integration in Node.js, GitLab CI certificate rotation, and Jest tests in pipeline.
- Certificates rotate via CI without manual steps
- Jest covers critical integration steps
- Visualization module wired into corporate environment
SmartFish
SmartFish — storefront and B2B API
NestJS backend for orders, cart, payments, and admin (akvaprom / B2B)
Problem
Public storefront, B2B cabinet, and Aquaprom share one API — orders, cart, RBAC, and payments in one backend.
Role
Extend smartfish-landing/apps/backend: orders, cart, payments, promocodes, bonus system, admin, RBAC. TypeORM + PostgreSQL, webhooks, websockets.
- B2B and retail hit the same backend via /backend-api
- Admin covers catalog, users, promocodes, and bonus flows
- Contracts feed b2b-sm and landing-smartfish frontends
SmartFish
SmartFish — akvaprom.kg storefront
Next.js online store: catalog, checkout, bonuses, promocodes, SEO
Problem
Marketing site and online shop on one domain (akvaprom.kg): catalog, checkout, profile, bonuses, and promocodes separate from the ERP client.
Role
Storefront on Next.js: homepage with carousels and categories, shop, checkout, profile, bonuses, promocodes, Yandex Metrika, Framer Motion.
- Shoppers go from homepage to checkout without opening the ERP
- Bonuses and promocodes are part of the online-store user flows
- akvaprom.kg storefront reached the first page of Yandex for its target direction
SmartFish
SmartFish — Telegram bots
B2B Telegram reports and retail order alerts
Problem
B2B managers need morning/noon order summaries in Telegram; retail needs instant alerts on new orders.
Role
In smartfish-landing/backend: telegram-reports (daily B2B XLSX reports, reminders), aquaprom-telegram (webhook bot, subscribers), retail order notifications.
- Scheduled B2B report posts to chat with XLSX attachment
- New retail order triggers a Telegram message
- Bot subscribers and commands stored in PostgreSQL
Stratwise
Stratwise.ai — trading strategies
Strategy builder and quote charts
Problem
Traders needed a web UI to compose strategies and view live quotes.
Role
Built screens on React + Vite, Firebase integration, TradingView lightweight-charts and Recharts, REST via axios.
- Users compose and review strategies in one interface
- Quote charts sync with REST data
- Firebase covers auth and basic settings storage
Quan2um
Quan2um — crypto exchange
Trading terminal: order book, orders, Solana wallet
Problem
The exchange needed a fast trading UI with a live quote stream and Solana wallet integration.
Role
Built the UI on Lit, market stream via socket.io, web3.js and wallet adapters, esbuild pipeline.
- Orders and order book update over WebSocket without page reload
- Solana wallet connected to trading flows
- esbuild enables fast UI development iterations
Maximaster / e-commerce
Online store on 1C-Bitrix
Catalog, cart, and filters in commercial e-commerce
Problem
A cosmetics store needed a responsive catalog, filters, and cart within 1C-Bitrix and Symfony.
Role
Extended 1C-Bitrix components and templates: catalog, product pages, filters, cart. HTML5, CSS3/SCSS, jQuery, JavaScript, Webpack, Git. PHP/Symfony backend integration.
- Responsive catalog and product pages across breakpoints
- Filters and cart stable in production
- Commercial team delivery with Git and code review
Maximaster / e-commerce
fitomarket.ru
Phytoproducts store on Bitrix
Problem
Bitrix e-commerce with a large catalog needed stable filters and a fast product page.
Role
Extended catalog, filters, and product cards; optimized frontend for mobile traffic.
- Catalog and filters stable in production
- Product pages adapted for mobile
Energosoft
energosoft.ru
Power metering for energy retail companies
Problem
An electricity accounting service for energy retail companies relied on heavy postback forms; users needed a responsive UI for forms and reports.
Role
Migrated forms and tables to AJAX, extended UI on Symfony + Bitrix.
- Forms and reports work without full page reload
- Users complete common flows faster
Baucenter
Baucenter
Online store on Next.js
Problem
A building supplies store needed catalog and cart on a modern frontend stack.
Role
Built catalog and cart UI on Next.js, responsive layout and backend API integration.
- Catalog and cart work on mobile and desktop
- Changes shipped without storefront downtime
Specdep
specdep.ru
Corporate site on Bitrix
Problem
The corporate site needed frontend maintenance and growth on legacy Bitrix.
Role
Maintained and extended site sections, built new blocks on Bitrix + jQuery.
- New sections shipped on schedule within CMS
- Shared SCSS stack across pages
Energosoft
workshop.energosoft.com
Electricity accounting for energy retail companies
Problem
Energy retail companies needed a web UI for electricity accounting: forms, tables, and reports.
Role
Built the client side of the service: AJAX forms and tables, integration with Symfony/Bitrix backend.
- Client UI stable in production
- Forms synced with backend
FC Zenit
tickets.fc-zenit.ru
Ticket sales and stadium map
Problem
Fans needed to pick a seat on an interactive stadium map and complete checkout.
Role
Stadium map rendering on Canvas, integration with ticket sales backend.
- Interactive seat selection on arena map
- Map synced with seat availability
Commercial project
Aurumline WebView
WebView client for mobile app
Problem
The mobile app needed an embedded web client with WebView constraints.
Role
Adapted React UI for WebView: viewport, navigation, native bridge.
- UI works in iOS and Android WebView
- Navigation aligned with native shell
Commercial project
DuckMaster — Telegram game
Game Mini App: onboarding, combat mechanics, stable releases
Problem
The Telegram game needed new onboarding and attack mechanics without hurting performance on low-end devices.
Role
Moved game logic into Redux-Saga, optimized Vite builds and WebP conversion, covered key flows with Vitest.
- New onboarding and attacks shipped without core-loop regressions
- WebP and chunking reduced asset weight on mobile clients
- Vitest guards game-flow releases
Commercial project
HandStars — Telegram game
Mini App with real-time, TonConnect, and motion
Problem
The game had to run in Telegram WebApp: sockets, TON wallet, animations, and analytics in one client.
Role
Built UI on React + MobX, real-time via socket.io, TonConnect, Orval for REST, Framer Motion and Lottie for motion.
- Playable Mini App with TON payments
- Real-time events don't block UI thanks to a dedicated state layer
- Telegram analytics wired for product decisions
Commercial project
IT career simulator
Pixel-art developer career game in Telegram
Problem
A lightweight game MVP inside Telegram needed persistent progress between sessions.
Role
Built the game on Next.js App Router, Zustand, Radix UI, Supabase SSR for profile and progress, WebApp viewport adaptation.
- Playable MVP inside Telegram without a separate install
- Progress persists in Supabase between sessions
- UI adapted to WebApp constraints