Available for freelance projects

I build web products end to end.

React and TypeScript on the front, Node and Cloudflare Workers on the back. I take an idea from the first commit to a deployed URL — including the boring parts: databases, cron jobs, caching and monitoring.

  • Nationwide app shipped for every region of Ukraine
  • Typed APIs, tests, zero-downtime deploys
  • No lock-in: the repo is yours
Runs on CF edge global by default
Ops Serverless no boxes to reboot
Daily driver stack
  • React
  • TypeScript
  • Node.js
  • Cloudflare Workers
  • D1 / KV / R2
  • React Native
  • PostgreSQL
  • Docker

Selected work

A product, not a demo

The fastest way to judge a developer is to look at something they run in production. This one runs on four platforms off a single codebase.

Flagship Web · Android · Bot · Desktop

Svitlo — nationwide power-outage schedules for Ukraine

When the grid is unstable, millions of people need one answer: when will my power go out? Svitlo answers it for every queue in every region — and stays honest when the operator hasn't published a schedule yet.

What I built

  • React 19 PWA with offline cache, installable, dark UI
  • React Native (Expo) Android app with OTA JS updates and rollback
  • Telegram bot + Mini App on the same backend
  • Linux desktop widget for Wayland (Niri / Noctalia)

Under the hood

  • One TypeScript Cloudflare Worker: API, webhooks, cron importers
  • D1 for schedules, KV/R2 for static address packs
  • 30-minute slot model, 12 queues per region, mode classification (GPV/GAV/SGAV)
  • pnpm monorepo, typed contracts shared by web, mobile and worker
Svitlo app screen: finding your queue by address
Address → queue search Offline-first

Tooling

Compatibility bridge for an AI coding CLI

An upstream API rewrite broke session capture for an AI coding agent. I wrote a shim that translates the old call shape, keeps exports working through a temp file, and patches the plugin lifecycle — no vendor fork, zero data loss.

Node · plugin API · shims

Desktop

System Hub — tuning center for CachyOS

A local control center that wraps shell tasks, build pipelines and documented skills behind one interface, so a Linux box stays reproducible instead of being a pile of one-off commands.

Shell · Node · docs-as-code

Static site

ADB & Fastboot cheat sheet

A deliberately tiny docs site for Android power users: copy-to-clipboard command blocks, keyboard-fast navigation, no framework — loads instantly on a phone.

HTML · CSS · vanilla JS

Services

What I can take off your plate

Fixed-scope projects or ongoing work. Either way you get a running deployment, a repository you can hire anyone to continue, and no mystery infrastructure.

Web apps & dashboards

React + TypeScript SPAs, admin panels, data-heavy dashboards. React Query, routing, charts, maps, i18n, accessible components. Fast on a mid-range Android phone, not just on your laptop.

APIs & edge backends

Node/TypeScript REST APIs, auth, webhooks, scheduled jobs. Deployed to Cloudflare Workers with D1, KV and R2: global latency, no servers to patch, a bill you can predict on day one.

Mobile apps & bots

Cross-platform apps with Expo: offline storage, local notifications, OTA updates. Telegram bots and Mini Apps sharing the same backend as your web product — one data model, three surfaces.

Ship, deploy & maintain

CI, preview deploys, typed API contracts, tests, logs and alerts. I hand over documentation that matches the code, plus a fix window after launch so the first real users don't find your bugs for you.

Stack

Tools I know the sharp edges of

Frontend

  • React 19
  • TypeScript
  • Vite
  • Tailwind
  • React Router
  • TanStack Query
  • Zustand
  • ECharts
  • Leaflet
  • i18next
  • PWA / Service Workers

Backend & data

  • Node.js
  • Cloudflare Workers
  • D1 (SQLite)
  • KV
  • R2
  • Cron Triggers
  • REST design
  • PostgreSQL
  • SQLite
  • Zod

Mobile & desktop

  • React Native
  • Expo
  • Expo Router
  • Notifee
  • OTA bundles
  • Android build pipeline
  • Wayland widgets

Ops & tooling

  • Git
  • pnpm workspaces
  • Wrangler
  • Nginx
  • Docker
  • systemd
  • Vitest / node:test
  • Playwright
  • Cloudflare Pages
  • Linux admin

Process

No black boxes between us

  1. 01

    Scope & estimate

    We agree on what "done" means in writing: screens, data model, edge cases, acceptance criteria. You get a fixed price and a date — or an honest "this needs two phases".

  2. 02

    Build in the open

    A preview URL that updates with every push, short written updates, decisions explained in plain language. You see progress daily, not at the end.

  3. 03

    Ship & hand over

    Production deploy, environment docs, a walkthrough recording, and a post-launch fix window. Your accounts, your repo — I don't disappear with the keys.

Contact

Tell me what you're building

A short description and a deadline is enough to start. I'll reply with questions, a rough estimate and the first milestone — usually within one business day.

Based in Ukraine (UTC+2) · comfortable with EU and US-East overlap · English, Ukrainian, Russian