KŻ-Panel is a personal full-stack project built around Angular 20, NestJS and a dedicated scraper microservice. It automatically collects job offers from multiple job boards on a configurable cron schedule, parses structured data (salary ranges, tech stack, remote type, seniority level), and streams real-time scrape completion events over WebSocket. Users configure scrape targets per source and query, browse and filter the aggregated offer feed, and manage their recruitment pipeline - tracking each application through statuses from first contact to final decision. Built to the same production standard as commercial work: NgRx for state management, TypeORM with PostgreSQL, Docker Compose with an external shared database, and Nginx Proxy Manager for routing.
KŻ-Panel to projekt fullstackowy zbudowany w oparciu o Angular 20, NestJS i dedykowany mikroserwis scrapera. Automatycznie zbiera oferty pracy z wielu serwisów według konfigurowalnego harmonogramu cron, parsuje ustrukturyzowane dane (widełki wynagrodzeń, tech stack, tryb pracy, poziom seniority) i strumieniuje zdarzenia zakończenia scrapowania przez WebSocket. Użytkownicy konfigurują źródła i zapytania do scrapowania, przeglądają i filtrują zebrane oferty oraz zarządzają pipeline'em rekrutacyjnym - śledząc każdą aplikację przez kolejne statusy od pierwszego kontaktu do decyzji. Architektura na poziomie produkcyjnym: NgRx do zarządzania stanem, TypeORM z PostgreSQL, Docker Compose z zewnętrzną współdzieloną bazą i Nginx Proxy Manager do routingu.
- Automatic job offer scraping from multiple sources on a cron schedule
- Structured parsing: salary ranges, tech stack, remote type, seniority level
- Real-time scrape completion notifications over WebSocket (Socket.IO)
- Configurable scrape targets per source, query, and location
- Recruitment pipeline with per-application status tracking
- Job offer feed with filtering and dismissal
- JWT authentication with user management
- Three-service Docker Compose stack with external PostgreSQL
- Automatyczne scrapowanie ofert pracy z wielu źródeł według harmonogramu cron
- Strukturalne parsowanie: widełki płacowe, tech stack, tryb pracy, poziom seniority
- Powiadomienia o zakończeniu scrapowania w czasie rzeczywistym przez WebSocket (Socket.IO)
- Konfigurowalne cele scrapowania per serwis, zapytanie i lokalizacja
- Pipeline rekrutacyjny ze śledzeniem statusu każdej aplikacji
- Feed ofert pracy z filtrowaniem i odrzucaniem
- Uwierzytelnianie JWT z zarządzaniem użytkownikami
- Stack Docker Compose z trzema serwisami i zewnętrznym PostgreSQL