Skip to content

Software Engineer at Betfair Romania Development

Alexandru Popa

Software Engineer · React · TypeScript · GraphQL · AI-first

I build player-facing web products for some of the biggest betting brands in the UK and Ireland. In my spare time I build my own: a habit app called Pact, client websites and a home server I'm slightly too proud of.

agent · ~/projects/pact

❯plan "habits on the iPhone lock screen"

→read: HANDOFF.md, PLAN.md, streak.js

✓plan: a Netlify function draws a PNG per user

❯implement --with-tests

✓18 test suites passing

❯verify --against prod

→GET /wallpaper/<token>.png 200 image/png

✓live, ready for the app update

❯

context: project notestests firstchecked in prod
years writing production code
3+years writing production code
Udemy certificates, 183.5 hours
8Udemy certificates, 183.5 hours
test suites guarding Pact
18test suites guarding Pact
uptime on my home server
24/7uptime on my home server

01 / Work

My day job: player-facing products at Flutter.

Betfair Romania Development

part of Flutter Entertainment

Associate Software Engineer

May 2024 – PresentCluj-Napoca

I'm frontend-first, but I go wherever the bug is: GraphQL BFFs, Node.js services, the proxy config in between. These days I split my time between the casino websites, the in-game experience and a new platform shared by the web and native apps.

  1. 2026 – now

    A new cross-platform betting platform

    • I ship features end to end: GraphQL resolvers, shared React and React Native components, then the web app on top.
    • I track down production bugs that cross team lines. My favourite kind looks fine everywhere until you read the HTTP headers.
    • I write the onboarding docs I wish I'd had when I joined.
    • TypeScript
    • GraphQL
    • React Native
    • Nx
  2. 2025 – 2026

    Casino websites and the in-game experience

    • Built lobby and jackpot features that run across several brands, each with its own look.
    • Merged per-brand builds into one themeable runtime, so a new skin is config instead of another build.
    • Prototyped AI-powered game search and investigated page performance.
    • Wrote Python tooling to audit and clean up years of CMS content.
    • React
    • Preact
    • TypeScript
    • Node.js
    • Python
  3. 2024 – 2025

    PokerStars Casino and a brand migration

    • Led most of the main navigation redesign and released it behind feature flags.
    • Worked on payment flows and helped move a brand onto a new platform.
    • Covered on-call support for production issues.
    • React
    • TypeScript
    • SCSS

Jul 2023 – Apr 2024

Software Engineer Intern

Betfair Romania Development

Web and mobile features with React, React Native, Java and Spring Boot.

Mar – Jun 2023

Java Backend Developer

JPavo

Server-side Java apps, third-party integrations and performance work.

02 / AI workflow

How I work with AI agents.

I treat coding agents like new teammates. They're fast and they never get tired, but they need good onboarding and someone checking their work. I try to be both.

A knowledge base the agents read first

For every codebase I work in, I keep notes generated from the code itself: file maps, feature flows, endpoints, who owns what. Agents start each session with that context, and whatever they learn gets written back.

Fast onboarding

On a platform I had never seen, I started by documenting its core repos with an agent. A few weeks later I had a cross-repo feature in production.

Debugging with receipts

I give agents traces, logs and source code and ask for reproductions and ranked hypotheses. Then I check each one against real data before I touch anything.

Small tools, quickly

Audit scripts, reports and dashboards that used to be a week of tedium now take a couple of focused sessions.

I review everything

Copilot agent mode and Claude Code do a lot of the typing. Nothing ships until I've checked it against the code, the git history and what production actually does.

Sharing what works

I keep the agent instruction files in our repos current and tell the team what worked, and what didn't.

03 / Side projects

What I build outside the day job.

My own app, a client website, the server in my living room and the notes system that holds it all together.

My own product · web + iOS beta

Pact

A habit tracker that tells your friends when you slack off.

Pact is my own product. You set habits, Pact keeps score, and if you skip too often an accountability partner hears about it on WhatsApp. It runs on the web and as an iOS app that's currently in TestFlight.

  • Habits on fixed days, weekly targets or limits, tracked as checks, timers or quantities. Streaks have grace days, because life happens.
  • One streak engine shared by the web app, the iOS app and the n8n workflows, covered by 18 test suites. The database tests run inside transactions that roll back.
  • Supabase Postgres with 40+ versioned migrations, Netlify Functions (one draws your habits as a lock-screen wallpaper) and freemium plans on Stripe.
  • React
  • Expo
  • React Native
  • Supabase
  • PostgreSQL
  • n8n
  • Netlify Functions
  • Stripe
  • Vitest
Pact today screen listing habits with streaks and timers
uvaconsulting.net
Homepage of uvaconsulting.net, a client website

Client websites

uvaconsulting.net is a client project: a fast site that the owner updates through a CMS, without calling me.

  • Built on Vite, React and Decap CMS, so services and pages are edited in a simple admin panel.
  • Contact form on Netlify Forms with email notifications, and a fresh deploy on every push to GitHub.
  • The setup lives on as my own reusable template, so the next client starts from a working base.
  • Vite
  • React
  • Decap CMS
  • Netlify
  • Netlify Forms

A home server that never sleeps

An old laptop (Core i7, 32 GB RAM) running Debian around the clock. It hosts my friends' Valheim world, blocks ads for every device I own and runs Pact's automations. Admin access only goes through my VPN, so no admin ports are open to the internet.

uptime on Debian 13
24/7uptime on Debian 13
admin ports open to the internet
0admin ports open to the internet
domains blocked by Pi-hole
~277kdomains blocked by Pi-hole
between world backups
15 minbetween world backups

Friends

Steam client

DuckDNS + router

dynamic IP, port fwd

Debian 13 server

i7 · 32 GB · UFW · 24/7

  • Valheim
  • Pi-hole
  • n8n

My devices

Tailscale tailnet

Friends reach the Valheim server through DuckDNS and router port forwarding on UDP 2456 to 2458. My own devices reach the server, its Pi-hole DNS and n8n only through the Tailscale VPN.
Valheim server
A systemd service that updates itself through SteamCMD on start. World backups every 15 minutes, kept for 3 days.
Pi-hole
DNS for the home network and for every device on my tailnet, wherever it is.
Tailscale
SSH, dashboards and admin pages are reachable only over the VPN.
DuckDNS
Dynamic DNS that follows my residential IP, refreshed every 5 minutes.
n8n
Four workflows behind Pact's evening check-ins, partner nudges and Sunday reports.
Local LLMs (retired)
Ollama running Qwen 2.5 Coder (7B to 32B) on the CPU, behind Caddy with Let's Encrypt, 2FA and fail2ban.
  • Debian
  • systemd
  • Bash
  • UFW
  • Docker
  • Tailscale
  • Pi-hole
  • Ollama

AI Brain

My second brain, set up so agents can read it too. About 2,000 ChatGPT and Claude conversations converted to Markdown with front matter and links, next to topic notes, project docs and runbooks. Claude Code works inside it with project instructions, persistent memory and a few custom skills.

One skill plans my weekly meal prep. It checks public supermarket prices, balances the macros and drops the shopping list into Notion over MCP.

  • Obsidian
  • Claude Code
  • MCP
  • Python
  • React

AI_Brain/

├─ CLAUDE.mdagent instructions

├─ ChatGPT/~2,000 conversations

├─ Conversations/Claude sessions

├─ Projects/docs & runbooks

├─ Topics/topic notes

└─ Dashboards/Bases + React app

Instagram-style social app

A microservices project I built to learn how the pieces fit: a JWT auth gateway, WebSocket chat with media, stories, notifications and an infinite feed. Dockerised behind Nginx, with PostgreSQL for core data and MongoDB for the social graph.

  • Microservices
  • JWT
  • WebSockets
  • Docker
  • Nginx
  • PostgreSQL
  • MongoDB

04 / Toolbox

Frontend at heart, comfortable all the way down.

Frontend

  • React
  • TypeScript
  • JavaScript
  • React Native
  • Expo
  • Preact
  • Redux
  • Vite
  • HTML
  • CSS / SCSS
  • Design systems
  • Accessibility
  • Figma-to-code

Back-end & data

  • Node.js
  • GraphQL
  • BFFs
  • Supabase
  • PostgreSQL
  • MongoDB
  • Java
  • Spring Boot
  • WebSockets
  • Python

AI & agents

  • Copilot agent mode
  • Claude Code
  • Sub-agents
  • Agent skills
  • Context engineering
  • MCP
  • Obsidian
  • Ollama

Infra & DevOps

  • Docker
  • Nginx
  • GitHub Actions
  • Netlify
  • Nx
  • pnpm
  • Linux
  • systemd
  • Tailscale
  • n8n

Observability & content

  • Splunk
  • Grafana
  • GA4
  • Headless CMS
  • Decap CMS
  • i18n

05 / About

The person behind the commits.

Alexandru Popa in front of the Colosseum in Rome
Off duty in Rome

I went to a maths and computer science high school in Petroșani, then studied Computer Science and IT at the Technical University of Cluj-Napoca. I joined Betfair Romania Development as an intern in 2023 and stayed.

What I enjoy most is following a bug all the way down. It starts as a broken animation, turns out to be a resolver, and ends in a config file three layers below where anyone was looking. I don't panic when production breaks. I get curious.

Away from the keyboard I'm at the gym, out running, flying a drone or taking photos. I also read, watch anime and keep the Valheim server alive.

06 / Contact

Let's talk.

Hiring, building something, or stuck on a weird bug? Send me an email. I answer them myself.