Przejdź do głównej zawartości

Przepisy na Node.js/Express

Twój serwer Express działa lokalnie, ale w chwili, gdy uderza w niego prawdziwy ruch, obsługa błędów nie istnieje, połączenia z bazą danych wyciekają, a nikt nie pomyślał o rate limitingu. Te przepisy to naprawiają — każdy prompt produkuje zahartowany produkcyjnie kod Node.js, który radzi sobie z problemami świata rzeczywistego pomijanymi przez tutoriale.

  • Prompty na scaffolding API z prawidłowym middleware, walidacją i obsługą błędów
  • Przepisy na integrację z bazą danych z poolingiem połączeń i migracjami
  • Wzorce uwierzytelniania z odświeżaniem JWT i RBAC
  • Przepisy na testy i wdrożenie pod kątem gotowości produkcyjnej

Scenariusz: Zaczynasz nowy serwis i potrzebujesz struktury projektu, która skaluje się ponad 10 tras, nie stając się niemożliwą do utrzymania.

Oczekiwany output: Scaffold projektu z architekturą czterowarstwową, kontener DI, health check, graceful shutdown i testy.


Przepis 2: Zbuduj CRUD API z walidacją i obsługą błędów

Dział zatytułowany „Przepis 2: Zbuduj CRUD API z walidacją i obsługą błędów”

Scenariusz: Potrzebujesz API użytkowników z porządną walidacją wejścia, spójnymi odpowiedziami błędów i typowanymi ciałami request/response.

Oczekiwany output: Route handlery, schematy Zod, middleware walidacji, error handler, narzędzie catchAsync i testy supertest.


Przepis 3: Uwierzytelnianie JWT z rotacją refresh tokenów

Dział zatytułowany „Przepis 3: Uwierzytelnianie JWT z rotacją refresh tokenów”

Scenariusz: Twoje API potrzebuje uwierzytelniania, które nie zmusza użytkowników do ponownego logowania co 15 minut, ale też nie używa długożyjących tokenów.

Oczekiwany output: Trasy auth, narzędzia JWT, middleware auth, model refresh tokena i testy bezpieczeństwa.


Scenariusz: Twoje publiczne API jest masakrowane przez scrapery, a ty nie masz żadnej ochrony przed nadużyciami.

Oczekiwany output: Fabryka rate limitera, integracja z Redis store, konfiguracje per-endpoint, nagłówki odpowiedzi i testy.


Przepis 5: Połączenie z bazą danych przez Prisma i transakcje

Dział zatytułowany „Przepis 5: Połączenie z bazą danych przez Prisma i transakcje”

Scenariusz: Twoje zapytania do bazy są rozsiane wszędzie bez poolingu połączeń, bez transakcji, a migracje uruchamiasz ręcznie.

Oczekiwany output: Schemat Prisma, singleton klienta, wzorce transakcji, skrypt seed i testy transakcji.


Scenariusz: Twoje API przetwarza wysyłki obrazów synchronicznie, blokując odpowiedź na 30 sekund. Potrzebujesz przetwarzania w tle.

Oczekiwany output: Konfiguracja kolejki, 3 procesory, trasa dashboardu, zaplanowane zadania, graceful shutdown i testy.


Przepis 7: Komunikacja w czasie rzeczywistym przez WebSocket

Dział zatytułowany „Przepis 7: Komunikacja w czasie rzeczywistym przez WebSocket”

Scenariusz: Twoja aplikacja czatu odpytuje serwer co 2 sekundy. Potrzebujesz wiadomości w czasie rzeczywistym.

Oczekiwany output: Konfiguracja Socket.io, handlery pokojów, system obecności, potwierdzanie wiadomości i testy.


Przepis 8: Strukturalne logowanie ze śledzeniem żądań

Dział zatytułowany „Przepis 8: Strukturalne logowanie ze śledzeniem żądań”

Scenariusz: Twoje logi produkcyjne to instrukcje console.log bez struktury, bez korelacji i bez sposobu na prześledzenie żądania między serwisami.

Oczekiwany output: Konfiguracja Pino, middleware żądań, wzorzec child loggera, reguły redakcji i testy.


Scenariusz: Twoje API jest na żywo z płacącymi klientami i musisz dostarczyć breaking changes bez psucia ich integracji.

Oczekiwany output: Wersjonowany router, adnotacje OpenAPI, konfiguracja Swagger UI, middleware deprecation i testy.


Przepis 10: Upload plików ze strumieniowaniem i walidacją

Dział zatytułowany „Przepis 10: Upload plików ze strumieniowaniem i walidacją”

Scenariusz: Twój endpoint uploadu plików ładuje cały plik do pamięci, wykłada się na plikach powyżej 100 MB i akceptuje dowolny typ pliku.

Oczekiwany output: Trasa uploadu, strumieniowanie do S3, przetwarzanie obrazów, skanowanie antywirusowe, zadanie czyszczące i testy.


Scenariusz: Twoja baza danych jest miażdżona przez powtarzające się identyczne zapytania. Strona listy produktów wykonuje to samo zapytanie 10 000 razy na minutę.

Oczekiwany output: CacheService, middleware, logika inwalidacji, skrypt rozgrzewający, endpoint monitorowania i testy.


Przepis 12: Docker i CI/CD do wdrożenia produkcyjnego

Dział zatytułowany „Przepis 12: Docker i CI/CD do wdrożenia produkcyjnego”

Scenariusz: Twoja aplikacja Node.js wdraża się przez SSH i ręczne npm install na serwerze. Czas na konteneryzację i automatyzację.

Oczekiwany output: Dockerfile, pliki compose, workflow GitHub Actions, skrypt migracji i strategia rollbacku.