09/13/2026 updated


100 % available
Industrial software engineer | Modbus, payments, C#, Node, Go | 14M+ transactions in production
Lviv, Ukraine
Only remote
Information Systems & Technologies, Ivan Franko National University of Lviv (2006–2011)About me
I came to software from running businesses — I sold woodworking equipment and built a workshop before I wrote code for a living. That is why my systems include the unglamorous half: the daily reconciliation, the export an accountant opens without calling me. Fifteen years, mostly my own products.
C Sharp (Programming Language)PostgreSQLMessaging Application Programming InterfaceModbusNode.jsOnline Transaction ProcessingTypeScript
I build software that drives physical equipment and accounts for the money it earns.
Industrial and IoT: Modbus RTU/TCP over RS-485, bay and line controllers, payment terminals, bill and coin acceptors, QR payment without an app install. A C#/.NET control tablet running at the machine itself, still serving customers when the link to the server is gone. Telemetry over unstable links: events buffer on the device and backfill when connectivity returns. Over 14,000,000 payment transactions processed, with daily per-point reconciliation of cash against card.
Edge and hardware: Raspberry Pi and Pi Pico as on-site servers next to machinery, starting conveyors and pumps and reading the line back; weight sensors so material consumed per run becomes a number rather than a guess. Parts modelled in SolidWorks and Fusion 360, toolpaths generated in Fusion CAM. I draw the bracket and write the service that reads the sensor mounted on it.
Backend: Node.js, TypeScript, NestJS, Go, C#/.NET, PHP, Python, Java. PostgreSQL, MySQL, MongoDB, Redis, BullMQ. Third-party integrations are most of what I do: payment providers, banking and accounting exports, carrier logistics, WhatsApp Cloud API, Telegram bots.
Frontend: React, Next.js, Angular with SSR, three.js and WebGL where a product needs it.
AI in production: computer vision that reads photographed identity and registry documents and hands the data to a human to confirm before a contract is generated; retrieval pipelines where every answer traces back to the clause that produced it.
Cloud and operations: AWS, Azure, Docker, Docker Compose per environment, CI gated on tests and a standards audit. I deploy and run everything I build.
Industries: self-service car wash networks, manufacturing and CNC, e-commerce at real volume (7,422-product catalogue, 68,804 order lines), HoReCa, real estate, education, drones and UAV training.
15+ years, mostly on my own products. I talk to the customer, choose the architecture, write it, and answer for it when it breaks at 7am. Registered sole proprietor in Ukraine (EET), so contracting and invoicing are straightforward.
Experience
Professional experience10+ years
Freelancer since2011
Languages
EnglishFluentUkrainianNative speaker
Project history
Online store for a Polish plant nursery: 7,422 products, seasonal availability, B2B and B2C pricing, Polish and Ukrainian.
Angular with server-side rendering on the front, two Laravel back ends behind it — catalogue/orders and an admin panel the nursery staff use daily. Product data arrives from the growers' own systems and has to survive imports that are never clean: partial rows, renamed varieties, stock that changes between the export and the order.
SSR because the catalogue lives on organic search. Pages render on the server with correct metadata and structured data, images are served in modern formats at the size actually displayed, and the whole thing stays fast on a phone in a greenhouse with one bar of signal.
Run end to end by me: schema, API, front end, deployment and the Docker/CI that ships it.
Built and still run the software layer of a self-service car wash network: bay controllers over Modbus RTU/TCP on RS-485, a C#/.NET control tablet running at the bay itself, and a payment layer covering bill and coin acceptors, card terminals and QR payment without an app install.
Over 14,000,000 payment transactions processed. Daily per-bay reconciliation of cash against card, so discrepancies surface the same day rather than at month end. Telemetry over unstable links: events buffer on the device and backfill when connectivity returns, because a dropped connection must never cost a transaction.
Built to PCI DSS: card data stays with the terminal and never lands in our systems; encryption at rest, TLS and security headers, role-based access and audit trails around everything that touches money.
Supporting services written in several languages as each task required: C#/.NET, Node.js, Java/Kotlin, Go. Years under real load, not a pilot.