Clear, scalable, reliable.

I write code that holds up as the product grows. The main principle: less hidden logic, clear states, strict types, predictable behavior. Code like that is easy to read, safe to change and simple to hand off to another developer.

Both halves of the app.

The main depth is product interfaces in Vue 3 and TypeScript: commercial platforms from scratch, canvas and 3D maps, a form builder with conditional branching, design systems, corporate SSO. I’ve worked in React too — the framework in this layer is not a constraint. The backend runs on two lines: Node.js with Effect‑TS and DDD, and Python with FastAPI. I’m not tied to a language — my projects have backends in TypeScript, Python and Rust, and I pick the tool for the job.

  • Product SPAs from scratch — Vue 3 / React, TypeScript, FSD with boundaries enforced by the linter
  • Backend: Node.js (Effect‑TS, DDD) and Python (FastAPI, SQLAlchemy async, Alembic)
  • API contract before code: OpenAPI as the source of truth, frontend types generated from the spec
  • PostgreSQL: schema, migrations, a domain model split into bounded contexts
  • Complex interactivity: canvas, maps (Cesium, Mapbox GL), charts
  • Design systems and component libraries with Storybook
  • Operations: my own server, Docker, nginx, CI/CD, Prometheus + Grafana
  • Tests: Playwright e2e on top of everything, pytest and node:test on the backend