Tehnički Pregled Stanković 964 — sajt stanice za tehnički pregled vozila
Stanica za tehnički pregled ne prodaje ništa preko interneta. Posetilac ima četiri pitanja — da li radite moje vozilo, koliko košta, kada ste otvoreni i gde ste tačno — i traži odgovor sa telefona, u kolima, na lošoj vezi. Sajt je napravljen tako da ta četiri odgovora budu tu pre nego što strana uopšte počne da se pomera.
- Klijent
- Tehnički Pregled Stanković 964
- Delatnost
- Tehnički pregled vozila, ovlašćena stanica
- Područje
- Pertate, opština Aleksinac
- Tip
- Višestrani sajt sa privatnim panelom
- Tehnologije
- PHP 8.3 · Nginx keš · MySQL · PWA
- Sajt
- stankovic964.rs
- Status
- Živ sajt, u aktivnom održavanju
U ovom tekstu
Čime se Tehnički Pregled Stanković bavi
Tehnički Pregled Stanković 964 je ovlašćena stanica za tehnički pregled vozila u Pertatama, u opštini Aleksinac. Rade se putnička vozila, laka teretna i dostavna do 2,5 tone i prikolice svih vrsta. Uz pregled ide i popravka svetlosne signalizacije na licu mesta — zamena sijalica, pokazivači pravca, podešavanje farova — što je usluga zbog koje se vozilo ne vraća drugi put.
Radno vreme je od ponedeljka do petka, od 07:00 do 15:30. Subotom i nedeljom se ne radi, i to je na sajtu napisano na tri mesta: na naslovnoj, u podnožju svake strane i na kontaktu. Razlog nije ukras. Čovek koji u subotu ujutru traži gde da uradi pregled ne sme da izgubi pola sata na put do zatvorene kapije.
Posao je lokalni i telefonski. Ne zakazuje se unapred, dolazi se bez najave, a sve što se ne zna rešava se pozivom. Stanica ističe više od deset godina rada i preko pet hiljada pregledanih vozila — to su njene brojke i tako su i postavljene na sajt, kao njena tvrdnja, ne kao naše merenje.
Sve to unapred određuje kakav sajt treba: mali, brz, sa brojem telefona na dohvat palca i bez ijednog koraka između posetioca i poziva.
Šta je trebalo rešiti
Sajt stanice za tehnički pregled ima neobičan zadatak. Nema šta da proda preko interneta, ne prima porudžbine, nema katalog i nema razlog da posetilac ostane duže od minut. Uspeh je poziv, i ništa drugo.
Iz toga je izašao spisak zahteva:
- Odgovor u prvom ekranu — naziv stanice, šta se radi i dva broja telefona, vidljivi pre bilo kakvog pomeranja strane.
- Cenovnik koji ne zastareva — iznosi za tehnički pregled se menjaju po važećem cenovniku, pa strana sa cenama mora da bude korisna i onda kada iznosi na njoj nisu ispisani.
- Adresa koja se ne traži — mapa i tekstualna adresa na dva mesta, jer su Pertate selo i naziv ulice sam po sebi nije dovoljan navigaciji.
- Sajt bez održavanja — bez sistema za upravljanje sadržajem koji traži nedeljna ažuriranja i bez dodataka koji se raspadnu pri sledećoj verziji.
- Brzina na slaboj vezi — posetilac je najčešće na telefonu, u kolima, sa dve crtice signala.
Poslednja stavka je odredila sve ostalo. Sajt bez fotografija, bez okvira koji čekaju tuđe servere i bez skripti koje se nadgornjavaju ispada lakši od jedne prosečne slike proizvoda. Ceo sadržaj naslovne strane danas staje u nešto preko dvadeset kilobajta teksta, a sve što izgleda kao slika zapravo je ikona i boja.
Pet strana i ništa više
Sajt ima pet strana i dva pravna teksta. Naslovna, usluge, cenovnik, o nama i kontakt — plus politika privatnosti i uslovi korišćenja u podnožju.
Naslovna je složena kao jedna vertikala koja odgovara redom na sva pitanja: ko smo i dva broja telefona, četiri vrste pregleda, ko stoji iza stanice, radno vreme po danima, poziv na dolazak i na kraju kontakt sa mapom. Ko ima strpljenja, pročita sve. Ko nema, poziva iz prvog ekrana.
Strana sa uslugama razlaže ista četiri posla u pojedinosti — šta ulazi u redovni godišnji pregled, šta u vanredni, koja vozila spadaju u laka teretna, koje se prikolice rade. To je strana koja hvata pretragu za konkretnu stvar, na primer pregled prikolice, i zato ima svoj naslov i svoj opis, a ne izvod sa naslovne.
Nema bloga, nema galerije, nema vesti. Stanica ne objavljuje sadržaj i sajt koji bi to očekivao od nje bio bi prazan posle mesec dana, sa poslednjom vešću od prošle godine na vidnom mestu. Ono što postoji je tačno i ažurno, a to je jedini oblik svežine koji ovakav sajt zaista može da drži.
Cenovnik koji ne obećava cifru
Najosetljivija strana je cenovnik. Cene tehničkog pregleda se ne izmišljaju u stanici nego prate važeći cenovnik, i menjaju se. Sajt koji jednom ispiše iznos i zaboravi na njega vremenom postane sajt koji laže: čovek dođe sa cifrom sa ekrana, a naplati mu se druga, i krivac je onaj ko je cifru ostavio.
Zato strana govori istinu o mehanizmu umesto da glumi konačan iznos. Nabrojane su usluge koje se naplaćuju — putnička vozila, teretna do 2,5 tone, prikolice, popravka signalizacije na licu mesta — uz jasnu napomenu da se rade po važećem cenovniku i dva broja telefona za tačan iznos.
Da strana ne bi bila prazna obećanja, ispod cena stoji ono što se retko piše: šta pregled obuhvata. Vizuelna kontrola spolja i iznutra, ispitivanje kočionog sistema, kontrola svih svetala i signalnih uređaja i merenje emisije izduvnih gasova. Čovek koji je došao po cifru odlazi bar sa jasnim odgovorom šta za taj novac dobija — i sa razlogom da pozove umesto da zatvori stranu.
Poziv umesto forme
Na sajtu nema forme za zakazivanje. To nije previd nego odluka.
Stanica ne radi po terminima; dolazi se bez najave u toku radnog vremena. Forma bi napravila obećanje koje niko ne ispunjava — posetilac upiše podatke, čeka odgovor, pa ionako pozove, samo ljut. Umesto nje, oba broja telefona su živi tel: linkovi koji se sa telefona biraju jednim dodirom i ponavljaju se u svakoj sekciji koja se završava pozivom na akciju.
Na kontakt strani stoje telefon, mejl, adresa, radno vreme i mapa. Mapa je bila i jedina prava greška zatečena na sajtu, i to od one vrste koja košta posao: okvir na kontaktu prikazivao je sasvim drugu firmu, auto centar iz drugog grada, dok je na naslovnoj stajao prazan primer iz šablona. Oba su zamenjena okvirom koji cilja pravu adresu u Pertatama, sa poštanskim brojem i opštinom u upitu, jer pretraga samo po nazivu ulice u selu ume da odvede na drugi kraj Srbije.
Ista adresa ispisana je i kao običan tekst, odmah pored mape. Mapa je okvir sa tuđeg servera koji ponekad ne stigne da se učita; adresa u tekstu stigne uvek i može da se prekopira u navigaciju.
Tehnička izvedba
Sajt je pisan u PHP-u 8.3, kao skup strana koje dele zaglavlje i podnožje kroz obične include fajlove. Nema WordPress, nema temu, nema dodatke. Nema ni bazu — sadržaj stoji u samim stranama, jer se menja jednom u nekoliko meseci i ne isplati se ceo sistem koji bi ga čuvao i koji bi mogao da padne.
Stil je jedan minifikovan fajl. Pre sređivanja bilo je devet odvojenih CSS fajlova, što znači devet zahteva pre nego što strana uopšte počne da se iscrtava. Sada je jedan i učitava se odmah, bez odlaganja.
Ponašanje na strani nosi jedan mali main.js: otvaranje menija na telefonu i pojavljivanje sekcija pri skrolovanju kroz IntersectionObserver. Nema biblioteke za animacije, nema jQuery, nema ničega što se ažurira zbog bezbednosnih zakrpa.
Ispred svega stoji nginx koji kešira odgovore PHP-a. Zatečeno podešavanje je to gasilo na podmukao način: u konfiguraciji je stajalo pravilo koje je svakom CSS, JS i PHP odgovoru dodavalo zabranu keširanja, a pritom se poklapalo pre pravila za PHP, pa nije radio ni serverski ni brauzerski keš. Uklonjeno je, keširanje je uključeno, i odgovor servera se sada meri u desetinama milisekundi.
Jedna zamka ostala je zapisana za ubuduće: main.js se servira sa godišnjim kešom, pa svaka izmena mora da nosi novu oznaku verzije u adresi. Bez toga posetilac koji je već bio na sajtu i dalje dobija stari fajl, i popravka za njega prosto ne postoji.
Strana koja ne skače
Prvo ozbiljno merenje posle isporuke dalo je ružnu brojku. Pomeranje sadržaja pri učitavanju, ono što se meri kao CLS, bilo je preko jedan. Praktično: čovek počne da čita, strana mu se prelomi pod prstom i dodir završi na pogrešnom dugmetu. Cilj je nula, i nula je i postignuta, ali tek posle tri odvojena uzroka.
- Glavni CSS je bio postavljen kao odloženo učitavanje. Strana se prvo iscrtavala bez stilova, pa se prelamala ispočetka kada stilovi stignu. Vraćen je u normalno učitavanje — mereno je gore izgledalo, a stvarno je bilo lošije.
- Brojači na naslovnoj animirali su se od nule do konačnog broja. Dok broj raste, širina teksta se menja i sve oko njega se pomera. Sada su brojke ispisane statički i strana miruje.
- Naslovni fontovi se učitavaju sa mreže, a rezervni font je bio drugih proporcija, pa je zamena prelamala naslove. Rezervnom fontu su zadate mere koje odgovaraju pravom, tako da zamena više ne pomera nijedan red.
Uz to je sa prvog ekrana skinuta animacija pojavljivanja. Naslov koji počinje neproziran pa se lagano pojavi lepo izgleda, ali merenje brzine vidi praznu stranu i tako je i ocenjuje. Sada je prvi ekran odmah tu, a pojavljivanje ostaje samo za sekcije niže na strani.
Kasnije se pojavio i skriveni kvar iz iste porodice. Ako se strana sa uslugama otvori i odmah skoči na dno, sekcija sa razlozima ostajala je nevidljiva. Posmatrač koji pušta animaciju čeka da element uđe u ekran, a on je pri naglom skoku već bio prošao pored njega. Rešeno je tako što se pri svakom prolazu proverava i sve što je ostalo iznad vidljivog dela strane.
Ispravnost koda i pristupačnost
Prolaz kroz zvaničnu proveru HTML-a je jeftin posao koji se najčešće preskoči. Ovde je odrađen do nule: na svih pet strana i oba pravna teksta validator ne prijavljuje nijednu grešku ni upozorenje. Ispravljeno je ono što se obično i zatekne — okvir mape sa širinom upisanom kao atribut umesto kao stil, stilovi zalutali u podnožje strane umesto u CSS fajl i naslovi koji preskaču nivo.
Taj poslednji nije formalnost nego pristupačnost. Čitač ekrana ide kroz naslove kao kroz sadržaj knjige, pa je svaka strana dobila i naslov sekcije koji se ne vidi okom, tamo gde je vizuelno stajao samo razmak.
Ostatak istog prolaza:
- Dugme na kolačić baneru imalo je kontrast 2,28 prema 1 — beli tekst na svetloj zelenoj, čitljiv taman koliko da se pogodi. Zamenjen je tamnim tekstom, kontrast 8,17 prema 1.
- Link „Preskoči na sadržaj" na vrhu svake strane, za one koji se kreću tastaturom.
- Dugme menija na telefonu sada javlja pomoćnoj tehnologiji da li je meni otvoren ili zatvoren, umesto da ćuti.
- Linkovi u podnožju su podvučeni, da se od okolnog teksta ne razlikuju samo bojom.
Sitnica iz istog reda: pravne strane tražile su ikonicu koje nije bilo i pri svakom otvaranju vraćale grešku u dnevnik. Dodata je. Takve stvari niko ne prijavi, ali se skupljaju.
SEO, sertifikat i higijena domena
Najveći propust nije se video na ekranu. Sajt je pre puštanja u rad živeo na privremenoj adresi na našem poddomenu, i posle prelaska na sopstveni domen na toj staroj adresi ostali su kanonski link, podaci za deljenje, strukturirani podaci, mapa sajta i robots.txt. Pretraživaču je to poruka da je pravi sajt negde drugde. To je jedan od retkih propusta koji sajt učini gotovo nevidljivim, a da se pritom ničim ne oda — sve strane rade, sve izgleda uredno.
Sve je prepisano na stankovic964.rs, a uz to je sređeno i ostalo:
- Strukturirani podaci prebačeni su sa opšteg tipa za servis na
AutomotiveBusiness, sa adresom i poštanskim brojem, koordinatama, oba telefona, radnim vremenom i spiskom od četiri usluge. - Svaka strana ima naslov i opis pisane za nju, a ne po šablonu sa imenom firme na kraju.
- Mapa sajta pokriva svih sedam adresa, uključujući i pravne tekstove, a
robots.txtne blokira ništa što treba da se indeksira. - Sajt je potvrđen u Google Search Console-u preko DNS zapisa, a mapa sajta je predata.
Uz to ide i higijena domena, deo koji klijent nikada ne vidi. Sertifikat je na javnom testu ocenjen najvišom ocenom, domen je u listi koju brauzeri uvek otvaraju preko HTTPS-a, u DNS-u stoji zapis koji određuje ko uopšte sme da izda sertifikat za taj domen, a na propisanom mestu stoji security.txt sa kontaktom za prijavu ranjivosti. Strana o nama i sve ostale servira isti server pod istim pravilima, bez izuzetaka koji se posle zaborave.
Panel za inventar stanice
Uz sajt stoji i deo koji posetilac nikada ne vidi: privatna aplikacija za inventar stanice, na posebnom poddomenu. To nije uređivač sajta — sadržaj sajta se kroz njega ne dira — nego evidencija onoga što stanica drži: artikli, kategorije, količine, cene i istorija svake izmene.
Napravljena je kao PWA. Sa strane za prijavu se instalira na telefon ili računar i posle se otvara kao obična aplikacija, sa svojom ikonicom i bez adrese u vrhu, isto na Androidu, iOS-u, Windows-u i macOS-u.
Promene se vide u realnom vremenu. Kada neko na jednom uređaju izmeni stanje, ostali otvoreni uređaji dobiju izmenu bez osvežavanja strane, preko toka događaja koji server drži otvorenim i budi tek kada se nešto stvarno promeni. Ako brauzer to ne podržava, aplikacija se sama vrati na povremenu proveru, pa nema uređaja koji ostaje sa starim brojem.
Prijava je urađena ozbiljno, jer panel stoji na javnom internetu. Lozinke se čuvaju kroz bcrypt, svaki upis nosi token protiv falsifikovanja zahteva, posle pet pogrešnih pokušaja nalog se zaključava na pola sata, a pokušaji se broje i po korisniku i po adresi sa koje dolaze. Sesija ističe posle pola sata mirovanja i najviše osam sati ukupno. Svaki ulaz, izlaz i izmena upisuju se u dnevnik sa vremenom, adresom i uređajem, a spisak trenutno prijavljenih uređaja vidi se u samom panelu. Pristupni podaci za bazu stoje van foldera koji server objavljuje, tako da ne mogu da se pročitaju kroz brauzer ni kada nešto drugo pukne.
Taj modul stoji i kao primer u radu na strani o aplikaciji za stanice za tehnički pregled.
Šta klijent na kraju ima
Sajt od pet strana koji se otvara odmah, radi isto na telefonu i na računaru i ne traži ništa od vlasnika. Nema mesečne pretplate platformi, nema dodataka koji se ažuriraju, nema panela koji mora da radi da bi se strana prikazala. Domen, kod i sadržaj su njegovi i mogu se preseliti kod drugog izvođača ako ikad zatreba.
Praktično, čovek koji u pretrazi ukuca tehnički pregled i ime mesta dobija adresu, radno vreme, spisak vozila koja se rade i broj telefona koji se bira jednim dodirom. To je ceo posao ovakvog sajta, a sve napisano iznad postoji samo zato da se taj put ne prekine ni na jednom mestu — ni na sporoj vezi, ni na starom telefonu, ni kod čoveka koji ide tastaturom.
Sajt je u održavanju i proverava se u redovnim prolazima kroz celu flotu. Poslednji su doneli popravku sekcije koja je pri naglom skrolovanju ostajala nevidljiva i oznaku verzije na skripti, koja sprečava da posetilac sa starim kešom nikada ne vidi ono što je popravljeno.
Sajt u slikama
Tehnički Pregled Stanković 964
Ovlašćena stanica u Pertatama: putnička vozila, teretna do 2,5 tone, prikolice i popravka svetlosne signalizacije.
stankovic964.rsČesto postavljana pitanja
Zašto sajt nema formu za zakazivanje?
Zašto na cenovniku ne stoje iznosi?
Ko menja tekst na sajtu?
Da li sajt radi na telefonu?
Šta je panel i ko mu pristupa?
Ima li ovakav sajt mesečne troškove?
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.