About

I'm a software developer with over a decade of experience, focused on frontend and comfortable across the full stack. I build frontend-heavy products and the tools around them: Vue/Nuxt and React/Next applications, TypeScript-heavy interfaces, the Node.js/GraphQL services behind them, small CLI utilities, editor integrations, and self-hosted systems that solve real day-to-day problems. I also care a lot about a fast, keyboard-driven workflow.

What I Do

I specialize in Vue and Nuxt with TypeScript, and I'm equally at home in React and Next.js. A lot of the work is bringing existing codebases forward — migrating legacy UIs to modern stacks and typing JavaScript projects end to end — without stopping delivery. I've owned frontend architecture at scale: feature-sliced design, micro-frontends with Module Federation, backend-for-frontend layers, and shared UI kits documented in Storybook.

I work across the stack when a project calls for it: building and integrating backends in Node.js and TypeScript, designing GraphQL and REST APIs (with some PHP along the way), and shipping a few AI integrations — from AI-assisted content features to streaming model output straight into the interface.

I've led frontend work on production applications across media, fintech, telecom, and security: high-traffic sites, real-time collaborative editors, live dashboards, and streaming-data interfaces — usually in English-speaking international teams. Alongside the UI I set up the infrastructure that keeps a project healthy: CI/CD pipelines, unit and end-to-end tests, and quality gates. I care about maintainable code that other developers can work with — boring abstractions where possible, tests where behavior matters, and documentation that explains the decisions rather than repeating the code.

Tech Stack

Open Source and Writing

I also build small open-source tools when an annoyance keeps repeating: Telegram media bots, terminal helpers, editor plugins, and experiments around self-hosting. A lot of that comes from a habit of optimizing how I work: a keyboard-driven, mostly mouseless setup on a tiling window manager (i3), keybindings grouped into muscle memory, and lightweight tools that keep the machine responsive. The blog is where I write down the practical parts: what broke, what fixed it, and what I would do differently next time. You can find the code on GitHub.