← Powrót / Projekty / Aplikacja Urlopy
Realizacja 2025

Aplikacja Urlopy

Next.js 16 + Socket.IO + Traefik — produkcyjny system HR dla działów kadrowych.

Rok
2025
Typ
Realizacja

Skąd się wziął projekt

Aplikacja Urlopy to multi-tenant SaaS dla działów HR — kompleksowe narzędzie do zarządzania urlopami, zwolnieniami lekarskimi i rozliczeniami godzin. System zapewnia pełną zgodność z polskim Kodeksem Pracy: automatyczne naliczanie dni urlopowych, przenoszenie sald z poprzedniego roku z wygasaniem 30 września, obsługę urlopów na żądanie (do 4 dni w roku) oraz generowanie raportów wymaganych przez prawo pracy. Traefik jako reverse proxy umożliwia obsługę wielu firm na jednej instancji z izolacją per-tenant.

Co było trudne

Firmy zarządzają urlopami w Excelu lub na papierze — to błędy w saldach, brak historii wniosków, trudność z raportowaniem i brak real-time widoczności kto jest na urlopie. Jednocześnie system musi być zgodny z polskim prawem pracy (przenoszenie sald, wygasanie, urlopy na żądanie), obsługiwać wiele firm (multi-tenant) i wysyłać powiadomienia przez kilka kanałów.

Jak to rozwiązałem

Zbudowałem pełno-stackową aplikację Next.js 16 z customowym serwerem Node.js integrującym Socket.IO — standard next start nie obsługuje WebSocketów w produkcji, stąd server.ts binduje HTTP server razem z Socket.IO. shadcn/ui z Neo-Brutalist theme (zero border-radius, grube ramki, twarde cienie) nadaje aplikacji unikalny charakter. better-auth zapewnia sesyjną autentykację z trzema rolami (SUPER_ADMIN, ADMIN, EMPLOYEE). RBAC oparty na wzorcach wildcardowych (np. vacations.*) daje elastyczną kontrolę uprawnień. Powiadomienia działają na trzech kanałach: Socket.IO (real-time), e-mail (Nodemailer) i web push (VAPID).

Wynik

Produkcyjny system HR wdrożony u klientów — obsługuje pełny workflow urlopowy: składanie wniosków, wielopoziomowy approval, powiadomienia real-time, kalendarz z nakładką świąt, eksport raportów PDF i Excel, statystyki departamentowe i multi-tenant deployment przez Traefik.

Masz podobny projekt?

Porozmawiajmy.

Napisz do mnie →