Who you would be hiring

03

Cosmin Ilie, full-stack engineer in Bucharest

Full-stack engineer, working on my own from Bucharest with founders and product teams across Europe, in English and Romanian.

I build the part of a product people touch. Sometimes that is a marketing site. More often it is the product interface itself, or help on a frontend team that is behind.

Most weeks go into a SaaS platform that puts a real iPhone in a browser tab: strict TypeScript, live video over WebSockets, a public API and an MCP server.

The rest goes into infrastructure I run myself.

I turn down work with no named decision maker, or with a deadline picked before the scope exists.

What I reach for

Interfaces
TypeScript, React, Next.js, Astro, CSS written by hand
Data
TanStack Query, Drizzle, Postgres, Zod
Quality
Vitest, Playwright, WCAG 2.2 AA, Core Web Vitals on real devices
Operations
Docker, Caddy, Cloudflare, Vercel, Linux

By the numbers

Counted in the codebase

Most of what I build sits behind a login.

The four figures were counted in one client platform, the one described below. It is not named here. I can show more of it on a call.


  • 112Tables

  • 99Migrations

  • 46Dashboard pages

  • 45API domains

  1. 01

    Remote iPhone control platform

    Current work

    A SaaS product that puts a real iPhone in a browser tab. Strict TypeScript end to end, live video over a WebSocket that stays smooth while the interface keeps responding. The rest of the code tracks which tenant owns which device, which role can take control, and what happens to a session when a phone drops off the network mid-tap.

    Built with
    Next.js 15 App Router, React 19, TypeScript strict, Drizzle and Postgres, TanStack Query, Tailwind 4, WebSocket streaming, Cloudflare R2
    Dimensions
    Multi-tenant, 46 dashboard pages, 45 API domains

  2. 02

    Streaming gateway

    Current work

    The Node service between the phones and the browser. MJPEG frames over WebSocket, resized with sharp, every message validated against a schema before it is acted on.

    Built with
    Node.js, WebSocket, MJPEG, sharp, Zod, JWT
    Dimensions
    One long-lived socket per device, measured in frames and megabytes

  3. 03

    Public API and MCP server

    Shipped, still maintained

    The same platform, opened to other people’s code: a versioned REST API and an MCP server, so agents can drive devices directly.

    Built with
    TypeScript, REST /v1, MCP, Postgres
    Dimensions
    Versioned at /v1, documented straight from the validators

  4. 04

    Homelab

    Running since 2024

    Docker services behind Caddy, Pi-hole handling DNS, Jellyfin for media, all reachable through a Cloudflare Tunnel with no open ports. Nothing is exposed to the internet directly.

    Built with
    Docker, Caddy, Cloudflare Tunnel, Pi-hole, Jellyfin
    Dimensions
    One always-on machine, zero inbound ports

The desk

Who does the work

I do all of it myself, from Bucharest.

Based
Bucharest, Romania
Working hours
UTC+2, overlapping the European day
Languages
English and Romanian
Hosted on
Cloudflare Pages, static files at the edge

The back page

Tell me what is broken, or what does not exist yet

Email works best. A few sentences are enough.