vladislav@rajtik: ~/about

vladislav@rajtik:~$ whoami

Vladislav Rajtmajer

Senior PHP / Laravel Engineer

Plzeň, Czech Republic · remote · contract (IČO)

available now for new contracts

vladislav@rajtik:~$ cat about.md

12+ years building web applications and backend systems. I work mostly in Laravel: REST and user-facing API design, PostgreSQL, and the boring reliability work that keeps APIs predictable.

Before the web I spent years in embedded and IoT: binary protocols between hardware and servers, telemetry data pipelines, even banknote-validator firmware in C on Atmel AVR. That low-level background still shapes how I design data interfaces.

# Open to long-term remote contracts on a modern PHP/Laravel stack.

vladislav@rajtik:~$ ls projects/

CaptchaAPI

privacy CAPTCHA · EU

Proof-of-work CAPTCHA, GDPR-first. No tracking, no Google. Ships with its own Laravel package and WordPress plugin.

Billify

invoicing API · CZ

Issue invoices over a clean REST API. Built for developers who'd rather call an endpoint than click through accounting software.

Exile to Exile

open-source product · PoE2

Free Path of Exile 2 companion built with Laravel, React and Inertia: build planner, passive-tree tools, loot-filter generator and shareable builds.

POE2 Toolkit

game tooling · OSS

Framework-agnostic TypeScript toolkit for GGPK extraction, typed game-data extractors and a headless passive-tree geometry engine with a React renderer. Used by Exile to Exile.

laravel-blog.cz

writing · CZ

A Czech-language blog where I write about Laravel and day-to-day backend engineering.

vladislav@rajtik:~$ cat packages.json --published

captchaapi/laravel Composer · Packagist
captchaapi WordPress.org · reviewed plugin
poe2-toolkit · @poe2-toolkit/ggpk npm · GitHub

ships across 3 ecosystems: Composer · WordPress.org · npm

vladislav@rajtik:~$ cat exile2exile app/Services/GameDataReleases.php

public function activate(string $version): void
{
    if (! $this->has($version)) {
        throw new RuntimeException("release {$version} is not staged");
    }

    $tmp = $this->currentLink().'.'.bin2hex(random_bytes(4));

    if (! @symlink("releases/{$version}", $tmp)) {
        throw new RuntimeException("could not create the swap symlink at {$tmp}");
    }

    if (! @rename($tmp, $this->currentLink())) {
        @unlink($tmp);

        throw new RuntimeException('could not swap the current symlink');
    }
}

Excerpt from Exile to Exile. Validated game-data releases activate through an atomic symlink swap: every request sees either the prior complete release or the new one, never partial data.

vladislav@rajtik:~$ git log --oneline --career

2022 - now PHP Developer · Freelance (OSVČ) Web apps, REST + user-facing APIs, Livewire, Vue.js, PostgreSQL.
2021 - 2022 PHP Developer · UBK s.r.o. Laravel development across multiple client products.
2018 - 2021 Developer · Freelance CMS for an international company. SCRUM, English-only daily comms. PHP 8, Nette, MariaDB.
2016 - 2018 Developer · MySolutions s.r.o. Dating platforms across 12 countries. SCRUM, English-only standups. PHP, Nette, MySQL.
earlier Embedded, IoT & systems engineering Firmware in C (AVR/PIC), telemetry APIs, Linux/Windows servers; Delphi/FoxPro business apps.

vladislav@rajtik:~$ cat stack.txt

PHPLaravelREST API designPostgreSQLPest / PHPUnitLivewireVue.jsNetteElasticSearchIoT / LoRaWANembedded CLinux

English: working proficiency, years of English-only daily standups. Czech: native.

vladislav@rajtik:~$ contact --now

vladislav@rajtik:~$ cv --download

vladislav@rajtik:~$