// Studija slučaja

Glass Service Bošnjace — sajt auto-staklarske radnje kod Leskovca

Auto staklo ne puca po dogovoru. Čovek zove istog dana, sa puta, sa telefona u ruci. Ceo sajt je građen oko te tri činjenice: da broj bude na dohvat ruke sa svake strane, da se ponuda može zatražiti bez cenovnika koji ionako ne bi bio tačan, i da radnju nađe onaj ko kuca ime svog grada, a ne ime radnje.

Klijent
Glass Service Bošnjace
Delatnost
Auto stakla — zamena, reparacija, ADAS kalibracija
Područje
Bošnjace i Leskovac, Jablanički i Pčinjski okrug
Tip
Višestrani sajt sa formom za ponudu
Tehnologije
PHP 8.3 · Nginx · MariaDB · PHPMailer
Status
Živ sajt, u aktivnom održavanju
Naslovna strana sajta Glass Service Bošnjace sa naslovom o zameni auto stakala u Leskovcu
Naslovna — „Auto Stakla Leskovac, profesionalna zamena i reparacija"

Čime se Glass Service Bošnjace bavi

Glass Service Bošnjace je auto-staklarska radnja u Bošnjacu, u selu na putu između Leskovca i Lebana. Radi ono što ime kaže: menja vetrobranska, bočna i zadnja stakla, reparira pukotine i tragove kamena, polimerizuje farove i kalibriše ADAS kamere posle zamene stakla. Radnja je registrovana 2011. godine.

Dve stvari iz tog posla odredile su ceo sajt. Prva je da klijent skoro nikad ne bira mirno — staklo je puklo jutros, čovek stoji pored puta i treba mu neko danas. Druga je da veliki deo posla ide preko osiguranja, pa polovina prvog razgovora nije o staklu nego o papirima: da li polisa pokriva, ko popunjava prijavu, ko naplaćuje od osiguravajuće kuće.

Uz to, radnja izlazi na teren. Pokriva Jablanički i Pčinjski okrug i ide dalje ka Nišu, Prokuplju, Pirotu i Vranju. To za sajt znači jednu neprijatnu istinu: čovek iz Vlasotinca ne kuca „auto stakla Bošnjace". Kuca „auto stakla Vlasotince". Sajt koji postoji samo na jednoj adresi za njega praktično ne postoji.

Na sajtu stoji i članstvo u evropskoj mreži Automotive Glass Experts, kao i doživotna garancija na ugradnju. To su uslovi radnje i tako su na sajtu i ispisani — kao deo ponude, ne kao naša merenja.

Šta je trebalo rešiti

Zahtev nije bio „napravi sajt za servis", nego pet konkretnih stvari:

  • Telefon na jedan klik, sa svake strane. Ne u futeru, ne posle skrola. U zaglavlju, kao dugme, i na telefonu i na računaru.
  • Ponuda bez cenovnika. Cena stakla zavisi od modela, verzije stakla, senzora, grejača i kamere iza retrovizora. Objavljen cenovnik bi bio ili netačan ili beskoristan, pa je trebalo naći način da se prikupi dovoljno podataka za pravu cenu.
  • Osiguranje objašnjeno jezikom vozača. Šta pokriva polisa stakala, šta kasko, ko popunjava papire i ko koga naplaćuje.
  • Vidljivost po gradovima, a ne po imenu radnje. Pretraga ide na „auto stakla Leskovac", „zamena šoferšajbne", „staklar Vranje".
  • Sve to na telefonu, na mobilnoj vezi. Posetilac je bukvalno pored puta. Sajt koji se učitava pet sekundi je sajt koji se zatvori.

ADAS je bio poseban slučaj. Savremena vozila imaju kameru i senzore uz vetrobran, i posle svake zamene stakla ti sistemi moraju ponovo da se kalibrišu. Vozači to sve češće traže kao zasebnu uslugu i kucaju je kao zaseban pojam — pa je i na sajtu morala da dobije zaseban prostor, a ne fusnotu ispod zamene stakla.

Kako je sajt sklopljen

Glavna navigacija ima pet stavki — Početna, Usluge, Osiguranje, O nama, Kontakt — plus broj telefona i istaknuto dugme za online ponudu. Pet stavki je granica posle koje meni na telefonu postaje spisak.

Usluge su namerno jedna duga strana sa sidrima, a ne sedam tankih strana. Sedam sekcija: uvod, šta sve radimo, kako izgleda proces od poziva do garancije, ADAS kalibracija, materijali i lepkovi, marke vozila i pitanja. Svaka usluga ima svoje sidro, pa link iz futera ili sa naslovne vodi pravo na svoj deo strane.

Razlog je jednostavan: za sedam odvojenih strana ne postoji sedam različitih tekstova. Postoji jedan posao opisan iz sedam uglova. Sedam tankih strana bi se međusobno kanibalisale u pretrazi i nijedna ne bi imala dovoljno sadržaja da bilo šta znači.

Ono što jeste dobilo posebne strane su gradovi. Trinaest gradskih strana — Niš, Vranje, Prokuplje, Pirot, Aleksinac, Bujanovac, Preševo, Surdulica, Vlasotince, Lebane, Bojnik, Medveđa, Grdelica — plus posebna strana za ADAS kalibraciju i njena leskovačka varijanta. Tu razlika postoji i sadržajno: udaljenost, izlazak na teren, koliko traje dolazak.

Stare adrese iz ranije verzije sajta nisu ostavljene da umru. Za njih postoji poseban skup preusmerenja na nivou servera, pa /vetrobranska-stakla, /reparacija-stakla, /stakla-za-kamione i ostali stari slugovi vode na odgovarajuće sidro na strani usluga umesto u prazno.

Online ponuda — pet koraka umesto cenovnika

Umesto tabele sa cenama, sajt ima formu za online ponudu u pet koraka: podaci o klijentu, izbor usluge, lokacija, podaci o vozilu, pa pregled i slanje.

Prvi korak deli fizička lica od firmi, jer firma traži račun i podatke za fakturu, a fizičko lice ne. Drugi bira uslugu — zamena stakla, reparacija, prelepljivanje, ADAS kalibracija ili polimerizacija farova. Treći pita gde se radi: u servisu ili na adresi klijenta. Četvrti traži marku, model, godište i broj šasije, koji se proverava na sedamnaest znakova, jer je to jedini podatak koji jednoznačno kaže koje staklo ide u to vozilo. Peti pokazuje sve unete podatke pre slanja.

Zašto koraci, a ne jedna duga forma: forma sa dvadeset polja na telefonu se ne popunjava, nego napušta. Pet ekrana sa po nekoliko polja i vidljivim brojačem daje isti podatak, a stiže do kraja.

Uz zahtev se mogu poslati i fotografije oštećenja, što u praksi rešava polovinu razgovora unapred — po slici pukotine se odmah vidi da li ide reparacija ili zamena.

Kad forma stigne, mejl odlazi sa domena radnje, potpisan DKIM ključem tog domena, i sleće u njihovo redovno sanduče. To nije kozmetika: poruka koju šalje sajt, a potpisuje je neko treći, redovno završava u nepoželjnoj pošti. Ovde je isprobano punim slanjem, sa svim poljima, i praćeno do statusa isporuke.

Strana koja je postojala, a nije

U jednoj od redovnih provera flote ispostavilo se da je strana Usluge bila prazan omotač. Zaglavlje, poziv na akciju i futer — a između njih ništa. Folder sa sekcijama te strane nikad nije bio u repozitorijumu i nije postojao ni u rezervnoj kopiji, pa je PHP include tiho padao.

Posledica je bila veća nego što zvuči: devetnaest adresa je vodilo tamo. Četrnaest starih slugova sa preusmerenja, ADAS preusmerenje i sva sidra iz futera. Sve je vraćalo uredan odgovor 200 i sve je bilo prazno.

Ovo je vrsta kvara koju rutinska provera ne vidi. PHP include koji ne nađe fajl ne obara stranu — samo je ne ispiše. Zaglavlje radi, futer radi, sertifikat je uredan, odgovor je 200. Iz svake automatske provere sajt izgleda zdravo. Zato provera „vraća li strana 200" nije provera da na toj strani ima sadržaja.

Strana je rekonstruisana od nule, u sedam sekcija, sa sadržajem sklopljenim iz postojećeg teksta radnje — kartica sa naslovne, gradskih strana i strane o osiguranju — pa dopunjenim. Sidra su vraćena, kartice sa naslovne su prevezane na njih, i tek tada su preusmerenja ponovo imala smisla.

Forma koja je slala tri mejla

Ista provera izvukla je i drugi problem: kontakt forma je slala tri mejla po jednom slanju, a forma za ponudu dva.

Uzrok nije bio u formi nego u tome odakle se učitava njena skripta. Ista datoteka se emitovala sa tri mesta — kao gol tag unutar sekcije, iz futera sa oznakom verzije, i kroz petlju u omotaču strane. Tri učitavanja iste skripte znače tri slušaoca na istom dugmetu, pa jedan klik pravi tri zahteva i tri poruke u sandučetu.

Na dve strane isti obrazac je davao drugi simptom: dve različite skripte deklarisale su promenljivu istog imena, brauzer je javio grešku u sintaksi i cela strana je ostala bez JavaScripta.

Rešenje je bilo dosadno i zato dobro: jedna jedina tačka emisije. Sve skripte idu iz futera, sa defer i sa verzijom iz jedne konstante; goli tagovi u sekcijama i petlje po strani su uklonjeni. Provereno je merenjem u brauzeru — tačno jedan zahtev po slanju.

Uz to je popravljen i sam handler forme. Slao je sa naloga koji ne postoji, gađao putanju koju globalno pravilo servera blokira sa 403, a biblioteka za slanje pošte uopšte nije bila instalirana. Tri odvojena kvara, jedan vidljiv simptom: „forma ne radi".

Dijakritike koje su nestale sa trinaest strana

Trinaest gradskih strana bilo je bez naših slova. Ne delimično — potpuno. „Ni" umesto „Niš", „oferajbna" umesto „šoferšajbna", „Doivotna" umesto „Doživotna", „Bonjace" umesto „Bošnjace". Neko je u nekom ranijem prolazu propustio te fajlove kroz filter koji izbacuje sve što nije osnovni ASCII.

Vraćeno je rečnikom zamena, oko četiri stotine i trideset ispravki, i to ne samo u vidljivom tekstu nego i u naslovima strana, opisima i strukturiranim podacima — jer ime firme sa pogrešnim slovima u schema.org bloku je za pretraživač drugo ime.

Zamka koja je pri tome iskočila vredi pamćenja. Zamena po granici reči se oslanja na pojam „slovo", a taj pojam u tom alatu obuhvata samo osnovnu latinicu. Kad se „Niu" ispravi u „Nišu", pravilo koje traži samostalno „Ni" ponovo pogađa isti tekst i pravi „Nišš". Ispravka je morala da ide u dva prolaza — prvo zamene, pa čišćenje udvojenih slova nastalih od prvog prolaza.

Brzina

Pre optimizacije sajt je na PageSpeed testu za telefon imao ocenu 67, sa najvećim vidljivim elementom koji se iscrtava posle 5,6 sekundi. Posle: ocena 92, isti element na 2,9 sekundi, prvi sadržaj sa 4,4 na 2,2 sekunde. Na računaru 95 na 99.

Nije bilo jednog velikog zahvata, nego četiri obična:

  • Ikonice, mrežni fontovi i biblioteke za karusel i raspored učitavali su se blokirajuće u zaglavlju. Prebačeni su na učitavanje koje ne zaustavlja iscrtavanje.
  • Pet strana je učitavalo jQuery, Bootstrap i karusel po drugi put, iako ih zaglavlje već povlači sa odloženim izvršavanjem. Duplikati su izbačeni.
  • Glavna slika na naslovnoj dobila je najavu učitavanja sa visokim prioritetom, odvojeno za telefon i za računar.
  • Slike su prebačene u savremene formate — jedna od većih je sa 136 KB pala na 64 KB, a u AVIF formatu na 14 KB. Server sam bira format prema tome šta brauzer prihvata.

Na serveru radi Brotli kompresija i keš gotovih strana, a osvežavanje se kontroliše jednom konstantom u zaglavlju koja se povećava pri svakoj izmeni stila ili skripte. Bez toga posetilac koji je već bio na sajtu vidi stari izgled i misli da izmena nije ni urađena.

Pristupačnost je otišla sa 91 na 96, i to iz razloga koji je bio komičan dok se nije razumeo: automatski test je merio kontrast usred CSS prelaza, dok kartica menja boju, i prijavljivao pad koji ljudsko oko nikad ne vidi. Rešeno je ograničavanjem liste svojstava koja se uopšte animiraju.

SEO i lokalna vidljivost

Sajt nosi pet blokova strukturiranih podataka: AutoRepair, WebSite, WebPage, LocalBusiness i putanju sa mrvicama na podstranama. U njima su adresa, koordinate radnje, radno vreme po danima i katalog usluga — dakle podaci koje pretraživač može da pokaže pre nego što posetilac uopšte klikne.

Vlasništvo nad sajtom u Google Search Console-u potvrđeno je preko DNS zapisa, što je najotpornija metoda — ne zavisi od datoteke u korenu koju neko može da obriše pri sledećem prebacivanju sadržaja.

Najzanimljiviji nalaz nije bio na sajtu. Vhost je slušao samo IPv4 iako zona domena ima i IPv6 zapis. Deo srpskih mobilnih mreža daje IPv6 prvi, pa se saobraćaj sa tih mreža nikad nije spuštao na pravi vhost. To se sa sopstvenog računara ne vidi — sajt radi savršeno, dok korisniku jednog operatera ne radi uopšte. Dodato je slušanje na IPv6 i time zatvoreno.

Van samog sajta, sređeni su i profili koji hrane lokalne rezultate. Bing je radnju vodio kao privremeno zatvorenu, na adresi u Plandištu — oko četiri stotine kilometara severno, zbog pogrešnog geokodiranja. Podaci su uvezeni iz Google profila sa tačnom adresom i statusom. To nije sitnica koliko izgleda: Bing napaja lokalne preporuke u ChatGPT-u i Copilotu, pa firma koja je tamo „zatvorena" ne postoji ni u odgovorima tih alata.

Na kontakt stranu je dodato dugme koje vodi pravo u formu za pisanje Google recenzije, pored dugmeta za otvaranje mape. Zadovoljan klijent koji tek treba da nađe gde se ostavlja recenzija je klijent koji je neće ostaviti.

Kolačići, pravni tekstovi i bezbednost

Sajt ima traku za kolačiće sa dva izbora — prihvatanje i samo neophodni — i taj izbor se pamti i poštuje pri sledećoj poseti. Analitika radi sa upravljanjem pristankom u režimu u kome je merenje unapred isključeno dok posetilac ne pristane. Baner koji nudi samo dugme „prihvatam" nije baner, nego formalnost.

Politika privatnosti i uslovi korišćenja pisani su za ovu radnju, ne prekopirani. U njima stoji šta se tačno prikuplja kroz formu — ime, telefon, mejl, podaci o vozilu i opis kvara — da je online ponuda orijentaciona dok se vozilo ne pogleda, da je rok za odgovor na reklamaciju osam dana u skladu sa Zakonom o zaštiti potrošača, i da je za sporove nadležan sud u Leskovcu.

Sa strane servera: ocena A+ na SSL Labs testu, domen na listi za obavezno šifrovanje ugrađenoj u brauzere, osam bezbednosnih zaglavlja i CAA zapis u DNS-u koji dozvoljava izdavanje sertifikata samo jednom telu. Poslednje je pet minuta posla i sprečava scenario u kome neko drugi izda važeći sertifikat za tuđi domen.

Sve strane prolaze W3C validator bez ijedne greške. Do toga se stiglo dosadnim poslom — izmeštanjem stilova iz tela strane u zasebne datoteke, ispravljanjem elemenata koji po specifikaciji ne smeju da stoje jedan u drugom, i dodavanjem naslova okvirima sa mapom.

Šta klijent na kraju ima

Sajt na sopstvenom domenu, pisan u PHP-u, bez WordPress-a i bez ijednog dodatka koji treba ažurirati svakih mesec dana. Nema mesečne pretplate platformi i nema komponente koja se raspadne pri sledećem ažuriranju.

Praktično, dan izgleda ovako. Čovek kome je jutros pukla šoferšajbna nađe broj telefona u gornjem uglu i pozove. Ko ne voli da zove, popuni ponudu u pet koraka i ona stigne u sanduče radnje sa markom, modelom, brojem šasije i slikom pukotine — dovoljno da se odgovori cenom, a ne pitanjem. Ko traži „auto stakla Vranje" nailazi na stranu koja se bavi Vranjem, a ne na naslovnu koja se bavi svime.

Odvojeno od javnog sajta, ista radnja koristi i interni sistem za račune, lager, termine i knjigu evidencije prometa. On stoji iza prijave, ima tri nivoa pristupa i nije deo ovog sajta — posetilac ga nikad ne vidi. Pomenut je ovde samo da bude jasno šta je javni sajt, a šta nije.

Sajt je i dalje u aktivnom održavanju. Ono što se menja, menja se na živom sajtu, sa rezervnom kopijom pre svake izmene i proverom u pravom brauzeru posle nje — jer je ovaj projekat već pokazao da strana ume da vraća uredan odgovor i da pri tome bude prazna.

// Sajt uživo

Glass Service Bošnjace

Zamena i reparacija auto stakala, ADAS kalibracija i izlazak na teren — Leskovac, Bošnjace i okolina.

glassbosnjace.rs

Često postavljana pitanja

Zašto na sajtu nema cenovnika za zamenu stakla?
Zato što bi bio netačan. Cena zavisi od modela vozila, verzije stakla, senzora, grejača i kamere iza retrovizora — dva ista modela iz iste godine ume da imaju različito staklo. Umesto cenovnika stoji forma koja prikuplja marku, model, godište i broj šasije, pa se na osnovu toga daje prava cena.
Zašto ADAS kalibracija ima svoj prostor na sajtu?
Zato što je vozači traže kao zasebnu uslugu. Savremena vozila imaju kameru i senzore uz vetrobran, i posle svake zamene stakla ti sistemi moraju ponovo da se kalibrišu da bi radili kako treba. Ko to traži, kuca baš taj pojam — pa mora da postoji strana koja se njime bavi, a ne rečenica na dnu neke druge.
Čemu posebne strane za trinaest gradova?
Zato što ljudi u pretragu kucaju ime svog grada, a ne ime radnje. Strana za Vranje govori o izlasku na teren do Vranja, udaljenosti i vremenu dolaska — dakle o onome što tog posetioca zanima. Nisu kopije jedne strane sa zamenjenim imenom mesta, jer takve strane pretraživač prepozna i spusti.
Može li vlasnik sam da menja sadržaj?
Ovaj sajt nema CMS panel — izmene idu kroz nas. To je bila svesna odluka: sadržaj auto-staklarske radnje se menja retko, a panel bi doneo stalnu obavezu ažuriranja i dodatnu površinu za napad koje ovde nema. Kad zatreba nova usluga ili novi grad, to je izmena od pola sata.
Zašto PHP, a ne WordPress?
Zbog održavanja. WordPress sajt sa temom i pet-šest dodataka zahteva redovno ažuriranje, i svako od njih je potencijalni kvar ili rupa. Ovde nema dodataka koji mogu da otkažu, a sajt se lako preseli — kod i sadržaj stoje na serveru i mogu se prekopirati.
Da li sajt radi kako treba na telefonu?
Radi, i to je bio uslov od početka, jer najveći deo posetilaca dolazi sa telefona i to sa mobilne veze. Posle optimizacije se glavni sadržaj naslovne iscrtava za oko tri sekunde na testu za telefon, a broj telefona i dugme za ponudu stoje u zaglavlju na svakoj strani.

Treba vam ovakav sajt?

Recite mi čime se bavite i šta sajt treba da uradi za vas — dobijate fiksnu ponudu i rok, u pisanoj formi.

Pozovi