Skip to content

ANATOLII BELDIY · PRODUCT ENGINEER

Powerful inside. Effortless outside.

Websites, CRMs and AI automation. I design, build and launch digital products that feel natural to use every day.

From the first screen to the entire system.

11
projects in portfolio
6
systems in production
↓

SELECTED CASE STUDIES

Different challenges. The same care for detail.

From a new website to a business operating system. Six projects that show how I work.

01 / 06 From scratch

UkrFenix

A move from Wix to a custom platform with an admin panel, Telegram leads and SEO from day one.

Live 2026
ukrfenix.com
ukrfenix.com home page
Mobile home page
162
URLs in sitemap
695
photos migrated from Wix
5 min
to add a litter in the admin
Explore the thinking & details
3
interface languages

Challenge

The Wix site was slow, gave no control over SEO or structure, photos got lost with every edit, and the owner added each new litter by hand in the builder.

Solution

Designed and built the site on Astro SSR with file-based content, a custom admin panel and automatic photo processing. Migrated 695 photos and every old URL with 301 redirects, wired leads and analytics into Telegram.

What was built

  • 20+ routes: cats, litters, kitten cards, graduates, blog, pregnancy calculator, weight table
  • Admin panel: a new litter in 5 minutes without a deploy, drag-and-drop photos with cover selection
  • A lead from any kitten card lands in Telegram with a link to that kitten
  • Built-in analytics without third-party trackers and a daily Telegram report
  • Three languages with hreflang, Schema.org LocalBusiness and FAQ, a 162-URL sitemap
  • Docker + Caddy on the client VPS, WebP generated automatically

Client

UkrFenix, Maine Coon cattery, Kyiv

Role

Full cycle: audit, design, development, migration, deployment

  • Astro 5
  • TypeScript
  • Node.js
  • Sharp
  • Docker
  • Caddy
  • Telegram Bot API

02 / 06 Redesign

Lcom

A provider website redesigned to e-commerce level, a tariff builder and a new subscriber cabinet without a single line of PHP.

Live 2026
lcom.net.ua
New Lcom home page in production
Home page on a phone
95
pages on the new platform
50
old pages migrated without losing URLs
87
URLs in the new sitemap
Explore the thinking & details
1
cabinet screen instead of eight pages

Challenge

50 outdated pages on a legacy CMS, empty hardware pages, no catalog or cart. The subscriber cabinet ran on the stock Ubilling skin: a separate page for every action, unreadable on a phone.

Solution

Built a new static platform with its own build pipeline, kept every URL for SEO, added a catalog, cart, comparison and search with suggestions. Reskinned the Ubilling cabinet into a one-screen dashboard without touching the backend: the skin can be reverted with one switch.

What was built

  • 50 pages migrated 1:1 with the same URLs, 5 empty product pages got real content
  • Catalog: 50 products in 6 categories, product cards, cart, comparison, bonuses, bundles
  • Mega menu, search with suggestions, a business page with B2B tariffs
  • A tariff builder on the home page and a tariff switcher on 6 pages: the price updates instantly
  • Supplier sync: prices, stock and photos for 31 SKUs are pulled automatically
  • Second home page iteration: mobile page height cut almost in half (16,477 → 8,833 px)
  • Cabinet: balance, tariff, payments, traffic, tickets and freeze on a single screen
  • JSON-LD for products and organization, OG, an 87-URL sitemap, self-hosted fonts
  • Deployed to the client Apache via .htaccess: 301s, gzip, caching, 404; form leads go to Telegram and email

Client

Lcom, internet provider and hardware store, Kyiv

Role

Audit, design, development, e-commerce, billing integration

  • HTML / CSS
  • Vanilla JS
  • Node.js build
  • JSON-LD
  • Ubilling
  • Apache
  • Python deploy
Old Lcom site
New Lcom site
Before After
Subscriber cabinet before redesign
Subscriber cabinet after redesign
Before After

04 / 06 Own products

PropOS

An operating system for a real estate agency: CRM, a broker AI assistant and a Telegram Mini App for clients. A white-label product I sell to agencies.

Live 2026
crm.…/presentation
Listing presentation page
Mini App: listings
39
n8n workflows in production
648
active listings in the database
545
listings migrated from the old CRM
Explore the thinking & details
25
API endpoints for the AI layer
8
data access roles

Challenge

The agency ran on a rented CRM with no control over its database: owner phone numbers sat in plain view, listing presentations were made by hand, publishing to marketplaces took hours, and a departing broker could take clients with them.

Solution

Built the platform on Krayin CRM and n8n: 39 workflows, an AI assistant that creates a listing from a voice message, encrypted owner phones with reveal limits, automatic branded presentations and a client Mini App with a map and filters. Data from the previous CRM was migrated in full.

What was built

  • Migration of 545 listings and 402 contacts from the old CRM with data cleanup
  • Broker AI assistant in Telegram: listing from voice, message drafts, funnel hints
  • 8 access roles, masked and encrypted owner phones, rate-limited reveal
  • A branded presentation page for every listing, watermarked photos
  • Client Mini App: list, map, cascading filters, listing card, dark theme
  • Lead kanban, commission and tax calculator, lead reactivation, bulk actions on the board
  • Publishing to OLX from each broker’s own account, listing import by link from OLX, rieltor and DOM.RIA
  • DOM.RIA market analytics: median price per m² versus competitors, weekly snapshot, duplicate filter (212 → 58 listings)
  • Valmont → Empire Group rebrand with zero downtime: new bots, profiles and avatars, a QR guide for marketing

Client

Own product · first client Empire Group (formerly Valmont), real estate agency, Kyiv

Role

Product, architecture, CRM, n8n, Mini App, data migration

  • Krayin CRM
  • Laravel
  • MySQL
  • Redis
  • n8n
  • Google Gemini
  • Groq
  • Telegram Mini App
  • Docker
  • Caddy
Old rented CRM
New CRM: lead kanban
Before After

05 / 06 From scratch

ЇЖНО

From PDF menus and a brand book to a website with online ordering, a buffet builder and a menu admin panel.

Live 2026
yizhno.menu
yizhno.menu home page
Mobile home page
1.5 s
mobile LCP for real users
51
items in the buffet builder
107
admin checks (44 server + 63 browser)
Explore the thinking & details
3
business lines on one site

Challenge

There was no website: only a brand book, PDF menus for lunches and buffets and phone photos. Three business lines (lunches, catering, venue rental) took orders by phone, and the lunch menu changes every week.

Solution

Astro + Tailwind from scratch following the brand book: a page per business line, a 51-item buffet builder, orders through a server API to Telegram and email. Then I added an admin panel where the owner assembles the weekly menu herself, and tuned mobile performance.

What was built

  • Pages: lunch delivery, catering, rental of 4 venues with galleries
  • Buffet builder: 51 items in 5 categories, search, portion counters, "split across guests"
  • Orders to Telegram for two recipients plus an HTML email: honeypot, rate limit, server-side validation
  • Menu admin: 10 lunch slots, a set library, drag-and-drop, ready menus in one click, 30-version history
  • Admin security: signed login, brute-force protection, 409 conflicts when editing from two devices
  • SEO and speed: Schema.org Menu and opening hours, WebP in 3 sizes, pages 2–4× lighter, GA4

Client

ЇЖНО, lunch delivery, catering and venue rental, Kyiv

Role

Design, development, admin panel, SEO, deployment and support

  • Astro
  • Tailwind CSS
  • TypeScript
  • Node.js
  • SortableJS
  • Nodemailer
  • Telegram Bot API
  • Nginx
  • GA4

06 / 06 Redesign

Spacefy AI

An audit, a design system and a six-page prototype of a new website for an AI planogram platform.

Prototype 2026
spacefyai.com
New Spacefy AI home page
Mobile home
6
pages in the working prototype
28
components in the design system
3
interface languages
Explore the thinking & details
10
UX audit points addressed

Challenge

The current site did not show the product: a stock photo instead of platform screens, four competing calls to action, no social proof, contrast and hierarchy violations. Visitors learned what the platform does only from the text.

Solution

Ran a 10-point UX audit, proposed three home page concepts and recommended a hybrid. Built the design system as a React library of 28 components and a working prototype with scrollytelling, an interactive ROI calculator and three languages.

What was built

  • Three home page concepts: premium, interactive data-driven, clean enterprise
  • Design system: tokens, 28 components, types, automatic variant screenshots
  • Scrollytelling with pinned platform screens and a bento grid of modules
  • Interactive ROI calculator and a cloud / on-prem toggle
  • Runtime i18n EN / UA / PL without page reloads
  • Platform, Company, FAQ with schema.org, Contact and Demo pages with validation
  • Second design iteration: dark theme, an office map on d3, a new blog page

Client

Spacefy AI, B2B retail SaaS, Poland

Role

UX audit, concepts, design system, prototype, i18n

  • HTML / CSS / JS
  • React
  • TypeScript
  • esbuild
  • Python tooling
  • Playwright
  • Claude Design
Current spacefyai.com home page
New home page prototype
Before After
Current Solution page
Platform page prototype
Before After

PORTFOLIO

More than one discipline.

Client work, independent products and experiments. Explore what is closest to your challenge.

11 All projects

Engineering & automation

Automation that runs unattended

n8n orchestration and AI agents with fallback models, alerts and metrics, not just demos.

Own productsAutomation & AI Live

Jarvis

A family AI assistant in Telegram: tasks, shopping, a Monobank-synced budget, health, documents and daily briefings.

Client Own product · family assistant

Challenge

Family life was scattered across notes, chats and banking apps: who buys what, how much was spent this month, when to take medication, where the passport scan is. No ready-made app covered it all or understood voice messages.

Solution

Built an n8n agent on PostgreSQL: you type or speak and it files everything into the right module. Alongside is a React Mini App with 12 screens: today, family, budget with reports, health, home and car, documents. The bank syncs through the Monobank API and Apple Pay.

  • Voice and text: Groq transcribes, Gemini files it into tasks, shopping and expenses
  • Budget: accounts, limits, instalments, debts, cash flow and net worth, CSV export
  • Health: medication reminders, allergies and lab results for every family member
  • Documents: multi-page scans with recognised text and search
  • Nova Poshta parcels, weather, morning briefings and workload balance between partners
  • Reliability: auto-retry on model failure, a guard against false "saved" replies, lost message replay
32
n8n workflows
1074
nodes in production
12
Mini App screens
18
database migrations
Mini App: Today screen
  • n8n
  • PostgreSQL
  • Google Gemini
  • Groq
  • React
  • Vite
  • TypeScript
  • Tailwind CSS
  • Monobank API
  • Telegram Mini App

Own productsAutomation & AI Live

AI Executive Assistant

A Telegram executive assistant: calendar, email, meeting minutes and team tasks in one chat.

Client Own product

Challenge

The executive lives in Telegram while work is scattered across Google Calendar, Gmail, Drive and Sheets. Meetings end without minutes, tasks get lost, and the morning starts with ten tabs.

Solution

One LangChain agent on n8n with 23 tools: two-account calendar with conflict checks, email with mandatory draft confirmation, a meeting bot with transcript and automatic minutes, a morning briefing and a Mini App for memory and contacts.

  • 605 n8n nodes, 63 webhooks, Data Tables as state storage
  • Gemini 2.5 as the main model with automatic fallback to Groq
  • Meeting bot: scheduled join, transcript, minutes, tasks assigned to owners
  • Gmail: read and send only after draft confirmation
  • Document and photo analysis right in chat, long-term fact memory
  • Mini App with 5 tabs and 15 endpoints, an 8:00 local-time briefing
Telegramchat · voice · photoMini App · 5 tabsINPUTn8n · LangChain AgentGemini 2.5 ⇄ Groq fallback23 tools · memoryData Tables · rate limit08:00 briefing · reminders605 NODES · 63 WEBHOOKSGoogle Calendartwo accounts, conflictsGmailsend after confirmationDrive · Sheets · Docstasks, timesheet, minutesMeeting bot · Vexatranscript → minutesSupabase RAGmeeting searchHMACDocker · Caddy · VPSretryOnFail · alertsParakeet STT
605
nodes in the workflow
23
agent tools
15
Mini App endpoints
3 min
saved per interaction
Assistant Mini App: home
  • n8n
  • LangChain
  • Google Gemini
  • Groq
  • Telegram Mini App
  • Google Workspace API
  • Supabase
  • Vexa
  • Docker

Lab

R&D: games, performance and netcode

Own projects where I test the limits: thousands of entities at 60 FPS, deterministic simulation and multiplayer with reconnect.

R&DOwn products

Thornhold

In progress

An asymmetric multiplayer RTS, "Night Hunt": deterministic simulation, its own lobby server and over 2,100 automated tests.

  • A dependency-free netstandard2.1 core: "using Godot" in the core does not compile
  • Deterministic 20 Hz simulation, fog of war with memory, height-based vision
  • Lobby, side selection, server snapshots, reconnect by name
2139
automated tests, 0 failures
355k
lines of C#
12
players per match
  • C# / .NET
  • Godot 4
  • NUnit
  • Netcode
  • Blender
  • itch.io
Day: building walls and towersLiving wall modelEarly game frame
NOCTIVAR gameplay R&DOwn products

NOCTIVAR: SURVIVE

Prototype

A bullet-heaven on PixiJS: 4,083 enemies at 60 FPS and a 91-weapon matrix instead of linear evolutions.

  • PixiJS 8 + Electron, a portable Windows exe
  • Object pooling, spatial hash, 1.2 ms of logic per frame at 4,000 enemies
  • Crafting matrix 24 → 55 → 12 with a generator and a validator
4 083
enemies at 60 FPS
91
weapons in the craft matrix
70k
lines of TypeScript
  • TypeScript
  • PixiJS 8
  • Vite
  • Electron
  • esbuild
Stress test with thousands of enemiesCrafting screenCasino: slots

How I work

From audit to launch without surprises

I reply within a day. First a short call about goals, then an estimate and a staged plan.

  1. 01

    Audit & goals

    I look at the current site or system as a user and as an engineer: structure, speed, SEO, data, bottlenecks in processes.

    A document with problems, priorities and success metrics

  2. 02

    Architecture & design

    I design data, routes and integrations, build a design system and a prototype. The client sees the future product before the first line of code.

    Prototype, tokens, staged plan with an estimate

  3. 03

    Development

    Short iterations on a test stand. Every stage can be opened in the browser and checked on real data.

    A working stand after every stage

  4. 04

    Tests & launch

    Automated tests where there is logic, E2E on the stand, redirects from old URLs, Lighthouse and Search Console checks. Zero-downtime launch.

    Launch checklist, credentials, documentation

  5. 05

    Support & growth

    Monitoring, Telegram reports, backups. New features arrive as data and small releases, not rewrites.

    A stable system that grows with the business

Quality standards

What I consider the baseline in every project

  • 90+

    Performance budget

    LCP under 2.5 s, CLS under 0.1, Lighthouse 90+. WebP images, self-hosted fonts, JS only where needed.

  • 301

    SEO from the first commit

    Schema.org, OG, hreflang, sitemap and 301s from old URLs are part of the architecture, not an afterthought.

  • 685

    Tests where there is logic

    685 NUnit tests in the game simulation, 40 test scenarios in the PixiJS project, E2E on the stand before every launch. Logic without tests does not ship.

  • 100%

    The client owns the data

    Own VPS, Docker, backups, credentials with the client. No rented systems you cannot leave.

  • AES

    Secure by default

    Roles, encryption of sensitive fields, rate limits, honeypots in forms, secrets outside the repository.

  • 24h

    Transparency

    The test stand is open all the time, a decision log and a clear staged plan with an estimate.

Stack

Tools chosen for the task, not the other way round

01 Frontend

  • Astro
  • TypeScript
  • Tailwind CSS
  • GSAP
  • React
  • Web Components
  • Vite

02 Backend

  • Node.js
  • Python
  • FastAPI
  • Laravel / PHP
  • C# / .NET
  • REST API
  • Telegram Bot API

03 Data

  • MySQL
  • PostgreSQL
  • MS SQL Server
  • Supabase
  • Redis
  • SQLAlchemy
  • Apache Airflow

04 Automation & AI

  • n8n
  • LangChain
  • Google Gemini
  • Groq
  • RAG / embeddings
  • Whisper / Parakeet
  • Telegram Mini App

05 Infrastructure

  • Docker
  • Caddy
  • Linux VPS
  • GitHub Actions
  • Cloudflare
  • Playwright
  • pytest / NUnit

06 Games & graphics

  • PixiJS 8
  • Godot 4 .NET
  • Electron
  • WebGL
  • Aseprite

Contact

Have a task? Describe it in two sentences.

I reply within a day. First a short call about goals, then an estimate and a staged plan.

Direct
Reply within 24 hours
Kyiv, GMT+2
Kyiv, Ukraine · working remotely

Your data is used only to reply to your request.