CaptchaAPI
privacy CAPTCHA · EUProof-of-work CAPTCHA, GDPR-first. No tracking, no Google. Ships with its own Laravel package and WordPress plugin.
vladislav@rajtik:~$ whoami
Senior PHP / Laravel Engineer
available now for new contracts
vladislav@rajtik:~$ cat about.md
vladislav@rajtik:~$ ls projects/
Proof-of-work CAPTCHA, GDPR-first. No tracking, no Google. Ships with its own Laravel package and WordPress plugin.
Issue invoices over a clean REST API. Built for developers who'd rather call an endpoint than click through accounting software.
Free Path of Exile 2 companion built with Laravel, React and Inertia: build planner, passive-tree tools, loot-filter generator and shareable builds.
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.
A Czech-language blog where I write about Laravel and day-to-day backend engineering.
vladislav@rajtik:~$ cat packages.json --published
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'); } }
vladislav@rajtik:~$ git log --oneline --career
vladislav@rajtik:~$ cat stack.txt
vladislav@rajtik:~$ contact --now
vladislav@rajtik:~$ cv --download
vladislav@rajtik:~$