Przemysław Zalewski

JavaScript od 2012, przeglądarka i Node.js

Programista JavaScript, który wie, co runtime zrobi za chwilę

Piętnaście lat wydawania oprogramowania, ostatnie dziewięć w JavaScripcie i TypeScripcie po obu stronach przewodu. Piszę kod, który współpracuje z event loopem, zamiast z nim walczyć, z frameworkiem, gdy na to zasługuje, i bez niego, gdy nie.

Dostępny od listopada 2026 · Wrocław, zdalnie

Przemysław Zalewski
  • „someone you can always count on”publiczna rekomendacja na LinkedInie
  • „a true bias for action”CTO klienta, na LinkedInie
  • 15+ latwydawania oprogramowania
  • Bezpłatna rozmowa, bez prezentacji30 minut, potem decydujesz
15+lat wydawania oprogramowania
9lat TypeScriptu, Reacta i Node.js
100 000+graczy Korony Krulów, zbudowanej w dwa tygodnie
30 000równoczesnych użytkowników mojego czatu

Dlaczego ja

Brak frameworka to też opcja

Strona ze strumieniowanym HTML bez frameworka klienckiego, gra ze 100 000+ graczy, API na Workers w zwykłych modułach. Gdy React albo Next.js dodałyby koszt bez wartości, mówię to. Gdy pasują, zobacz stronę o Reakcie.

Legacy, które dalej działa

jQuery, ES5, bundler, którego nikt nie odważa się dotknąć. Modernizuję wycinkami: najpierw testy wokół ryzykownych części, potem moduły, potem typy. Strona nigdy nie gaśnie. Celem zwykle jest TypeScript.

Wydajność, którą da się zmierzyć

Mniej żądań, streaming zamiast odpytywania, praca poza głównym wątkiem, obrazy w odpowiednim rozmiarze. Mierzone danymi prawdziwych użytkowników w PostHogu, nie samym wynikiem Lighthouse.

Jeden język, obie strony

Przeglądarka, Node.js, Cloudflare Workers, Electron, React Native. Ta sama osoba naprawia API i UI w jednym pull requeście, a agenci, z którymi pracuję, trzymają te same reguły po obu stronach.

Dowody

Praca, którą mogę pokazać

Problem, co zrobiłem, efekt. Nazwy klientów tylko tam, gdzie wolno mi ich użyć.

Korona Krulów: satyryczna gra w Reakcie dla 100 000+ graczy, zbudowana w dwa tygodnie

Problem
Wiosna 2020, lockdown, żart, który zasługiwał na grę, zanim się zestarzeje.
Co zrobiłem
React, 400+ akcji, ranking, open source na GitHubie, wydana w dwa tygodnie wieczorów.
Efekt
100 000+ graczy i ~700 wykopów przy premierze.

100 000+ graczy 2 tygodnie open source Otwórz ↗

Zobacz też: React · Gry

Strumieniowanie wyniku agenta w jednym żądaniu HTML, bez frameworka po stronie klienta

Problem
Wynik agenta przychodzi poza kolejnością i trwa. Strona, która czeka na wszystko, wygląda na zepsutą.
Co zrobiłem
Jedna odpowiedź HTML strumieniowana z serwera, sloty wypełniane poza kolejnością w miarę wyników, bez hydratacji, bez frameworka klienckiego.
Efekt
Pierwsze malowanie w milisekundach, reszta dopływa na żywo. Ten sam pomysł napędza pokaz strumienia na stronie Next.js.

strumieniowany HTML bez hydratacji

Zobacz też: Next.js

GovTech 2019: walidacja zdjęcia do dokumentu w przeglądarce, zdjęcie nie opuszcza urządzenia

Problem
Konkurs rządowy wymagał narzędzia sprawdzającego zdjęcia do dokumentów. Wysyłanie twarzy obywateli na serwer było złym domyślnym wyborem.
Co zrobiłem
TensorFlow i OpenCV skompilowane do WebAssembly i uruchomione na urządzeniu wnioskodawcy w mobilnej aplikacji webowej.
Efekt
Walidacja na urządzeniu bez żadnego uploadu, zgłoszona do programu GovTech Polska.

WebAssembly na urządzeniu

Zobacz też: AI i agenci

Jedna noga w drzwiach

Nie czas na projekt? Zacznij mniejszym krokiem.

Dwa sposoby, żeby zobaczyć, jak pracuję, zanim zamówisz sprint. Stały zakres, liczba na piśmie po krótkiej rozmowie.

Audyt kodu JavaScript, tydzień

Czytam repo, CI, testy, bezpieczeństwo i miejsca, których zespół unika. Dostajesz pisemny raport z ustaleniami według ryzyka, plan z kamieniami milowymi i decyzję go/no-go, którą da się obronić. Robiłem taki audyt dla dużego software house’u, zanim jego klienci zobaczyli kod.

Code review jednego pull requesta albo modułu

Przyślij diff, który Cię martwi. W kilka dni dostajesz komentarze do linii, trzy rzeczy, które zmieniłbym najpierw, i werdykt: zmergowałbym czy nie.

Zapytaj o audyt Najpierw bezpłatna rozmowa 30 min. Jeśli audyt to złe narzędzie, powiem to na rozmowie.

Pokaz na żywo

Event loop na żywo

Zmień snippet. Uruchamia się w izolowanym module w Twojej przeglądarce, a oś czasu pokazuje prawdziwą kolejność: najpierw kod synchroniczny, potem mikrozadania (Promise.then, queueMicrotask), potem makrozadania (setTimeout), a requestAnimationFrame przed kolejnym malowaniem. Ta kolejność zaskakuje większość kandydatów na rozmowach. Nie powinna zaskakiwać Twojego kodu.

Ładuję pokaz…

Zagnieźdź setTimeout w Promise.then albo dodaj await w środku. Oś czasu odświeża się przy każdym uruchomieniu.

Jak to działa

Trzy kroki od tej strony do działającego projektu.

  1. 1

    Rozmowa 30 minut

    Opisujesz produkt i problem. Ja zadaję pytania, które zadałbym pierwszego dnia. Jeśli nie jestem właściwą osobą, mówię to i wskazuję kogoś, kto jest.

  2. 2

    Zakres na piśmie

    Potem krótki plan na piśmie: co budujemy najpierw, co mierzymy, jak pracujemy i ile to kosztuje. Bez prezentacji.

  3. 3

    Coś do dotknięcia w pierwszym tygodniu

    Pierwszy wycinek wychodzi w pierwszym tygodniu: wdrożony, zmierzony, do przejrzenia. Dalej tempo wyznaczają liczby.

Dopasowanie

Czy to pasuje?

Dobre dopasowanie, gdy

  • Potrzebujesz seniora, który bierze odpowiedzialność za dowiezienie, nie pary rąk
  • Produkt ma wyjść i być mierzony, z product managerem albo bez
  • Współpraca solo albo zespół do czterech osób
  • TypeScript, React, Node.js, Cloudflare, Postgres, PostHog

Raczej nie, gdy

  • Program, który potrzebuje dziesięcioosobowego zespołu dostawcy
  • Stack zbudowany wokół Javy, Pythona albo chmury, której nie sprzedaję
  • Body leasing na godziny bez wpływu na sposób pracy
  • Start przed listopadem 2026

Styl pracy

Jak pracuję

Review jako rzemiosło

Setki przejrzanych pull requestów. Patrzę na produkt i jego powody. Kod jest drugi.

Zero bug policy

Błąd jest naprawiony albo świadomie zamknięty, nigdy odłożony. Alerty i śledzenie błędów w każdym projekcie, więc o problemach dowiaduję się przed klientem.

Agenci pod regułami

Claude Code i Codex pracują na mainie z hookami, bramkami lint i testów. Model podpowiada, kryteria decydują. Każdy PR ma ludzki review, a treści z AI są oznaczone.

FAQ

Pytania, które padają przed umówieniem rozmowy

JavaScript czy TypeScript?
TypeScript do wszystkiego, co żyje dłużej niż weekend, czysty JavaScript tam, gdzie krok budowania kosztowałby więcej, niż oszczędza: małe strony, skrypty, Workers, pokazy jak ten na tej stronie. Oba są w moim codziennym stacku, zobacz stronę o TypeScripcie i Node.js.
Zmodernizujesz stary kod w jQuery albo ES5?
Tak, wycinkami i bez przepisywania od zera. Najpierw zestaw Playwright wokół ścieżek, które zarabiają, potem moduły, potem typy, potem framework, którego potrzebuje produkt. Strona działa przez cały czas.
Budujesz bez frameworka?
Gdy pasuje: strony z treścią, dashboardy z jednym strumieniem HTML, osadzane widżety, funkcje na brzegu. Korona Krulów dotarła do 100 000+ graczy na małym rdzeniu w Reakcie, a strona z wynikiem agentów, którą zbudowałem, strumieniuje HTML bez żadnego frameworka klienckiego.
Node.js po stronie serwera?
Tak: API w Expressie, endpointy strumieniowe, workery i kolejki, Postgres. Flagi hardeningu włączone, zależności przejrzane, reakcja na podatności tego samego dnia. Szczegóły na stronie o TypeScripcie i Node.js i stronie o Cloudflare.
Praca nad wydajnością?
Najpierw pomiar na prawdziwych użytkownikach, potem naprawa trzech rzeczy, które mają znaczenie: kaskady żądań, waga bundla, praca na głównym wątku. Strona o Next.js ma pokaz problemu kaskady na żywo.
Od kiedy możesz zacząć?
Od listopada 2026. Umów rozmowę i przynieś repo albo link do strony, która wydaje się wolna.
Przemysław Zalewski

Sprawdźmy to w 30 minut

Bezpłatna rozmowa 30 minut. Ty przynosisz problem, ja pytania. Bez cen na tej stronie, bo najpierw zakres.

Jeśli nie jestem właściwą osobą, powiem to na rozmowie i wskażę kogoś lepszego.

Po umówieniu: zaproszenie do kalendarza, potem rozmowa. Nic więcej do wypełniania.

Dostępny od listopada 2026 · B2B albo etat · Wrocław, zdalnie