JobTraq

A JobTraq naponta frissülő kimutatást készít az álláshirdetésekről, hogy megmutassa a különböző IT munkakörök iránti keresletet és fizetési sávokat.

A projekt egy admin felületből és egy publikus frontend részből áll.

Az admin felületen

  • meg lehet határozni az álláshirdetési oldalakon figyelt kulcsszavakat,
  • be lehet állítani a hirdetések csoportosításának működését,
  • híreket lehet írni,
  • a hírekre érkező hozzászólásokat moderálni,
  • monitorozni a rendszer működését, szükség szerint manuálisan frissítéseket kiadni.

A backend rendszer felel ezen felül továbbá

  • az álláshirdetéseket tartalmazó weboldalak átvizsgálásáról,
  • a frontendnek szükséges API biztosításáról.

A frontend oldalon

  • a látogatók megtekinthetik a mai és korábbi riportokat,
  • láthatják az álláshirdetések számát, csoportosítva a különböző bérsávokat,
  • megtekinthetnek híreket az oldallal kapcsolatban, ezekhez hozzászólásokat küldhetnek be,
  • olvashatnak a projektről és a rendszer működéséről,
  • PWA-ként telepíthetik mobiltelefonjukra, mint egy mobilalkalmazást.

Technológia

A projekt teljesen open source, megtekinthető GitHubon.

Mind a fejlesztést, mind az üzemeltetést én végzem.

Backend/admin felület

  • Laravel 10, a framework lehető legtöbb feature-jét kihasználva
    • eventek
    • request objektumok
    • resource controllerek
    • queue workerek, aszinkron futó jobokkal
    • cli parancsok
    • service-alapú megközelítés: a feature-ök servicekbe vannak szervezve, DI-nel elérve
    • saját logger és logging channel
    • db seederek
  • Kódminőség és stabilitás
    • PHPUnit tesztek
    • Laravel Pint (PHP Coding Standards fixer)
    • apidoc.js API dokumentáció
  • Saját frontend
    • Vite
    • SASS
    • Bootstrap
    • FontAwesome
    • DataTables
  • Autentikáció, authorizáció, védelem
    • Laravel Fortify
    • spatie/laravel-permission - szerepkörök és jogosultságok
    • API végpontokon alaposan átgondolt rate limitek
  • Laravel Sail

Publikus frontend

  • Angular 16
  • PWA
  • SEO-ready
    • Server Side Rendering
    • Meta és OpenGraph tagek
    • SVG és WebP assetek
  • TypeScript
  • Kódminőség és stabilitás
    • Karma, Jasmine komponens tesztek
    • eslint
    • prettier
  • Saját design
    • SASS
    • Bootstrap
    • FontAwesome
    • ngx-charts
  • Saját, GDPR-ready cookie consent Google Analytics támogatással

E2E tesztek

  • Cypress

CI/CD

  • GitHubon tárolt forráskód
  • GitHub Actions
    • PHPUnit tesztek automata futtatása
    • Cypress tesztek kézi futtatása (teszt környezeten)
  • Deployerrel indítható, automatizált teszt és éles deploy (~zero downtime)

Üzemeltetés

  • Saját VPS (Ubuntu 22.04)
  • nginx webszerver
  • PHP 8.1 FPM
  • Redis cache és session storage
  • Supervisord által felügyelt Laravel queue worker
  • pm2 által felügyelt Angular SSR server
  • MySQL adatbázis
  • Zabbix, UptimeRobot és Uptime Kuma monitoring
  • Cloudflare CDN és DDoS védelem
  • MailCow e-mail szerver (SPF, DKIM, DMARC, Rspamd)
  • Automata off-site backupok (mysqldump, SFTP)
  • Eddig 100% availability

Az initial commit július 25-én került be, szeptember 13-án már releaseltem az első éles verziót, ami a fenti írásnak megfelelőeket tartalmazta.

jobtraq.hu
JobTraq