Przemysław Zalewski

TypeScript i Node.js od 2017

Programista TypeScript, który pozwala kompilatorowi się kłócić

Dziewięć lat TypeScriptu i Node.js na produkcji: typowane API, Postgres partycjonowany do 300+ GB, zestawy Playwright kodujące kontrole bezpieczeństwa, biblioteki z generykami, które wnioskują zamiast wymagać adnotacji.

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
9lat TypeScriptu, Reacta i Node.js
300+ GBdanych produkcyjnych na platformie, którą prowadziłem
~30%zmergowanych PR w 2026 otworzył agent AI, ~85% z nich przejrzałem
15+lat wydawania oprogramowania

Dlaczego ja

Typy łapiące błędy w miejscu wywołania

Generyki, które wnioskują, discriminated unions zamiast flag, unknown na granicy i Zod tam, gdzie wchodzą dane. Typowana biblioteka narzędziowa z setkami funkcji i pełnymi testami, opublikowana w npm.

Node.js, który przeżywa podatności

Flagi hardeningu przed incydentem, praktyki OWASP dla Node.js, łatki tego samego dnia, gdy spada React2Shell i podobne, przeszukanie własnego kodu pod tę samą klasę błędu.

Dane w skali, nudno

Partycjonowanie Postgresa po tenancie, równoległe pipeline’y żądań, zapis w stałym czasie, wdrożenia blue/green. 300+ GB i miliony zdarzeń na produkcji w platformie ocenionej na 5,0 na Clutch.

Strumienie zamiast odpytywania

Server-sent events do aktualizacji na żywo, strumieniowany HTML do wyniku agentów, WebSockets tam, gdzie się opłacają. Mniej żądań, szybsze pierwsze malowanie.

Dowody

Praca, którą mogę pokazać

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

Platforma list supresji: od MVP do produktu, 300+ GB na produkcji

Problem
Brytyjski wydawca mailingowy potrzebował list supresji w skali terabajtów, z zapisem w stałym czasie i wdrożeniami bez przestoju.
Co zrobiłem
Prowadziłem trzech inżynierów od MVP do pełnej platformy. Partycjonowanie Postgresa po tenancie i liście, równoległe pipeline’y żądań, wdrożenia blue/green. Wypisanie jednym kliknięciem wyszło cztery miesiące przed wymogiem Google i Yahoo.
Efekt
300+ GB i miliony zdarzeń na produkcji, wdrożenia bez przestoju i funkcja compliance gotowa, zanim powstał termin.

300+ GB zespół 3 blue/green

Zobacz też: Full-stack i custom software · E-mail

Typowana biblioteka narzędziowa, setki funkcji, pełne pokrycie testami

Problem
Zespoły wciąż pisały te same helpery z nieco innymi błędami.
Co zrobiłem
Setki funkcji w TypeScripcie z generykami, które wnioskują zamiast wymagać adnotacji, codegen w CI, pełne testy, publikacja do npm.
Efekt
Jedna biblioteka w wielu projektach, typy łapiące błędy w miejscu wywołania.

npm generics codegen

CASA Tier 2 zamienione w zestaw testów Playwright

Problem
Dostęp OAuth do Gmaila wymaga co roku oceny CASA od Google. Kwestionariusz nie zatrzymuje regresji.
Co zrobiłem
Każda kontrola CASA i OWASP ASVS zakodowana jako test Playwright. E2E i regresja wizualna na sześciu przeglądarkach i urządzeniach, na każdym pull requeście.
Efekt
CASA Tier 2 zaliczone, przegląd OAuth Yahoo zaliczony, a coroczny obowiązek stał się ciągłą kontrolą.

CASA Tier 2 OWASP ASVS 6 targetów

Zobacz też: Aplikacje mobilne i desktopowe

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 TypeScript i Node.js, 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

JSON wchodzi, TypeScript wychodzi

Wklej dowolny JSON. Pokaz od razu wnioskuje interfejsy: pola opcjonalne między elementami tablicy, unie literałów, discriminated unions po wspólnym kluczu, nazwy zagnieżdżonych typów, do tego strażnik w runtime i typowany wrapper na fetch. Bez kompilatora, same reguły systemu typów spisane ręcznie.

Ładuję pokaz…

Spróbuj tablicy obiektów, w której część pól brakuje albo różni się typem. Przełącz „rozszerz literały” i „readonly”.

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

Express, Fastify czy coś innego?
Najczęściej Express, bo każdy zespół już go zna, a ekosystem middleware jest nudny w dobrym sensie. Fastify, gdy przepustowość jest wąskim gardłem. Workers, gdy kształt to żądanie i odpowiedź.
Jak ścisły jest Twój TypeScript?
Strict mode, bez any na granicach, unknown plus schemat tam, gdzie wchodzą dane, generyki tam, gdzie usuwają adnotacje, i reguła lintera na wszystko, co nie może być typem.
Jak podchodzisz do walidacji?
Zod na krawędziach: ciała żądań, środowisko, zewnętrzne API. Jeden schemat, jeden wnioskowany typ, jedno miejsce do zmiany.
Monorepo?
Gdy kilka pakietów dzieli typy i wydanie, tak. Gdy to jedna aplikacja, płaskie repo z czytelnymi folderami wygrywa z narzędziami, których nikt nie rozumie.
Testy?
Jednostkowe tam, gdzie siedzi logika, Playwright do end-to-end i regresji wizualnej, a kontrole bezpieczeństwa zakodowane jako testy. W jednym produkcie kontrole CASA Tier 2 od Google chodzą jako zestaw Playwright na każdym PR.
A czysty JavaScript?
Ta sama osoba, ten sam runtime. Kod w przeglądarce bez frameworka, skrypty Node.js, legacy ES5 do ostrożnej modernizacji: wszystko jest na stronie o JavaScripcie, z pokazem event loopu na żywo.
Od kiedy możesz zacząć?
Od listopada 2026. Umów rozmowę, ustalimy pierwszy kamień milowy.
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