Kad je Čavkunović BP — kompanija koja upravlja mrežom benzinskih pumpi, restoranom, motelom i stambenim objektima u Bihaću — tražila digitalno rješenje, zahtjevi su bili jasni: sve na jednom mjestu, potpuna kontrola, bez skupih licenci.
Zašto bez frameworka?
Svaki PHP framework nosi svoju cijenu — ne finansijsku, nego u obliku naučene arhitekture, verzioniranja, breaking changesa. Za projekat koji treba trajati 5+ godina i koji održava jedan developer, odlučio sam pisati čist PHP 8.4 s PDO-om, vlastitim routerom i template sistemom.
Rezultat: 115 PHP fajlova, 33 tabele u bazi, nula eksternih zavisnosti osim TinyMCE editora za content.
Tri sloja sistema
Sistem je logički podijeljen u tri dijela koji dijele istu bazu:
- Javni web — marketinška stranica, vijesti, usluge, galerija
- Portal korisnika — registracija, narudžbe, rezervacije, Klub+ kartica s QR kodom
- Admin CMS — dostupan na skrivenom URL-u, 2FA prijava, upravljanje svim modulima
Sigurnost kao prioritet
2FA login za admin riješen email PIN-om — ista logika kao bankarstvo. Svaki POST zahtjev verificiran HMAC CSRF tokenom. SQL injection nemoguć zahvaljujući 100% prepared statements. Admin panel dostupan isključivo na konfigurabilnom tajnom slug-u.
Jedan od zanimljivijih bugova: Safari browser gubi session cookie između dva uzastopna POST zahtjeva zbog agresivnog SameSite=Lax tretmana. Riješeno premještanjem session_regenerate_id() na pravo mjesto u flow-u i povećanjem auto-submit timeoutu na 600ms.
Šta je izgrađeno
Za tri mjeseca: shop s email notifikacijama, karijere modul s CV uploadom i praćenjem statusa, motel rezervacije, stambeni objekti s PDF katalozima, Apple Wallet pkpass integracija za Klub+ kartice, Web Push notifikacije, backup procedura direktno iz admina.
Projekt je uskoro u produkcijskom radu na cavkunovic.ba.