Built with Claude Code, from an analysis of my own git history: 200+ repositories, 5,000+ commits of hand-written code, not agent-generated. Technical detail comes from that code; traffic, cost and volume figures are my own.

Bucharest, Romania

Senior Backend & Edge Dev · Cloudflare Ecosystem · Full-Stack Developer · TypeScript/NodeJS/Vue.js

Not loyal to a framework. Loyal to code that runs in production, from the browser to multi-tenant edge systems.

TypeScript · Node.js
Cloudflare Workers · Durable Objects · Workflows · R2 · Queues

What I build

Fifteen years of building for the web, from front-end work to edge infrastructure. The last five I led backend and edge engineering on a video and commerce platform, and separately took over a high-traffic media customer's video platform and ran it on my own.

Edge & Serverless 40+ Cloudflare Workers services in production, wired together with Durable Objects, Workflows, Queues, R2 and KV. WebSocket Hibernation for stateful real-time sessions, D1 for job state and stats.
Cloudflare Workers · Durable Objects · Workflows · Queues · R2 · KV · D1 · Wrangler
Backend & APIs Contract-first REST APIs (Hono, OpenAPI 3.1, Zod) with a typed client generated straight from the spec, plus data-driven RBAC and GraphQL where the product calls for it.
Hono · OpenAPI 3.1 · Zod · GraphQL (Apollo) · CASL / RBAC · Firebase Auth
Video & Streaming GPU-accelerated FFmpeg transcoding on self-hosted servers that scale horizontally, 10,000+ videos processed, delivered as HLS from R2 and Backblaze B2. A Video.js player with watch-time, ad and anti-fraud plugins. For one customer it replaced Cloudflare Stream and cut video hosting cost by over 75%.
FFmpeg / NVENC · HLS · Video.js · BullMQ · Google Pub/Sub · R2 · Backblaze B2
Payments Designed and implemented Stripe Connect marketplace payouts: each order split between platform, vendor, creator and organization, on tiered fees, through a queue-driven transfer pipeline.
Stripe Connect · Revenue-split engineering · Webhook verification
E-commerce & Magento Magento since 2012, versions 1 and 2: custom themes, Hyvä (Tailwind, Alpine.js), checkout customization, PHP modules and upgrades. Worked on 60+ client shops at a Nordic agency. Adobe-certified front-end developer.
Magento 1 / 2 · Hyvä · Tailwind · Knockout / RequireJS · Klarna Checkout · Shopify
Data Multi-domain schemas on serverless MySQL at the edge, migrated from Prisma to Kysely endpoint by endpoint. MongoDB moved from a VPS to Atlas and upgraded from 6 to 8. ClickHouse for the analytics ingestion that has to keep up.
Prisma · Kysely · TiDB / MySQL · PostgreSQL · MongoDB · Supabase · ClickHouse · Redis

Selected technical work

Thirteen problems, each solved with the tool that actually fit, not the one that was trendy.

OpenAPI on Cloudflare Workers, backed by KV and Durable Objects

A contract-first API I designed for videos, channels, organizations, creators, vendors and ecommerce, one service on Cloudflare Workers. Every route extends a single PlatformOpenApiRoute base class; Zod schemas come from the same Prisma types the database uses, so the OpenAPI spec it produces is generated, not hand-maintained. That spec feeds a typed client the admin app, storefront and player all consume instead of three hand-written SDKs. Role and permission checks are resolved centrally and cached in KV, invalidated on every role change, so a hot path doesn't re-derive access on every request. Organization, creator, vendor and superadmin all hit the same endpoints through one actor/scope layer, including an "acting on behalf of" mode, instead of each handler hand-rolling its own tenant check. Heavier stateful work (checkout sessions, notification fan-out) is delegated over service bindings to Durable Objects sitting behind it.

Cloudflare Workers · Hono · OpenAPI 3.1 · KV · Durable Objects · Prisma/Kysely

Checkout that survives a hibernating socket

A cart had to stay in sync across a video player's iframe and the host page's cart dropdown, through reconnects, not just while the tab stayed open. Built as a Durable Object WebSocket hub on the Hibernation API: sessions rebuild from getWebSockets() on cold start, updates debounce before they fan out, and the object self-destructs on a schedule tied to how many people are still connected.

Durable Objects · WebSocket Hibernation

Provisioning a tenant without a runbook

A new tenant needs a fully configured Supabase project (schema, RLS policies, triggers, auth hooks) without anyone running commands by hand. Built as a 9-step Cloudflare Workflow: create the project, poll for health with linear backoff, run the migration SQL, wire the auth hooks, store the generated secrets in KV.

Cloudflare Workflows · Supabase provisioning

One decode, four renditions, no upscaling

A self-hosted GPU pipeline replaced Cloudflare Stream for a high-traffic customer. Each server pulls jobs from Google Pub/Sub when it has capacity, so adding a machine adds capacity. On each one, three BullMQ stages (download, transcode, distribute) feed a single decode into per-rendition NVENC encodes in one FFmpeg filter graph, with a CPU fallback and a portrait-aware, fps-derived quality ladder. 10,000+ videos processed. Output is served from S3-compatible storage (Cloudflare R2 and Backblaze B2) instead of Stream. Together with the self-hosted transcoding, that cut video hosting cost by over 75%.

FFmpeg / NVENC · BullMQ · Google Pub/Sub · R2 · Backblaze B2

Splitting one payment four ways, in the background

A marketplace order has to pay out the platform, the vendor, the creator and the organization, each on its own fee tier. Built as a Cloudflare Queues consumer sitting between the order and the Stripe transfer: it retries on missing data instead of failing the order, and groups each split with transfer_group and source_transaction so Stripe's own ledger reconciles back to the order, not just to the account.

Stripe Connect · Queue-driven transfers

Migrating a query layer one endpoint at a time

Moved an API's query layer from Prisma to Kysely one endpoint at a time, writing a custom Kysely plugin that rewrites boolean columns to MySQL tinyint at the AST level, so the two ORMs could disagree about types without anyone noticing.

Prisma → Kysely · Custom AST plugin

Making a view count mean something

View counts are easy to inflate. Built a watch-time plugin that only counts a view after 2.5 seconds of sustained playback inside 5-second segments, adjusted for playback rate and deduped with a running set so a seek-back can't double-count. A separate Deno KV service caps it at two counted views per device fingerprint per day, checked with retries before the number reaches a dashboard.

Video.js plugin · Deno KV fingerprinting

Moving 83 TB between clouds, signed by hand

A Cloudflare Worker moved an 83 TB video library from Amazon S3 to Backblaze B2 in about 7 to 8 days, averaging roughly 1 Gbit/s. Every request is signed by hand (AWS SigV4 with Web Crypto, no AWS SDK). A Durable Object drives resumable multipart copies through storage.setAlarm(), so it survives a Worker's CPU and wall-clock limits one chunk at a time. Queues and a cron trigger retry failures, with D1 as the job registry behind a live dashboard.

AWS SigV4 (Web Crypto) · Queues · D1 · Durable Object alarms

Turning one API write into pre-rendered JSON

Every storefront page view used to mean a live API call. For content that's mostly static and read far more than it's written, that's the wrong trade. A coordinator Durable Object dedupes incoming writes and dispatches a small fleet of generator Durable Objects (one per entity, channel and homepage) that pre-render each write to a static JSON file. Pages read that file instead of hitting the API, and each write purges only the specific cache URLs it affected, not the whole cache.

Durable Objects (7-class fan-out) · Targeted cache purge

Taking over a live video platform

Inherited a video platform with about 300,000 unique views a day and ran it alone. Moved its MongoDB from a self-hosted VPS to Atlas and upgraded it from 6 to 8. Re-hosted the API, web app and admin on 4+ servers in different regions: Cloudflare Load Balancing with geo-steering in front, an Nginx reverse proxy on each server spreading traffic across 15+ PM2 instances, deploys through GitHub Actions.

MongoDB Atlas · Cloudflare Load Balancing · Nginx · PM2 · GitHub Actions

Retiring .html URLs across a live Magento catalog

A Magento 2 storefront's catalog URLs still carried a legacy .html suffix from years of accumulated rewrites. Built a custom module with console commands that walked the URL-rewrite table, stripped the dead .html history and re-pointed non-.html catalog URLs, plus a Hyvä (Tailwind) theme layer with its own slider view models, widgets and setup scripts on top.

Magento 2 · Hyvä / Tailwind · Custom console commands

A subscription picker Magento's UI framework wasn't built for

Magento's product page has no native concept of "subscribe and save" pricing. Built a Knockout.js component, with observables wired straight into Magento's own price-utils, that recalculates the displayed price live as a shopper switches between one-time and subscription options. Plus a service-worker route served through Magento's own router and layout XML instead of a static file.

Magento 2 · Knockout.js / RequireJS · Custom router

An admin that polls its own transcoder

A Vue 3 and Pinia admin for a video platform needed to show, live, where an upload actually was in a multi-stage GPU pipeline, not just "processing." Built polling into the admin every 10 seconds against transcoder status, chunked uploads via flow.js, a moderation queue for comments, and a Supabase auth wrapper handling password resets without hand-rolling session logic.

Vue 3 · Pinia · Supabase · flow.js chunked uploads

Stack

What I've worked with, not a skills wishlist.

TypeScript Node.js Deno Cloudflare Workers Durable Objects Workflows Queues R2 D1 KV Hono OpenAPI 3.1 GraphQL Zod Prisma Kysely MySQL / TiDB PostgreSQL Redis ClickHouse Supabase Stripe Connect FFmpeg HLS Video.js Vue 3 Astro Tailwind CSS Docker Git / GitHub Actions MongoDB Magento 1 / 2 Hyvä Nginx PM2 Typesense Pinia Nuxt 3 Sentry Amazon S3 Backblaze B2

Timeline

Fifteen years, from CMS theming to edge infrastructure.

  1. Display None SRL - Senior Full-Stack EngineerJun 2021 - Present

    Own company, B2B contract. Led technical delivery for a video and commerce platform (team of up to 4): 40+ Workers services, Stripe Connect payouts, GPU transcoding, a Video.js player with ads and analytics. In parallel, took over a high-traffic US media customer's existing video platform as its only developer: hosting, database, player and storage.

  2. Toptal - Senior Full Stack Magento DeveloperJul 2019 - Present

    Freelance engagements, client names withheld, latest ended in 2025: Core Web Vitals on a high-traffic Magento 1 store, a Hyvä storefront, 10+ stores upgraded to Magento 2.4.3, Vue and Vuex dashboard features.

  3. Nordic Web Team - Magento Front-End DeveloperApr 2014 - Dec 2019

    Responsive Magento 1 and 2 storefront work across 60+ Nordic client shops at a Swedish agency, on-site in Bucharest, working in English. Custom SCSS and LESS themes, PHP modules, Klarna Checkout, upgrades and security patches.

  4. Self-employed - Magento DeveloperFeb 2013 - Sep 2019

    Part-time from Apr 2014. 5+ Magento 1 webshops including a Swiss shop, an embeddable multi-language booking widget (released Jul 2015), and a Magento 1 shop maintained through 2019.

  5. Magendoo Interactive - Front-End DeveloperJul 2012 - Feb 2013

    Tailored cart, checkout and product pages on multi-store, multi-language Magento 1 sites for clients including two of Romania's largest retailers (names withheld), built from PSD designs.

  6. Inside Media Communication - Web DeveloperMar 2011 - Jul 2012

    PSD to responsive HTML5 and CSS3 for 30+ corporate investor-relations sites on an in-house CMS, plus jQuery UI components.

Bachelor's Degree in Computer Science, Spiru Haret University, Bucharest, 2010-2013. Adobe Certified Expert (Magento Commerce Front-End Developer), Magento 2 and Magento 1 Certified Front-End Developer.