// Studija slučaja

Halo City Leskovac — prodaja i servis telefona na sopstvenom sajtu

Radnja od tri čoveka u centru Leskovca koja već dvanaest godina prodaje i popravlja telefone, a u pretrazi je praktično nije bilo. Trebalo joj je pet strana koje pokrivaju ono što ljudi zaista kucaju, poziv na jedan dodir umesto kontakt-forme, i vizuelni nivo koji ne izgleda jeftinije od konkurencije sa pravim domenom.

Klijent
Halo City Leskovac
Delatnost
Prodaja i servis mobilnih telefona
Područje
Leskovac i Jablanički okrug
Tip
Višestrani sajt sa 3D pozadinom
Tehnologije
Next.js 15 · React 19 · three.js · Tailwind 4
Status
Živ od maja 2026, na našem poddomenu
Naslovna strana sajta Halo City Leskovac
Naslovna — prodaja i servis telefona u srcu Leskovca

Čime se Halo City bavi

Halo City Leskovac je prodavnica i servis mobilnih telefona na Bulevaru Oslobođenja 1, u samom centru Leskovca. Radnja posluje od avgusta 2014, ima tri zaposlena, a na Google Maps-u nosi ocenu 4.4 od preko trideset pet recenzija.

Posao stoji na dve noge. Prva je prodaja — novi telefoni popularnih marki (iPhone, Samsung, Xiaomi, Huawei, Honor, OPPO), provereni polovni uređaji i oprema: maske, zaštitna stakla, punjači, kablovi, slušalice, držači. Druga je servis — zamena ekrana i baterije, konektor za punjenje, tečnost i vlaga, softver i sistem, kamera i zvučnik, sve do mikrolemljenja na matičnoj ploči kada telefon više ne daje znake života.

Kupci ne dolaze samo iz Leskovca. U grad gravitiraju Vlasotince, Lebane, Vladičin Han, Bojnik i Medveđa — mesta iz kojih se sa pokvarenim telefonom putuje u najbliži veći centar. To je i razlog zašto sajt ovakvoj radnji uopšte znači: čovek kome je pukao ekran prvo pita pretragu, ne komšiju. Ako radnje nema u rezultatima, ne postoji ni za tog čoveka.

Sve što radnja nudi bilo je već tu — dvanaest godina rada, ocena, redovni kupci i adresa u centru. Nedostajala je jedino adresa na internetu.

Zašto sajt stoji na našem poddomenu

Ovde treba biti otvoren. halocity.svilenkovic.rs je naš poddomen, ne klijentov domen. Radnja je stvarna, sajt je živ od maja 2026, ali firma nema svoj domen — pa sajt stoji na našoj infrastrukturi, na hostu koji nosi ime radnje.

To nije parkirana stranica koja čeka nešto. Sajt ima sopstveni HTTPS sertifikat koji se automatski obnavlja, sopstveni sitemap i robots.txt, sopstvenu analitiku sa pristankom na kolačiće, sopstveni zapis u Google Search Console-u i u Bing Webmaster alatima, i sopstveni IndexNow ključ kojim se izmene prijavljuju pretraživačima. Radi kao svaki drugi sajt, samo mu je adresa poddomen.

Razlika koja se plaća jeste u lokalnom SEO-u. Sopstveni domen sa imenom firme u adresi ima bolju polaznu poziciju za upite tipa „servis telefona Leskovac" nego poddomen, i to je pošteno reći umesto praviti se da razlike nema.

Selidba je pripremljena i već jednom uvežbana. Sajt je u julu 2026. prebačen sa starog radnog hosta na današnji, i tada je stara adresa dobila trajno preusmerenje u jednom skoku, sa očuvanom putanjom — /servis je otišao na /servis, ne na naslovnu. Ista procedura čeka i pravi domen kada ga bude: DNS zapis, sertifikat, izmena kanonskih adresa, 301 sa poddomena. To je pola dana posla, a ne novi sajt.

Šta je trebalo rešiti

Zadatak nije bio „napravi sajt radnji" nego četiri konkretne stvari:

  • Naći se u pretrazi za dva različita posla. Čovek koji kupuje telefon i čovek kome je pukao ekran nisu isti posetilac i ne kucaju istu stvar. Jedna strana ne može da bude prva za oba upita.
  • Poziv na jedan dodir. Vlasnik i dva zaposlena stoje za pultom ceo dan. Kontakt-forma koju niko ne otvara je gore nego da je nema.
  • Izgledati ozbiljno. U gradu već postoji konkurent sa pravim domenom i dužim stažom na internetu. Radnja od tri čoveka ne može da ga pobedi obimom, pa mora izgledom i jasnoćom.
  • Ne obećati cenu koja se menja. Cena ekrana zavisi od modela i od kursa. Broj na sajtu koji ne stoji je gori od nikakvog broja.

Uz to je išao uslov koji se lako previdi: sajt mora da radi na telefonu sa slabom vezom, jer ga najčešće otvara neko kome je uređaj u kvaru i ko sedi u autobusu. Sve odluke o brzini i o tome koliko 3D sme da košta izvedene su iz te jedne rečenice.

Pet strana umesto jedne duge

Prva verzija je bila jedna duga strana sa svim sekcijama, kako se to obično radi za male firme. Ubrzo je postalo jasno da to ne rešava prvu tačku zadatka. Jedna strana ima jedan naslov, jedan opis i jedan glavni pojam — i tim pojmom se takmiči ili za prodaju ili za servis, nikako za oba.

Sajt je zato razbijen na pet strana, svaka sa sopstvenim naslovom, opisom, kanonskom adresom i sopstvenom slikom za deljenje:

  • Naslovna — šta radnja radi, zašto joj se veruje, recenzije i lokacija.
  • Proizvodi — novi telefoni, polovni uređaji i oprema, traka sa markama i pitanja koja kupci postavljaju pri kupovini.
  • Servis — osam vrsta popravki, tok servisa u četiri koraka i najčešća pitanja o popravci.
  • O nama — dvanaest godina rada, tri stuba posla i vremenska linija od 2014.
  • Kontakt — adresa, oba broja, radno vreme i mapa.

Podstranice nose grad u naslovu prve linije: „Prodaja mobilnih telefona u Leskovcu", „Servis mobilnih telefona u Leskovcu". To zvuči kao sitnica, ali je razlika između strane koja se takmiči za pojam sa gradom i strane koja se takmiči sa celom Srbijom.

Strane se ne završavaju slepo. Sa servisa vodi rečenica ka prodaji, sa prodaje ka servisu, a sa strane o radnji ka sve tri. Posetilac koji je došao zbog popravke tako sazna da se u istoj radnji kupuje i novi telefon, što je i bio glavni razlog da se prodaja gura napred.

Poziv i Viber umesto kontakt-forme

Na celom sajtu nema nijedne kontakt-forme. To je bila odluka, ne propust.

Forma na sajtu male radnje radi ovako: posetilac napiše poruku, poruka padne u sanduče koje se otvara uveče ili nikad, a čovek u međuvremenu pozove nekog drugog. Telefon zvoni odmah. Viber poruka stigne odmah. Zato su na sajtu samo ta dva puta, i to na svakom ekranu.

Broj u zaglavlju je aktivan link koji na telefonu otvara pozivnik. Dugme za Viber otvara razgovor sa unapred napisanom porukom — na naslovnoj piše da posetioca zanima kupovina novog telefona, na servisu da mu treba popravka. Vlasnik dobija poruku koja već kaže o čemu se radi, umesto praznog „zdravo".

Kontakt strana je ostatak: adresa, mobilni i fiksni broj, radno vreme po danima sa jasno napisanim „nedeljom zatvoreno", i mapa. Mapa je posebna priča — u jednoj ranijoj verziji stajala je sa filterom preko sebe pa je izgledala kao pokvarena slika; zamenjena je običnim ugrađenim prikazom bez ijednog efekta, uz odgovarajuće pravilo na serveru koje taj prikaz uopšte dozvoljava.

Sporedna korist od odluke bez forme je pravna. Sajt ne prikuplja lične podatke kroz veb, pa politika privatnosti može da bude kratka i istinita umesto duga i prepisana.

Cenovnik koji je namerno izbačen

Sajt je jedno vreme imao ceo cenovnik servisa sa iznosima u dinarima. Izbačen je u celosti i to je bila dobra odluka.

Cena zamene ekrana zavisi od modela, od toga da li ide originalni ili proveren deo, i od nabavne cene koja se menja. Cenovnik na sajtu koji ne prati radnju stvara dva problema: kupca koji dođe sa štampanim brojem u glavi, i radnju koja mora da objašnjava zašto broj više ne važi.

Umesto iznosa, sajt obećava mehanizam. Dijagnostika je besplatna i bez obaveze. Cena se kaže pre popravke. Popravka kreće tek kada je mušterija odobri. Plaća se po završenom poslu. To su četiri rečenice koje ne zastarevaju i koje se mogu ispuniti svaki dan.

Isti princip je primenjen i kada se posao promenio. Sajt je imao celu stranu o otkupu polovnih telefona; kada je fokus prešao na prodaju i servis, strana je uklonjena zajedno sa svakim pominjanjem otkupa u meniju, opisima, strukturisanim podacima i sitemapu — a stara adresa je dobila preusmerenje na prodaju, da nijedan zapamćen ili indeksiran link ne završi u praznom. Sajt prati radnju, ne obrnuto.

3D koji je preživeo i telefoni koji nisu

Ovo je deo gde je bilo najviše lutanja i gde je najviše rada završilo u kanti.

Ideja je od početka bila da sajt ima živu, trodimenzionalnu pozadinu — nešto što odmah kaže da ovo nije šablon kupljen za dvadeset evra. Prva ozbiljna verzija je otišla korak dalje: telefon je modelovan u Blenderu iz skripte, izvezen kao .glb model od stotinak kilobajta bez ikakvog spoljnog dekodera, pa umnožen u lepezu od pet uređaja u različitim bojama koji stoje u heroju. Iz istog modela je izrenderovana i fotorealistična pozadina sa tri telefona.

Na ekranu je izgledalo lažno. Ne loše — lažno. Telefon u igrici i telefon na sajtu prodavnice nisu ista stvar: kupac zna kako izgleda pravi iPhone i odmah vidi da gleda model. Ceo taj sloj je obrisan istog dana, zajedno sa modelom, renderom i skriptom koja ih pravi.

Zamena je jedna prava fotografija lineup-a telefona bez pozadine, izrezana alatom za uklanjanje pozadine i sabijena u WebP od 46 kilobajta. Rezultat je bolji od svega što je pre toga modelovano, a težak je koliko i jedna ikonica.

Trodimenzionalni sloj je preživeo, ali je promenio ulogu — iz glavnog glumca u pozadinu. Danas je to WebGL scena sa šesnaest bledih, fasetiranih kristala koji lagano lebde u dubini, uz oko petsto tačkica prašine i eksponencijalnu maglu koja daljinu stapa sa svetlom podlogom. Kamera se pomera za mišem i za skrolom, oba pokreta jako ublažena, tako da se osećaj dubine primeti a pokret ne primeti.

Na telefonu se scena sama smanjuje: devet kristala umesto šesnaest, manje prašine, isključeno zaglađivanje ivica i niži gornji prag za gustinu piksela. Ispod svega leži CSS sloj sa mekim obojenim mrljama, zrnom i vinjetom — on je serverski iscrtan i tu je pre nego što se ijedan skript izvrši, pa strana nikad nije prazna.

Marke telefona koje se prikazuju kao logotipi takođe su lokalne — šest znakova stoji kao datoteke na serveru umesto da se dovlače sa tuđe mreže. Jedna zavisnost manje koja može da padne ili da promeni pravila.

Brzina — da 3D ne košta prvi ekran

Živa 3D pozadina je najskuplja stvar koju sajt male radnje može da nosi. Cela izvedba je zato podređena jednom pravilu: ništa od 3D-a ne sme da se dogodi pre nego što posetilac vidi sadržaj.

Biblioteka se ne uvozi u glavni paket nego se učitava naknadno. Njeno pokretanje čeka da se strana potpuno učita, pa još pola sekunde, pa prvi trenutak kada je brauzer bez posla. Do tada pozadinu nosi CSS sloj koji ništa ne košta. Merenje pre i posle te izmene: rezultat za mobilne uređaje je porastao sa 88 na 92, a vreme u kojem je glavna nit blokirana palo sa 380 na 250 milisekundi.

Dalje mere idu u istom pravcu. Scena se pauzira kada kartica nije u prvom planu, pa telefon u džepu ne crta ništa. Gustina piksela je ograničena odozgo, jer scena od šesnaest oblika ne dobija ništa od trostruke rezolucije a troši trostruko. Kada se komponenta ukloni, sve geometrije, materijali i sam iscrtavač se uredno oslobađaju — WebGL scena koja se ne počisti je curenje memorije koje se vidi tek posle desetak prelazaka između strana.

Dva izlaza vode potpuno van 3D-a. Ako posetilac u sistemu ima uključeno smanjenje animacija, scena se ne pokreće uopšte — kao ni glatki skrol. Ako brauzer ne ume da napravi WebGL kontekst, greška se hvata i sve ostaje na CSS pozadini, bez ijedne poruke u konzoli i bez praznog pravougaonika.

Isti oprez važi i za ostatak. Slika u heroju se učitava odmah i sa visokim prioritetom, jer je ona ono što posetilac prvo vidi. Sekcije se pojavljuju pri skrolu preko posmatrača preseka, koji svaki element otpušta čim ga jednom prikaže; ako posmatrač nije dostupan, sve se prikaže odmah. A za slučaj da JavaScript uopšte ne radi, u zaglavlju stoji pravilo koje ukida i uvodni ekran i skrivanje sekcija — sadržaj se vidi, bez animacija.

Jedna merna zamka je vredna pomena, jer se ponavlja na svakom sajtu sa gradijentnim naslovom. Glavni naslov je obojen gradijentom kroz tekst, što ga tehnički čini providnim — i automatski test ga zato ne računa kao najveći element na ekranu. Na tekstualnim stranama umesto njega kandidat postaje traka za kolačiće, koja se pojavljuje posle učitavanja, pa laboratorijski rezultat prikazuje pet sekundi. Nezavisno merenje u pravom brauzeru daje nešto preko jedne sekunde. Broj iz laboratorije je ovde artefakt, ne kvar, i tako je i tretiran.

SEO i lokalna vidljivost

Sve strane su prošle prolaz u kojem su naslovi skraćeni na dužinu koju pretraživač zaista prikazuje, opisi svedeni ispod sto šezdeset znakova, a prve linije na podstranama dobile ime grada. Naslov naslovne je sa devedeset dva znaka skraćen na pedeset osam i počinje pojmom, ne imenom firme.

Strukturisani podaci su najveći deo lokalnog posla. Sajt nosi povezani graf u kojem su tip prodavnice mobilnih telefona, organizacija, sam sajt i putanja kretanja, a uz njih adresa sa poštanskim brojem, geografske koordinate, radno vreme po danima, ocena sa brojem recenzija, datum osnivanja i broj zaposlenih. Posebno je nabrojano područje koje radnja pokriva — Leskovac, Vlasotince, Vladičin Han, Lebane, Bojnik, Medveđa i ceo okrug.

Jedna stvar je pritom morala da se ispravi. Blok sa čestim pitanjima bio je postavljen na nivou celog sajta, pa je pretraživaču javljan i na stranama na kojima pitanja uopšte nema. Prebačen je da se emituje samo na prodaji i servisu, tamo gde ta pitanja stvarno stoje na ekranu. Podatak koji obećava ono što posetilac ne vidi je greška koja se pre ili kasnije naplati.

Uz to idu hiper-lokalna zaglavlja koja se retko postavljaju: oznaka regiona, koordinate, ime mesta i kontakt podaci u obliku koji čitaju društvene mreže. Datoteka robots.txt izričito pušta i botove veštačke inteligencije, jer se sve više odgovora danas daje u razgovoru sa asistentom umesto u listi rezultata. Sitemap ima šest adresa i prijavljen je u oba pretraživača, a izmene se dodatno guraju kroz IndexNow.

Selidba na današnji host donela je i jedan poučan problem. Pretraživač je novi host obišao istog dana kada je pušten, dok je sadržaj bio identičan starom — i proglasio staru adresu kanonskom. Novi sajt je tako neko vreme bio uredan, indeksiran i nevidljiv u isto vreme. Rešenje je bilo trajno preusmerenje starih adresa, ručni zahtev za ponovni obilazak i strpljenje; tehnika je sve vreme bila ispravna, samo je pretraživaču trebalo reći koja je adresa prava. Posle tog prolaza sve strane nose stotinu poena na tehničkom delu revizije i prolaze proveru ispravnosti koda bez ijedne greške.

Analitika koja poštuje odgovor

Sajt meri posetu, ali tek kada posetilac to dozvoli. Traka za kolačiće nudi tri odgovora — prihvatanje, samo neophodno i podešavanja — a analitika je unapred postavljena na zabranjeno i čeka odluku. Funkcionalni kolačići rade uvek, jer bez njih sajt ne bi mogao da se prikaže ispravno.

Ta postavka je jedno vreme imala tihu grešku koju vredi ispričati, jer se ne vidi ni na jednom testu. Traka je pristanak upisivala pod jednim imenom, a deo koji pali analitiku čitao je pod drugim. Prvi put je sve radilo — posetilac klikne, merenje krene. Ali povratnik koji je već ranije pristao ne dobija traku, pa merenje za njega nikad nije ni startovalo. Rezultat je bila statistika koja sistematski gubi upravo one koji se vraćaju, dakle najvredniji deo posete. Ispravka je bila jedna reč u kodu; nalaženje je bilo ceo posao.

Politika privatnosti je napisana za ovaj sajt, ne prepisana: piše šta se prikuplja (anonimna statistika posete i to tek po pristanku), šta se ne prikuplja (nijedan podatak kroz formu, jer forme nema), i šta posetilac može da traži.

Šta radnja na kraju ima

Adresu na internetu koja radi bez staranja. Sajt stoji na serveru kao samostalna aplikacija iza servera koji je objavljuje, sa sertifikatom koji se sam obnavlja i punim skupom bezbednosnih zaglavlja. Nema dodataka koji se raspadnu pri sledećem ažuriranju, nema mesečne pretplate platformi, nema panela u koji neko mora da ulazi da bi sajt nastavio da radi.

Praktično, dan izgleda ovako: neko iz Vlasotinca traži gde se menja ekran, nađe stranu o servisu, pročita da je dijagnostika besplatna i da se cena kaže unapred, pritisne broj i pozove. Nema forme, nema čekanja odgovora, nema koraka između.

Ostaje jedna stvar koja ne zavisi od koda: prava adresa. Radnja ima profil na Google Maps-u sa ocenom i recenzijama, i taj profil je najjača poluga koju lokalni posao ima — kada mu se u polje sa sajtom upiše ova adresa, obe strane počinju da rade jedna za drugu. Kada radnja bude uzela i sopstveni domen, prelazak je pripremljen unapred.

Do tada sajt radi ono zbog čega je i pravljen: dvanaest godina rada iza pulta konačno ima gde da se vidi, i to na strani koja se otvara odmah i na najslabijoj vezi.

// Sajt uživo

Halo City Leskovac

Prodaja i servis mobilnih telefona u centru Leskovca — Bulevar Oslobođenja 1.

halocity.svilenkovic.rs

Često postavljana pitanja

Zašto sajt stoji na poddomenu, a ne na sopstvenom domenu?
Zato što radnja još nema svoj domen, a sajt je trebalo pustiti u rad. Poddomen ima sve što ima i pravi domen — sertifikat, sitemap, analitiku, zapis u alatima pretraživača. Jedina razlika je slabija polazna pozicija za lokalne upite. Prelazak na pravi domen je izmena DNS zapisa, sertifikata i kanonskih adresa uz trajno preusmerenje, ne izrada novog sajta.
Zašto na sajtu nema kontakt-forme?
Zato što u radnji sa tri čoveka za pultom niko ne prati sanduče tokom dana. Poruka iz forme čeka, telefon zvoni odmah. Umesto forme, na svakom ekranu stoje broj koji se pritiskom otvara u pozivniku i Viber sa unapred napisanom porukom, drugačijom za kupovinu i za servis.
Zašto na sajtu nema cena servisa?
Zato što cena zavisi od modela i od nabavne cene delova, pa cenovnik na sajtu zastari brže nego što se ažurira. Umesto iznosa, sajt obećava postupak: dijagnostika je besplatna, cena se kaže pre popravke, popravka kreće tek po odobrenju. To je obećanje koje se može ispuniti svaki dan.
Da li 3D pozadina usporava sajt na starijem telefonu?
Ne, i to je bio uslov. Trodimenzionalni sloj se ne učitava dok se strana ne prikaže do kraja, na telefonu se sam smanjuje na manje oblika i nižu rezoluciju, pauzira se kada kartica nije u prvom planu, a potpuno se isključuje ako je u sistemu uključeno smanjenje animacija ili ako brauzer ne podržava WebGL. U tom slučaju pozadinu nosi običan CSS sloj.
Zašto Next.js, a ne WordPress?
Zbog brzine i zbog toga što nema šta da se održava. Strane se serviraju kao unapred pripremljene, bez baze i bez dodataka koji traže ažuriranje svake nedelje. Sajt ove veličine na WordPress-u bi značio nekoliko dodataka za ono što ovde radi sam okvir, plus stalnu brigu o bezbednosti.
Koliko strana ima sajt i može li da se proširi?
Pet javnih strana plus politika privatnosti. Nova strana je nova ruta u kodu i jedan red u sitemapu — sajt je već jednom rastao iz jedne duge strane u pet, i već jednom smanjen kada je jedna usluga izbačena iz ponude.

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