Built with Claude Code, from an analysis of 147 of my own repositories — ~2,400 commits, ~800k lines of hand-written code, not agent-generated. Every claim on this page comes from that analysis, not invented copy.

Bucharest, Romania

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

Not loyal to a framework. Loyal to production code — from Magento storefronts to multi-tenant edge systems.

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

What I build

Fifteen years of writing production code, the last five as the sole backend and edge engineer on one platform — architecture, implementation, operations, end to end.

Edge & Serverless Cloudflare Workers, Durable Objects and Workflows, wired into service-oriented systems of a few dozen Workers apiece. WebSocket Hibernation for stateful real-time sessions; Queues, R2 and KV for the async and storage layer.
Cloudflare Workers · Durable Objects · Workflows · Queues · R2 · KV · 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 — single-pass, multi-rendition, NVENC — feeding an HLS ladder, plus a Video.js player with custom watch-time and anti-fraud plugins.
FFmpeg / NVENC · HLS · Video.js · BullMQ · Google Pub/Sub
Payments Stripe Connect marketplace payments — tiered platform fees, multi-party revenue splits, processed through a queue-driven transfer pipeline.
Stripe Connect · Revenue-split engineering · Webhook verification
Data Multi-domain schemas on serverless MySQL at the edge, migrated live from Prisma to Kysely with a custom AST-level plugin. ClickHouse for the analytics ingestion that has to keep up.
Prisma · Kysely · TiDB / MySQL · PostgreSQL · Supabase · ClickHouse · Redis

Selected technical work

Nine problems, each solved with the primitive that actually fit — not the one that was trendy.

OpenAPI on Cloudflare Workers, backed by KV and Durable Objects

The contract-first API behind videos, channels, organizations, creators, vendors, ecommerce and sponsorships — 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 — and 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, campaign chat, 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 GPU transcoding pipeline — download, transcode, distribute, three BullMQ stages — turns one upload into a full adaptive-bitrate HLS ladder. The transcode step decodes once and splits into per-rendition NVENC encodes inside a single filter graph, with a CPU fallback path and a portrait-aware, fps-derived quality ladder.

FFmpeg / NVENC · BullMQ · Google Pub/Sub

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 the query layer without stopping traffic

Moved a production 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

Copying objects between clouds, signed by hand

Moving objects between S3-compatible providers server-side meant signing every request myself — AWS SigV4, HMAC key derivation, canonical requests — using only Web Crypto, no AWS SDK. A Durable Object drives the copy through storage.setAlarm() recursion instead of a long-running loop, so it survives a Worker's CPU and wall-clock limits one chunk at a time, with D1 as the job registry behind a small live dashboard.

AWS SigV4 (Web Crypto) · 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

Stack

What actually shipped, not a skills-endorsement 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

Timeline

Twelve years in Bucharest, from CMS theming to edge infrastructure.

  1. 01

    Display None SRL — Full-Stack EngineerJun 2021 – Present

    Sole engineer across architecture, implementation and operations for a video and marketplace platform — Cloudflare Workers and Durable Objects for the real-time layer, GPU transcoding and edge delivery for video, Stripe Connect for marketplace payments.

  2. 02

    Toptal — Full-Stack Magento DeveloperJul 2019 – Present

    Full-stack Magento 1 and 2 development on remote client engagements — custom themes, backend modules and extensions, plus Vue.js interfaces beyond the Magento frontend layer.

  3. 03

    Nordic Web Team — Magento Front-End DeveloperApr 2014 – Dec 2019

    Custom themes and UI components across 30+ Magento storefronts. Migrated stores from Magento 1 to 2 and built custom PHP extensions giving merchants admin-level control over storefront behavior.

  4. 04

    Self-employed — Freelance Web DeveloperFeb 2013 – Apr 2014

    Custom themes and UI components for Magento, WordPress, Drupal and OpenCart, including a Swiss client engagement.

  5. 05

    Magendoo Interactive — Front-End DeveloperJul 2012 – Feb 2013

    Magento Enterprise and Community themes for two of Romania's largest retailers, built from PSD / AI / layered-PDF designs.

  6. 06

    Inside Media Communication — Web DeveloperMar 2011 – Jul 2012

    Frontend themes for a custom-built CMS, plus interactive UI components with jQuery UI.

  7. 07

    Casalife-Romania — Asistent2010

    Early, non-technical role in e-commerce operations — inventory, product photography and copywriting, order fulfillment.

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.