Backend
- PHP 8+
- Symfony 7 (Messenger, Doctrine)
- Laravel
- REST API
- RabbitMQ
- legacy Symfony 3.4
Wszystkie aktualizacje frameworka w swoim systemie zrobiłem sam: od Symfony 5.3 / PHP 8.0 do Symfony 7.4 / PHP 8.5.
Architekt rozwiązań i technical leader
Od 15 lat zamieniam problemy biznesowe w systemy, które da się rozwijać latami. Zaczynam od zrozumienia domeny, dobieram architekturę do skali i do zespołu, a potem prowadzę ludzi przez jej wdrożenie — aż do produkcji i dalej.
final class StartOnboardingHandler
{
public function __construct(
private ProcessRepository $processes,
private MessageBusInterface $bus,
) {}
public function __invoke(StartOnboarding $command): void
{
$process = Process::start(
$command->employeeId,
$command->template,
);
$this->processes->save($process);
$this->bus->dispatch(new ProcessStarted($process->id()));
}
}Najgłębiej wchodzę w backend, ale dowożę całe funkcje — od modelu domeny po konfigurację wdrożenia.
Wszystkie aktualizacje frameworka w swoim systemie zrobiłem sam: od Symfony 5.3 / PHP 8.0 do Symfony 7.4 / PHP 8.5.
Zaprojektowałem silnik procesów na DDD i CQRS od zera i współprojektowałem migrację monolitu do 36 mikroserwisów.
Od półtora roku dowożę frontend swoich funkcji w panelu administracyjnym; własne produkty buduję w Next.js.
W architekturze mikroserwisów ponad 30 baz: każda usługa z własną bazą i własną kopią danych.
Wprowadziłem Behat jako standard testowania w zespole — zestaw urósł do ponad 2300 scenariuszy.
Definicje Kubernetes dopisuję razem z funkcją — zmiana wychodzi z konfiguracją wdrożenia w jednym pull requeście.
Wprowadziłem Claude Code do pracy zespołu: skille do cyklu Jira → branch → pull request → review.
Języki: polski (ojczysty), angielski B2 — codzienna komunikacja techniczna, rozmowy z klientami z USA
Najciekawsze problemy, które rozwiązywałem. Bez nazw firm — liczy się, co i jak zrobiłem.
Silnik procesów HR w platformie SaaS do onboardingu pracowników — preboarding, onboarding i offboarding dla około 170 aplikacji klientów.
Moja rola: architekt i główny autor
Efekt: Ponad 7000 commitów i 2300+ scenariuszy Behat; system rozwija dziś sześcioosobowy zespół.
Funkcje oparte na modelach językowych — dla klientów platformy i dla pracowników firmy.
Moja rola: projektant i wykonawca
Platforma zakupu reklam w zewnętrznych sieciach reklamowych, która codziennie padała przy 50 tys. aktywnych użytkowników dziennie.
Moja rola: tech lead
Efekt: Z 50 tys. do 3 milionów aktywnych użytkowników dziennie.
Ta sama platforma SaaS — działy HR klientów modelują w niej własne procesy bez udziału programistów.
Moja rola: projektant modelu danych
Zespół produktowy 8–10 inżynierów.
Moja rola: inicjator i autor narzędzi
Efekt: Zespół przyjął skille jako standard pracy.
Aplikacja PWA do onboardingu i zaangażowania pracowników dla polskiego klienta.
Moja rola: lider zespołu
VibeAudit Audyt aplikacji zbudowanych z AI
Paweł Maj — Jestem twórcą tej usługi i osobiście prowadzę każdy audyt.
Lovable, Bolt, Replit, Cursor, Claude Code — z nimi aplikacja powstaje szybko, ale nikt nie patrzy, gdzie leży baza, kto widzi sekrety i czy logowanie da się obejść. Przeglądam kod i infrastrukturę według 85 punktów kontrolnych w 8 obszarach, opartych na OWASP Top 10 i ASVS.
Każde znalezisko sprawdzam w kodzie, zanim trafi do raportu. Płacisz za ocenę seniora: co naprawdę Cię dotyczy, co jest groźne dziś, a co może poczekać.
Stała cena od 599 zł, ustalona przed startem.
Zobacz ofertę na vibeaudit.pl
Projekt, praca, audyt albo po prostu pytanie — odpisuję zwykle tego samego dnia.