Back to portfolio Wróć do portfolio
Personal Project · Job Offer Aggregator Projekt osobisty · Agregator ofert pracy 2026

KŻ-Panel

A job offer aggregator with an integrated recruitment pipeline - automatically scrapes offers from multiple sources and lets you track your applications end-to-end. Agregator ofert pracy ze zintegrowanym pipeline'em rekrutacyjnym - automatycznie scrapuje oferty z wielu serwisów i pozwala śledzić aplikacje od pierwszego kontaktu do oferty.

About this project O projekcie

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.

Key features Kluczowe funkcje
  • 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
ArchitectureArchitektura
Frontend
Angular 20 + NgRx + RxJS
Backend
NestJS + Node.js
Scraper
Node.js microservice
Realtime
Socket.IO WebSocket
Database
PostgreSQL + TypeORM
Scheduler
@nestjs/schedule + cron
Infra
Docker + Nginx Proxy Manager
Technologies Technologie
Angular NestJS PostgreSQL NgRx WebSocket TypeORM Docker RxJS