// Studija slučaja

AutoSet Niš — sajt za autostakla sa četiri strane za lokalnu pretragu

Čovek kome je kamen pukao vetrobran ne pretražuje dugo. Ukuca „zamena vetrobrana Niš", otvori prvi sajt koji se brzo učita i pozove broj koji vidi na ekranu. Ovaj sajt je pravljen tačno oko te scene — od toga kako su podeljene strane do toga koliko dugo se učitava na mobilnom internetu.

Klijent
AutoSet Niš
Delatnost
Autostakla — prodaja, ugradnja, zamena, reparacija
Područje
Niš i okolina
Tip
Višestrani sajt sa četiri strane za lokalnu pretragu
Tehnologije
HTML · PHP 8.3 · nginx · PHPMailer · Consent Mode v2
Sajt
autoset.rs
Status
Živ sajt, u održavanju
Naslovna strana sajta AutoSet Niš
Naslovna — jedna rečenica umesto naslova, pa usluge i kontakt

Čime se AutoSet bavi

AutoSet je servis i prodavnica autostakala u Nišu. Radi od 2005. godine, kako stoji na strani o firmi. Prodajni prostor i radionica su na Matejevačkom putu 24 u Nišu, sedište je u Svrljigu, a posao je uzak i jasan: vetrobrani, bočna i zadnja stakla, stakla za kombije, kamione i autobuse — prodaja, ugradnja, zamena i reparacija.

To je delatnost u kojoj kupac gotovo nikad ne planira posetu. Kamen sa auto-puta udari u vetrobran u sredu ujutru, ili vozilo osvane obijeno i bez bočnog stakla. Čovek uzme telefon, ukuca uslugu i grad, otvori prvi sajt koji se učita i pozove broj. Između njegovog problema i poziva stoji manje od minuta, i ceo sajt je građen za tih manje od minuta.

Pun pregled ponude stoji na strani sa uslugama, a četiri najtraženije usluge dobile su svaka svoju stranu. Firma na sajtu navodi garanciju do dve godine na staklo i ugradnju, saradnju sa osiguravajućim kućama oko dokumentacije i besplatnu dostavu u Nišu i okolini. To su njihovi uslovi i tako su preneti — sajt ih iznosi, ne izmišlja.

Šta je trebalo rešiti

Zadatak nije bio „napravi prezentaciju firme". Sajt je morao da uradi četiri konkretne stvari:

  • Da se nađe na lokalnoj pretrazi. Ne po reči autostakla, gde se takmiči cela Srbija, nego po upitima koji u sebi nose i uslugu i grad.
  • Da telefon bude na dohvat prsta. Čovek sa pukotinom preko pola vetrobrana ne popunjava formu — on zove. Broj mora da bude vidljiv na svakom ekranu i klikabilan na telefonu.
  • Da poruka sa forme stvarno stigne. Poruka koja nestane u prolazu je izgubljen posao, a forma bez zaštite se za mesec dana pretvori u kantu za smeće.
  • Da se otvara brzo na mobilnom internetu. Najveći deo poseta dolazi sa telefona, često sa puta i sa vezom kakva se zatekne.

Peta stavka je stigla mnogo kasnije i nema veze sa javnim sajtom: lager stakala od preko sedamsto stavki živeo je u knjigovodstvenom programu, a u radnji je trebalo da bude na ekranu, pretraživ, dok kupac stoji za pultom. O tome je posebna sekcija pri dnu.

Struktura — deset strana i čiste adrese

Sajt ima deset strana. Četiri su nosive: naslovna, usluge, o nama i kontakt. Četiri su odvojene strane za pojedinačne usluge. Dve su pravne — politika privatnosti i uslovi korišćenja. Nema bloga, nema vesti, nema sekcije koja se popuni jednom pa zauvek stoji sa prošlogodišnjim datumom.

Naslovna umesto naslova nosi jednu rečenicu: Svakoga dana hiljade ljudi gleda svet kroz stakla koja je ugradio AutoSet. Ispod nje idu četiri kratke oznake — godine iskustva, sertifikat, garancija, dolazak — pa blok Zašto AutoSet? sa šest kartica, pa preporuke, pa kontakt sa formom i sa sve četiri telefonske linije. Meni ima četiri stavke i tu ostaje; sajt sa deset strana ne treba padajuće menije.

Tehnički, strane su obični HTML fajlovi, ali adrese nemaju nastavak — /usluge, a ne /usluge.html. To radi server: try_files traži redom tačan fajl, pa isti sa nastavkom .html, pa PHP verziju. Naslovna je jedina PHP strana, jer ona uvlači zajednički baner za kolačiće. Korist je praktična — ako se jedna strana sutra prepiše u PHP, njena adresa ostaje ista i nijedan link u pretrazi ne pukne.

Četiri strane za četiri pretrage

Ovo je deo koji je AutoSetu najviše vredeo. Jedna strana usluge na kojoj se pomene sve ne rangira ni za šta, jer nema o čemu da bude najbolja. Zato su napravljene četiri odvojene strane, svaka za jedan upit koji čovek stvarno ukuca:

  • Zamena vetrobrana Niš — postupak u četiri koraka od ponude do kontrole zaptivanja, spisak marki koje se drže na stanju, i pitanja koja se najčešće postavljaju: koliko traje, koliko se čeka pre vožnje, kako ide preko osiguranja.
  • Reparacija vetrobrana Niš — dve liste jedna pored druge, šta se može popraviti i šta traži zamenu, pa pet koraka postupka sa smolom i UV lampom, pa tabela koja poredi reparaciju i zamenu po ceni, po vremenu i po tome kada je vozilo spremno za vožnju.
  • Auto stakla Niš — ponuda po tipu stakla i po marki vozila, sa razlikom između originalnog i zamenskog stakla objašnjenom rečima koje kupac razume.
  • Bočna stakla Niš — prednja i zadnja bočna, fiksna trokutasta, stakla za stubove karoserije i za klizna vrata kombija.

Svaka od njih nosi svoja pitanja i odgovore u strukturisanom obliku, pa se deo sadržaja vidi u rezultatima pretrage i pre klika. Najviše saobraćaja nose dve: zamena vetrobrana, jer je to najskuplji i najhitniji zahvat, i reparacija vetrobrana, jer većina ljudi ni ne zna da se mali krater može popraviti umesto da se menja celo staklo. Tabela poređenja na toj strani nije marketing — ona zapravo odgovara na pitanje sa kojim čovek dolazi.

Sve četiri strane su u mapi sajta zajedno sa pravnim stranama, a domen je u Google Search Console-u verifikovan kao domenska svojina preko DNS zapisa, što je najjača verifikacija koja postoji. Sajt je uveden i u Bing Webmaster Tools sa istom mapom.

Telefon, forma i to da poruka zaista stigne

AutoSet ima četiri linije — jednu fiksnu i tri mobilne. Sve četiri stoje u podnožju svake strane i u kontakt bloku, i sve su klikabilne na telefonu. Broj unutar veze ne sme da ima razmake, inače se na nekim telefonima poziv ne pokrene — sitnica koja se otkrije tek kad neko pokuša da pozove sa sajta.

Forma stoji na naslovnoj i na strani sa kontaktom: ime, mejl, telefon, padajući izbor usluge i poruka, uz potvrdu o uslovima i privatnosti. Iza nje je jedan PHP fajl koji radi tri odvojene provere pre nego što uopšte pokuša da pošalje poštu.

  • Mamac. U formi postoje tri skrivena polja koja pravi posetilac nikad ne vidi ni popuni. Ako je bilo koje popunjeno, poruka se odbacuje.
  • Filter linkova. Ako telo poruke sadrži adresu sajta, oznaku za link ili punycode domen, poruka se tiho odbacuje, a pošiljalac dobije uobičajenu potvrdu. Bot koji ne dobije grešku ne pokušava ponovo drugačije.
  • Kočnica po IP adresi. Najviše tri poruke na sat sa iste adrese.

Kočnica broji i neispravne pokušaje, ne samo poslate poruke. To je namerno — bot koji gađa formu retko pogađa ispravan oblik, pa bi brojanje samo uspešnih slanja bilo besmisleno. Cena je što čovek koji tri puta pogreši mejl mora da sačeka, i to je poznat ustupak, ne previd.

Pošta ne ide kroz ugrađenu funkciju jezika nego kroz PHPMailer i pravi nalog za slanje sa autentikacijom, preko šifrovane veze na portu 587. Razlog je prizeman: poruka koju veb server ispali iz sebe nema ni potpis ni istoriju i završava u nepoželjnoj pošti, a poruka poslata kroz nalog na domenu prolazi kroz SPF, DKIM i DMARC proveru i stiže u sanduče. Poslednja provera pravom porukom potvrdila je dostavu, sa odgovorom servera 250.

Kolačići, pristanak i merenje

Baner za kolačiće nije nalepljen preko sajta nego dolazi iz zajedničkog uključivanja koje deli više naših sajtova, pa se održava na jednom mestu. Za AutoSet je prebojen u njihovu paletu — svetloplava sa naglascima, isti font kao ostatak sajta.

Bitan je redosled, ne izgled. Google Consent Mode v2 postavlja podrazumevani odgovor na odbijeno pre nego što se učita bilo šta Google-ovo. Merenje se pali tek posle klika na prihvatanje. Baner nudi i Samo neophodni, izbor se pamti i poštuje pri sledećoj poseti, a analitika se ne pokreće dok pristanka nema.

Jedan detalj odatle pokazuje kako sitnice ulaze u kod. Prebojavanje banera je prvobitno stajalo kao stil upisan direktno u telo strane — radi u brauzeru, ali W3C provera na tome javlja grešku. Izvučeno je u zaseban fajl koji ne blokira prvi prikaz: ista boja, jedna greška manje.

Brzina — merač koji ne blokira prvi prikaz

Na ovom sajtu plafon brzine nije bio ni slika ni kod, nego Google Tag Manager. Šezdesetak kilobajta skripte koju posetilac ne koristi, a koja se izvršava dok on čeka da vidi tekst. Na testu preko usporene mobilne veze to se videlo kao vreme u kojem strana ne reaguje na dodir.

Rešenje je odloženo učitavanje: skripta za merenje se povlači tek posle prve radnje posetioca — skrola, klika, dodira ili pritiska tastera — ili posle pet sekundi, šta pre dođe. Podrazumevano odbijanje pristanka ostaje pre svega toga, pa se redosled saglasnosti ne narušava.

Mereno pre i posle, na mobilnom Lighthouse profilu: ocena performansi sa 74 na 86, ukupno vreme blokiranja sa 368 na 54 milisekunde, najveći prikaz sadržaja sa 4,7 na 4,1 sekundu, pomeranje rasporeda ostalo na nuli. Provera preko Google-ovog živog alata dala je mobilni 76 i desktop 95, uz stotku za pristupačnost, dobru praksu i SEO na oba.

Pošteno je reći i ono što se u tim brojevima ne vidi: sajt nema podatke o stvarnim posetiocima u Google-ovoj bazi merenja, jer nema dovoljan obim saobraćaja. Ocene su simulirane — valjan pokazatelj, ali ne i merenje na hiljadama pravih poseta. Slike i fontovi stoje u godišnjem kešu, stilovi i skripte u nedeljnom.

Kod, bezbednost i pošta

Pun prolaz kroz W3C proveru na svih deset strana krenuo je sa dvadeset sedam grešaka i završio na nuli. Nisu bile dramatične — razmaci unutar telefonske veze, naslov četvrtog nivoa bez trećeg iznad sebe, pogrešno ugnežđen blok, pomenuti stil u telu strane. Nijedna od njih ne obara sajt. Sve zajedno su razlika između koda koji je neko pregledao i koda koji je neko samo pustio da radi.

Na nivou servera: prelazak na šifrovanu vezu je trajno preusmerenje, adresa sa www vodi na osnovnu uz očuvanu putanju, sertifikat se obnavlja sam. Zaglavlja koja brauzeru govore šta sme a šta ne — HSTS, zabrana ugnežđivanja u tuđi okvir, zabrana pogađanja tipa sadržaja, izolacija prozora — postavljena su i proverena. Skriveni fajlovi i rezervne kopije se ne serviraju. Ocena spoljne provere šifrovane veze je najviša.

U DNS zapisima domena stoji ograničenje koje izdavaocima sertifikata izričito kaže ko sme da izda sertifikat za ovaj domen, sa adresom za prijavu pokušaja. Pošta ima SPF, DKIM i DMARC, a politika je pomerena sa karantina na odbijanje — poruka koja se lažno predstavlja kao AutoSet ne završava u nepoželjnoj pošti nego se odbija na ulazu. To nije sitnica za firmu koja sa svog domena šalje ponude i prima upite.

Kvar koji se vidi samo na telefonu

U julu 2026. sajt je prošao kroz kontrolu u pravom pregledaču — svih jedanaest adresa, na desktop širini i na telefonu. Konzola čista, nijedan mrtav link, nijedna polomljena slika, preusmerenja i sertifikat u redu. Ali na četiri strane sa uslugama, u opsegu širina između 384 i 797 piksela, strana je imala vodoravni preliv, a bočna kolona sa cenovnikom, prednostima i hitnom pomoći je bila potpuno van ekrana. Nevidljiva. Na najvažnijim stranama sajta, na širini na kojoj gleda većina posetilaca.

Uzrok je bio jedan nasleđen red u stilovima. Bočna kolona je na užim ekranima prelazila iz reda u kolonu, ali pravilo o prelamanju iz šireg opsega nije bilo poništeno. U kolonskom rasporedu osnovna veličina se odnosi na visinu, ne na širinu, pa je svaki blok dobio sopstvenu vodoravnu kolonu i otišao van ivice ekrana.

Popravka je bila dva reda: zabrana prelamanja i osnovna veličina po sadržaju umesto pune. Uz to je na strani sa bočnim staklima rešeno i razvlačenje mreže na desktopu, gde je red od pet koraka postupka gurao kolonu preko njene širine.

Pouka je opštija od ovog sajta: prelazak sa reda na kolonu unutar upita za medij ne poništava pravilo o prelamanju iz šireg opsega — mora se izričito ugasiti. I još važnije, ovakav kvar ne postoji ni u jednoj automatskoj oceni. Lighthouse na toj strani i dalje daje visoku ocenu. Vidi se samo kada neko stvarno otvori sajt na telefonu i pokuša da nađe cenovnik.

Panel za lager — poseban posao

Javni sajt je jedna stvar. U avgustu 2026. dodat je drugi deo koji sa njim nema veze: interni panel na sopstvenom poddomenu, iza prijave, u kojem stoji lager stakala od 713 stavki i kalendar zakazivanja. To je alat za pult u radnji, ne za posetioca.

Knjigovodstvo firme radi u poslovnom programu koji se koristi kroz brauzer, a baza je kod isporučioca. Pre nego što je išta pisano, provereno je da li se dva sistema mogu spojiti direktno. Odgovor je bio ne: javno dokumentovanog servisa za mašinsku razmenu nema, a sedamdesetak strana njihove pomoći ne pominje ništa takvo. Ono što postoji jeste izvoz lagera u tabelu. Znači, most je fajl.

Panel je zato dobio uvoz tabele u tri koraka: otpremanje, mapiranje kolona sa automatskim prepoznavanjem, pa pregled koji pre upisa kaže koliko stavki je novo a koliko izmenjeno. Pre svakog upisa se pravi kopija celog lagera, tako da se pogrešan uvoz može poništiti.

Teško je bilo u podacima, ne u kodu:

  • Šifra nije jedinstvena. Ista šifra postoji dvaput, pod dva različita proizvođača. Ključ spajanja mora biti šifra zajedno sa proizvođačem — inače uvoz spoji dve različite stavke u jednu.
  • Kad fajl nema kolonu proizvođača, proizvođač mora da ispadne iz ključa — i to sa obe strane, i iz fajla i iz baze. Ako ispadne samo sa jedne, svaka stavka izgleda kao nova i jedan jedini uvoz udvostruči ceo lager.
  • 94 od 713 stavki nema naziv, samo šifru. Prva verzija uvoza ih je tiho preskakala, jer je naziv bio postavljen kao obavezan. Sada je red upotrebljiv ako ima naziv ili šifru.

Kontrola je usput našla i zatečen kvar koji je tiho gutao podatke: tabela je cene prikazivala zaokruženo, a prozor za izmenu je te zaokružene brojeve čitao nazad iz ćelija tabele i upisivao u bazu. Izmena bilo kog polja jedne stavke trajno je gubila decimale — 1234,75 postane 1235. Popravka je bila da izvorne vrednosti stoje uz red, a da izmena čita njih, ne ono što je nacrtano na ekranu.

Panel je zatim testiran pravim klikom miša, ne programskim, i ta razlika je otkrila dve stvari. Prva: podnožje prozora za uvoz se nije moglo doskrolovati — na maksimizovanom laptopu od 1366 piksela dugme Dalje je bilo 189 piksela ispod ivice ekrana, a ništa nije skrolovalo. Uvoz je bio neupotrebljiv na najčešćem laptopu u radnji, a programski poziv klika svejedno prolazi jer zaobilazi proveru vidljivosti; automatski test bi rekao da sve radi. Druga: lebdeća oznaka „Sinhronizovano" je gutala klik — vizuelno bezazlena, ali je primala klikove, pa dugmad Izmeni i Obriši ispod nje nisu reagovala, bez greške i bez traga. Razmak ispod tabele tu ne pomaže; jedini lek je da oznaka prestane da prima klik.

Bezbednosni pregled je najozbiljniji nalaz našao u samom uvozu. XLSX je zapravo arhiva, pa fajl od 1,84 megabajta može da se raspakuje u 529 megabajta u memoriji i obori radnika servera, a sa njim i ostale sajtove iz istog skupa. Ograničenje broja redova ne pomaže, jer se primenjuje tek nad već izgrađenim stablom — provera se sada radi pre čitanja, nad prijavljenom veličinom i nad odnosom sažimanja. Sve to pokrivaju testovi koje panel nosi sa sobom: 129 provera nad podacima i 43 preko mreže, uključujući i namerno napravljenu arhivu-bombu.

Šta klijent na kraju ima

Sajt od deset strana, od kojih su četiri usmerene tačno na pretragu koju čovek radi sa pukotinom na vetrobranu. Strane indeksirane, sa mrvicama i sa pitanjima koja se vide u rezultatima. Forma koja stiže u sanduče, sa tri sloja zaštite ispred sebe. Četiri telefonske linije koje se biraju jednim dodirom.

Javni sajt namerno nema sistem za uređivanje sadržaja i to je odluka, ne propust. Deset statičnih strana nema šta da se pokvari, nema dodatke koji se raspadnu pri sledećem ažuriranju i nema prijavu koju neko sa strane može da pogađa. Sadržaj se menja retko — telefon, radno vreme, opis usluge — i te izmene idu preko nas, sa rezervnom kopijom pre svake i sa kodom koji stoji u privatnom repozitorijumu.

Alat koji klijent koristi svakog dana je drugi: panel sa lagerom i kalendarom, sa uvozom iz knjigovodstva kad stigne nov izvoz. Sedamsto stavki se pretraži za sekundu, cena se vidi tačna do dinara, a nova isporuka ulazi kroz jednu tabelu umesto kroz sedamsto ručnih unosa.

Podela je namerna. Sajt radi za nekoga ko AutoSet još ne poznaje. Panel radi za nekoga ko u AutoSetu radi. To su dva različita posla i nisu ni trebalo da budu ista aplikacija.

// Sajt uživo

AutoSet Niš

Autostakla za sve marke vozila — prodaja, ugradnja, zamena i reparacija u Nišu i okolini.

autoset.rs

Često postavljana pitanja

Zašto javni sajt nema sistem za uređivanje sadržaja?
Zato što bi koštao više nego što bi vredeo. Sadržaj se na ovakvom sajtu menja nekoliko puta godišnje — telefon, radno vreme, opis usluge. Statične strane nemaju dodatke koji se raspadnu pri ažuriranju ni prijavu koju neko može da pogađa. Izmene idu preko nas, sa rezervnom kopijom pre svake.
Zašto četiri odvojene strane umesto jedne strane sa uslugama?
Zato što strana koja govori o svemu ne rangira ni za šta. Čovek u pretragu ne kuca samo reč autostakla, nego uslugu i grad zajedno. Svaka od četiri strane odgovara na jedan takav upit i ima svoj postupak, svoja pitanja i svoj naslov. Zbirna strana sa uslugama i dalje postoji, ali kao pregled, ne kao ulaz iz pretrage.
Da li poruka sa kontakt-forme stvarno stiže?
Stiže, i to je provereno pravom porukom sa potvrdom prijema od servera. Pošta ne ide preko ugrađene funkcije jezika nego preko naloga na domenu, sa autentikacijom i šifrovanom vezom, pa prolazi sve tri provere identiteta pošiljaoca. Bez toga poruka najčešće završi u nepoželjnoj pošti.
Zašto baner za kolačiće kad se preko sajta ništa ne prodaje?
Zato što sajt meri posete, a merenje se oslanja na kolačiće. Baner nudi i odbijanje, a merenje je podrazumevano isključeno sve dok posetilac ne pristane. Redosled je bitan koliko i sam baner: odbijanje se postavlja pre nego što se učita bilo šta Google-ovo.
Kako lager iz knjigovodstva stiže u panel?
Kroz izvoz u tabelu. Knjigovodstveni program nema javno dokumentovan način mašinske razmene, pa je most fajl: izvoz iz njega, uvoz u panel uz mapiranje kolona i pregled pre upisa. Pre svakog upisa se pravi kopija celog lagera, tako da se pogrešan uvoz može poništiti.
Da li se ovakav sajt može proširiti kasnije?
Može, i već jeste — četiri strane za usluge su dodate posle prve verzije, a panel za lager godinama kasnije. Adrese su bez nastavka baš zato: strana se sutra može prepisati u PHP a da njena adresa i njeno mesto u pretrazi ostanu isti.

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