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