kvaro.me

I write the software, and I run the machines it lives on.

Developer and founder in Bratislava. I built a fleet-management platform for the car rental company I operate — then kept going and built the storefronts, the CMS engine behind them, and the servers all of it runs on.

Open to work and to client projectsBratislava, SlovakiaMarcoKvasnica@pm.me

One system, all the way down

What Fleetron is actually made of

Most stacks are described from the top. This one is worth reading to the bottom, because the bottom is where the decisions get expensive.

Browser
React + TypeScript

What a dispatcher actually looks at: live positions, trip history, and the paperwork a trip turns into.

Edge
Cloudflare

DNS and proxy. Caching and TLS at the edge so the origin only handles what it must.

Proxy
nginx

One container owns 80 and 443 and terminates TLS. Nothing else on the host binds a public port.

Application
Node.js API + web frontends

Three services from one repository, released together as versioned images rather than as a git pull.

Cache
Redis 7

Sessions and background jobs. Not on the critical path — the platform survives losing it.

Database
PostgreSQL 15 + PostGIS 3.5

Trips are stored as geometry, not as two float columns. “Which trips crossed this zone” becomes one query.

Runtime
Docker Compose

Six containers on a single host. The database publishes no port — the app reaches it over the compose network.

Host
Ubuntu 24.04 on Hetzner

One machine, patched and watched by me. Ninety-five days of uptime at the last check.

No open admin ports

Server access runs over Tailscale. There is no SSH port exposed to the internet to be scanned.

Rollback is one number

GitLab CI builds tagged images into a registry, and production runs a specific tag. Going back is changing it, not undoing a deploy.

And at home, a second machine: Proxmox on a Ryzen 5 2600 with 46 GB of RAM, a ZFS raidz1 pool across three drives, and nightly backups pulled from production over Tailscale — pulled, so that a compromised production server has no path to the copies. I picked the RAID level.

Selected work

Seven builds, and what each one had to solve

Two are live and carrying real traffic. Four are finished and waiting on their launch date. One is a tool that runs every hour so I don’t have to read classifieds all day.

Working together

Open to work and to client projects

Backend and full-stack roles, or a build for your business. Remote or Bratislava. The fastest way to judge whether I’m useful to you is the section above — pick the layer you care about and see whether the reasoning holds.

MarcoKvasnica@pm.me · Full CV