Preskoči na sadržaj

Web aplikacije

Ne Zaboravi Me: platforma za brigu o grobnim mestima, od mape do foto-izveštaja

Online poručivanje uređenja grobnih mesta širom Srbije: cena po lokaciji, kartično plaćanje preko naše integracije, foto-izveštaj posle svake posete i jedna aplikacija za vlasnika i saradnike na terenu.

Ne Zaboravi Me: platforma za brigu o grobnim mestima, od mape do foto-izveštaja
Industrija
Uređenje i održavanje grobnih mesta širom Srbije
Sajt klijenta
nezaboravime.com

Obim rada

Strategija proizvoda, UX/UI dizajn, sopstvena WordPress tema, WooCommerce tok za usluge, cene po zonama, mapa grobalja, sopstveni plugin za kartično plaćanje, aplikacija za vlasnika i saradnike (PWA), mejlovi, SEO i provere

Rezultat

Ceo ciklus usluge u jednom sistemu, od izbora groba na mapi do foto-izveštaja kupcu; vlasnik vodi posao sa telefona. Googleov test brzine na telefonu: 99/100. Javno pušteno u rad 2. novembra 2026.

Klijent: Ne Zaboravi Me
Delatnost: uređenje i održavanje grobnih mesta, posete na tačno određeni datum
Tržište: cela Srbija, kupci iz Srbije i iz dijaspore
Tip projekta: web platforma za uslugu: WooCommerce tok za usluge, sopstvena integracija kartičnog plaćanja i aplikacija za tim (PWA)
Period izrade: jul - oktobar 2026; javno pušteno u rad 2. novembra 2026.
Sajt: nezaboravime.com


Ukratko

Ne Zaboravi Me je platforma za online poručivanje uređenja i održavanja grobnih mesta širom Srbije. Kupac na sajtu izabere groblje i tačno mesto na mapi, izabere paket, plati karticom i posle svake posete dobije foto-izveštaj „pre i posle“ u svom nalogu i mejlom.

Na prvi pogled to je sajt sa četiri paketa. U stvarnosti je to sistem koji vodi jedan uslužni posao od početka do kraja:

  • cena zavisi od lokacije: pet zona, izračunatih iz udaljenosti groblja;
  • baza grobalja sa Google mapama, ručnim unosom i redom za odobravanje novih grobalja;
  • javna mapa grobalja cele Srbije, sa granicama opština, zonama i pretragom koja razume ćirilicu i kucanje bez kvačica;
  • godišnji paketi koji posle jedne uplate sami naprave raspored od dve ili dvanaest poseta;
  • ponude po meri za lokacije i zahteve bez fiksne cene, sa linkom za plaćanje;
  • sopstvena integracija kartičnog plaćanja, sa kriptografski potpisanom potvrdom uplate;
  • jedna aplikacija sa dva radna panela, za vlasnika i za saradnike na terenu, sa slanjem fotografija i na slabom signalu i push obaveštenjima bez dodatne SaaS platforme.

Sve radi na WordPress i WooCommerce osnovi, bez frontend frameworka, build koraka i zasebnog backend-a. Ovo je naš najveći projekat ove godine i najbolji primer onoga što zovemo izradom web aplikacija: sajt koji nije samo izlog, nego alat kojim se posao zaista vodi.

Početna strana sajta nezaboravime.com: naslov Negujemo sećanje na one koje volite, dugmad Krenimo zajedno i Saznaj više i cvetna grana u pozadini
Početna strana nezaboravime.com: tih, dostojanstven ton i jasan put do paketa.

Klijent i problem

Usluga je namenjena porodicama koje ne mogu redovno da obilaze grob svojih najbližih, jer žive u drugom gradu ili u inostranstvu. U razgovorima o proizvodu ključno pitanje nije bilo samo „kako platiti“, nego kako na daljinu izabrati tačno mesto, znati šta usluga obuhvata i dobiti dokaz da je posao obavljen.

Klijent je od sistema tražio pet stvari:

  1. Jasnu cenu unapred, iako su groblja po celoj Srbiji i put do njih nije isti.
  2. Plaćanje karticom bez dogovaranja, i za kupce iz inostranstva.
  3. Dokaz o izvršenoj usluzi: fotografije pre i posle svake posete.
  4. Godišnju uslugu bez automatskog terećenja: paket se plati jednom, a novi ciklus kupac sam pokreće.
  5. Posao koji može da raste: više saradnika na terenu, a vlasnik sve vodi sa telefona.

U ovoj delatnosti važan je i ton. Tekst, dizajn i komunikacija morali su da budu tihi i dostojanstveni, bez agresivnog prodajnog jezika.

Izazovi

  1. Cena po lokaciji. Paketi su fiksni, a ista usluga košta različito u zavisnosti od udaljenosti. Kupac mora da vidi tačnu cenu pre plaćanja, a za udaljene lokacije sistem mora da pređe na ponudu.
  2. Lokacija koja nije adresa. Grob nema adresu. Potrebni su groblje kao zajednički pojam i tačan pin konkretnog mesta za svakog kupca, tako da se podaci jednog kupca nikad ne vide drugom.
  3. Groblja kojih nema u bazi. Nijedna baza ne pokriva sva groblja u Srbiji. Kupac mora moći da unese novo, a da baza ostane čista.
  4. Usluga, ne proizvod. WooCommerce misli u proizvodima i isporukama. Ovde jedna uplata znači dve ili dvanaest poseta tokom godine, sa rokovima, izvršiocima i foto-izveštajima.
  5. Kartično plaćanje u Srbiji. Izabrani model povezivanja zahtevao je sopstvenu integraciju, sa obradom uspešnih i odbijenih plaćanja, grešaka i ponovljenih poruka.
  6. Rad na terenu. Saradnici rade na grobljima, često sa slabim signalom, sa telefona. Fotografije ne smeju da se izgube, a vlasnik mora da zna gde su snimljene.
  7. Ograničenja klijenta. Bez promene platforme, bez build procesa, bez skupih servisa i bez komplikovanog održavanja.

Kako smo pristupili

  • Jedan sistem, bez nove infrastrukture. Javni sajt, nalog kupca, naplata, operativa i aplikacija za tim žive u istom WordPress-u. Tema je običan PHP, CSS i JavaScript.
  • Server je izvor istine. Cena, zona, vlasništvo nad podacima i status uplate uvek se proveravaju na serveru. Pregledač samo prikazuje.
  • Bez obećanja koja sistem ne može da ispuni. Uplata je uspešna samo uz proveren potpis odgovora. Plaćanje nije kraj usluge: ciklus ostaje otvoren dok postoje neizvršene posete.
  • Sadržaj i podešavanja pripadaju klijentu. Tekstovi, cene, zone, logotipi i prekidači se uređuju u administraciji, bez programera.
  • Sve je reverzibilno. Funkcije koje se trenutno ne koriste, kao naplata u evrima ili dodatni načini plaćanja, gase se prekidačem. Ne brišu se, pa se vraćaju bez novog razvoja.

Cena koja zavisi od lokacije

Zone se računaju iz vazdušne udaljenosti groblja od centra Beograda, uz radijuse koje vlasnik podešava u administraciji. Groblje ili grad mogu imati i ručno dodeljenu zonu. Zone od 1 do 4 imaju fiksne cene, a zona 5 automatski prelazi na ponudu.

  • Cena je za ceo paket, ne „po poseti“, i uvek se potvrđuje iz izabrane lokacije pre plaćanja.
  • Isti algoritam koriste javni pregled cena, plaćanje, ponude i obnova paketa. U pregledaču ne postoji duplirana logika koja bi mogla da pokaže drugačiju cenu.
  • Četiri usluge: jednokratna poseta, godišnji paket sa 2 posete, godišnji paket sa 12 poseta i poseta na tačno određeni datum (godišnjica, pomen, Zadušnice), uz buketić cveća i sveću.
  • Paketi sa sopstvenim identitetom. Klijent nije želeo pet istih kartica koje razlikuje samo linija u boji. Napravili smo četiri paketa sa umetničkim akcentima i poseban blok za poseban zahtev, poravnate na svim širinama ekrana.
  • Pregled cene po zoni na licu mesta. Kupac izabere zonu i sve kartice odmah pokazuju cenu i oznaku zone u boji te zone sa mape, bez čekanja na server.
Stranica Paketi sa izabranom zonom 3: četiri paketa sa cenama i oznakom Zona 3 na svakoj kartici
Paketi sa izabranom zonom 3: sve kartice odmah prikazuju cenu i oznaku zone u boji te zone sa mape.

Groblje, počivalište i poseta

Sistem razlikuje tri pojma koja se lako pomešaju:

  • Groblje: zajednički katalog sa centrom groblja, gradom i zonom.
  • Počivalište: tačno mesto konkretnog kupca, grob ili urna, sa pinom, imenom pokojnika i opisom lokacije. Kupac vidi samo svoje zapise; vlasnik i dodeljeni saradnik vide ono što im treba za posao.
  • Poseta: izvršenje usluge za određenu uplatu, počivalište i datum.

Google mapa se učitava tek kada je zaista na ekranu, sa sopstvenim oznakama grobalja iz baze i pretragom obližnjih grobalja. Izbor groblja je pretraga prilagođena telefonu, grupisana po gradovima, umesto dugačkog padajućeg menija, uz opciju „Groblje nije na listi“. Ručni unos kupca postaje predlog: slični predlozi se grupišu, a vlasnik ih odobrava, spaja sa postojećim grobljem ili odbija. Centar groblja se pri tom čuva odvojeno od ličnog pina kupca, pa povezivanje sa bazom nikad ne pomera nečiji grob.

Mapa grobalja: ideja iz našeg brainstorminga

Mapa je nastala iz našeg internog brainstorminga o tome kako kupcu na daljinu najbrže odgovoriti na pitanje „dolazite li i do mog groblja, i u kojoj je zoni?“. Klijentu se ideja dopala, pa smo je razvili u alat za pronalaženje groblja, a ne samo u ilustraciju pokrivenosti.

Mapa grobalja Srbije sa granicama opština i oznakama gradova; broj u kružiću je zona, a u uglu stoji oznaka © OpenStreetMap
Mapa grobalja: sopstveni SVG sa granicama 145 opština, broj u kružiću je zona.
  • Bez Google Maps-a na javnoj mapi. Mapa je sopstveni SVG: ručno nacrtan obris Srbije i projekcija kalibrisana prema poznatim gradovima. Javna stranica nema API pozive ni trošak po prikazu; Google mapa ostaje samo tamo gde treba tačan pin groba.
  • 145 opština u oko 12 KB. Granice opština su iz otvorenih podataka OpenStreetMap-a, preslikane u projekciju naše mape. Granica između dve opštine crta se samo jednom, a sloj se učitava tek posle prikaza strane.
  • Broj u kružiću je zona, u boji te zone, iste kao na paketima.
  • Pretraga razume kako ljudi kucaju: bez kvačica („pancevo“), ćirilicom („Земун“) i sa „dj“ umesto „đ“. Za dijasporu sa stranim tastaturama to je presudno.
  • Natpisi iste veličine na svakom uvećanju. Raspored bira mesto za svaki naziv tako da se ne preklapaju; kad mesta nema, skloni se manje važan naziv, a oznaka ostaje.
  • Jedan prst skroluje stranu, dva pomeraju mapu. Na telefonu mapa ne zarobi skrolovanje, a u mirovanju ne troši procesor.
  • Od mape do cene u dva klika. Izabrano groblje, pa „Pogledajte pakete“, i cene su već za pravu zonu.
Dva ekrana telefona: pretraga Земун ćirilicom predlaže Zemunsko groblje, a mapa ispod prikazuje gradove sa zonama
Na telefonu: pretraga ćirilicom pronalazi Zemunsko groblje, a mapa pokazuje zone gradova.

Mapa je orijentaciona: granice su pojednostavljene, a cenu uvek potvrđuje izabrano počivalište. Podaci o opštinama su © OpenStreetMap saradnici, i ta oznaka je vidljiva na mapi.

Kupovina bez korpe

  • Korpa je samo tehnički korak. Jedna usluga, količina jedan, bez ikonice i koraka korpe. Izbor paketa vodi pravo na plaćanje.
  • Plaćanje kao vođeni tok: prijava ili registracija, zatim izbor postojećeg ili unos novog počivališta na mapi, dodatni zahtevi, podaci, saglasnost sa uslovima i kartica.
  • Ponude po meri. Za zonu 5 i posebne zahteve sistem beleži zahtev bez naplate. Vlasnik unese ukupan iznos i napomenu, kupac dobija mejl sa dugmetom „Prihvati ponudu i plati“, a plaćanje ide kroz isti tok uz proveru vlasništva. Posete nastaju tek posle uplate.
  • Različita obećanja, ne samo različite cene. Standardna prva poseta planira se u roku od 15 dana od uplate, a poseta na tačan datum traži izbor i plaćanje najmanje 30 dana ranije. Ta razlika putuje od kataloga do zadatka na terenu.
  • Obnova bez automatskog terećenja. Trideset dana pre isteka godišnjeg paketa u nalogu se pojavi „Obnovi paket“: isto počivalište, isti paket, po trenutnom cenovniku. Vlasnik može da uključi i podsetnike mejlom.

Kartično plaćanje: sopstvena integracija

Ovo je tehnički najzahtevniji deo projekta. Za izabrani model povezivanja napravili smo izolovan plugin koji kupca vodi na zaštićenu platnu stranicu banke. Kupac pun broj kartice i sigurnosni kod ne unosi na našem sajtu, i sajt ih ne čuva. Prihvataju se Visa, Mastercard, Maestro i DinaCard.

  • Svaki pokušaj ima svoju referencu, odvojenu od broja usluge, pa se ponovljena poruka o istom plaćanju razlikuje od novog pokušaja.
  • Zahtev i odgovor su kriptografski potpisani (HMAC-SHA256), uz proveru otpornu na vremenske napade. Ključevi nisu u bazi, nego u konfiguraciji servera.
  • Ishod potvrđuje server, ne pregledač. Potvrda stiže direktno na server, bez obzira na to šta kupac radi u pregledaču. Stranica „hvala“ ili nepotpisan povratak nikad ne potvrđuju uplatu.
  • Nema duplih uplata. Zaključavanje u bazi i oporavak prekinute obrade sprečavaju da ponovljena potvrda napravi dupli raspored poseta. Sumnjive situacije idu na ručnu proveru umesto da se automatski prihvate.
  • Potvrda plaćanja na stranici zahvalnosti, u nalogu i u mejlu, sa svim propisanim podacima i jasnom napomenom da to nije fiskalni račun.
  • Administracija ima pregled pokušaja plaćanja samo za čitanje, bez opasnog dugmeta „označi kao plaćeno“.

Prošli smo predviđene scenarije uspešnih i odbijenih plaćanja, sistemskih grešaka i duplikata, uz izolovane testove potpisa, iznosa i ponovljene obrade. Za svaku probnu kupovinu proveravali smo i stanje usluge i nastanak poseta, ne samo poruku o uspehu.

Potvrda koja nije stizala: dva zida ispred sajta

Plaćanja su prolazila, ali server nije dobijao potvrdu o ishodu. Uzrok su bila dva nezavisna sloja zaštite: hosting je proveravao da li je posetilac bot (a potvrdu šalje server, ne čovek), a iza njega je Cloudflare blokirao isti zahtev. Rešenje nije bilo gašenje zaštite za ceo sajt. Napravili smo dva uska izuzetka samo za adresu na koju stiže potvrda, a pravu sigurnost i dalje daje potpis svake poruke. Završni test: usluga je prešla u obradu dok je kupac još bio na platnoj stranici, pre nego što se vratio na sajt.

Prikaz cene ne sme da menja iznos naplate

Rano testiranje je pokazalo da je podešavanje decimala za prikaz uticalo na iznos koji se šalje na naplatu. Razdvojili smo ta dva pravila i dodali test koji proverava isti iznos bez obzira na prikaz. Lekcija: nije dovoljno proveriti cenu na ekranu, mora se proveriti i iznos koji sistem zaista šalje.

Jedna uplata, više poseta

Ovo je važnija razlika od broja paketa. Naplata, pojedinačna poseta i godišnji ciklus imaju odvojena stanja, i nijedno dugme „završeno“ ih ne spaja:

DogađajŠta sistem radiŠta još nije završeno
Zahtev bez konačne ceneBeleži lokaciju i obim, čeka ponuduNema naplate ni rasporeda poseta
Potvrđena uplataOtvara uslugu i pravi predviđene posetePosao na terenu time nije obavljen
Saradnik šalje fotografije pre i poslePredaje posetu vlasniku na odobrenjeKupac još ne vidi izveštaj
Vlasnik odobravaObjavljuje izveštaj i označava posetu izvršenomOstale posete godišnjeg paketa ostaju otvorene
Nema otvorenih posetaZatvara ciklus ako je bar jedna poseta izvršenaOtkazane posete se ne prikazuju kao izvršene
ObnovaPovezuje novu uplatu sa istim počivalištem i važećom cenomNema automatskog terećenja kartice

Nalog kupca i foto-izveštaji

  • Planirane posete grupisane po uplati, sa rednim brojem (na primer 3 od 12), rokom i stanjem.
  • Foto-izveštaji pre i posle sa galerijom; mejl donosi fotografije u prilogu i link ka nalogu.
  • Jezik usluge, ne prodavnice. Kupac ne vidi „narudžbine“ i „porudžbine“, nego „usluge“, „zahtev“, „ponudu“ i „posetu“, svaki sa jasnim značenjem. Poruke „odabir je primljen“, „plaćanje je potvrđeno“ i „sve posete su izvršene“ nikad se ne mešaju, pa prijatan ton ne sakriva stvarno stanje.
  • Prijava i registracija u dizajnu sajta, sa potvrdom mejla i ponovnim slanjem linka koje ne otkriva da li nalog postoji.

NZB Panel: jedna aplikacija za vlasnika i teren

Ovaj deo projekat podiže sa web prodavnice na platformu. NZB Panel je PWA, aplikacija koja se sa sajta dodaje na početni ekran telefona, bez App Store-a i Google Play-a. Posle prijave vlasnik vidi panel Upravljanje, a saradnik panel Saradnik.

NZB Panel na dva telefona: lista poseta saradnika grupisana po hitnosti i pregled dana za vlasnika sa posetama na odobrenju
NZB Panel: posete saradnika po hitnosti i pregled dana za vlasnika (prikaz sa izmišljenim podacima).

Panel za saradnike na terenu

  • Dodeljene posete grupisane po hitnosti: zakasnelo, danas, narednih sedam dana, kasnije. Unutar grupe sortirane po groblju, da se obilasci lakše spoje.
  • Detalj posete sa navigacijom (pin groba, pa centar groblja), referentnom fotografijom sa prethodne posete i jasno opisanim zadatkom.
  • Slanje fotografija na slabom signalu. Telefon pročita vreme i GPS iz originala, smanji fotografiju i sačuva je na uređaju pre slanja. Šalje po dve paralelno, sa trakom napretka, nastavlja kad se veza vrati i nikad ne pravi duplikat.
  • Server proverava stvarni tip, veličinu i dimenzije fajla, a kupac fotografije ne vidi dok ih vlasnik ne odobri.

Panel za vlasnika

  • Pregled dana: posete na odobrenju, novi zahtevi, nedodeljene, današnje i zakasnele posete, ponude bez odgovora i izveštaji čiji mejl kupcu nije prošao, uz ponovno slanje.
  • Odobravanje uz podatke o lokaciji. Uz svaku fotografiju stoje autor, vreme i udaljenost od groba, uz upozorenje kada nešto ne odgovara. Vlasnik odobrava ili vraća saradniku sa razlogom.
  • Dodela više poseta odjednom, promena datuma i otkazivanje.
  • Posebni zahtevi i ponude sa telefona, sa linkom za plaćanje.
  • Mali CRM: saradnici (poziv mejlom za postavljanje lozinke, lozinka se nikad ne šalje), usluge sa pretragom i klijenti sa istorijom.
  • Obnove paketa i statistika: izvršene posete, poštovanje rokova, prihod po mesecu i učinak po saradniku.
  • Odobravanje novih grobalja uz satelitski snimak.

Ispod haube

  • Push obaveštenja bez SaaS platforme. Web Push smo napisali u PHP-u (VAPID, šifrovanje po RFC 8291, ES256 potpis) i proverili ga bajt po bajt zvaničnim test-vektorom. Saradnik dobija obaveštenje o dodeli i vraćanju posete, a vlasnik o novom zahtevu, uplati i fotografijama za odobrenje. Isporuku i dalje obavljaju push servisi pregledača, uz dozvolu na telefonu.
  • Odmeren offline rad. Aplikacija čuva izgled i offline stranicu, a fotografije čekaju na uređaju dok ne odu na server. Liste klijenata, odgovori servera i galerije se ne čuvaju na telefonu, pa aplikacija ne obećava rad bez veze koji ne može da ispuni.
  • Prijava unutar aplikacije, jer iPhone odvaja kolačiće instalirane aplikacije od pregledača.
  • Stranica „Preuzmi aplikaciju“ za manje tehnički vešte korisnike: jedno dugme na Androidu, a na iPhone-u vodič korak po korak sa obeleženim snimcima ekrana.

Pravila za prihvatanje kartica i pravni sadržaj

Sajt koji prima platne kartice mora da ispuni jasna pravila o sadržaju, logotipima i potvrdama. Implementirali smo opšte uslove poslovanja iz klijentovog dokumenta (uz ispravljene podatke firme iz zvaničnih izvora), politiku privatnosti i kolačića sa sopstvenim panelom za saglasnost, obrazac za odustanak od ugovora i potvrdu plaćanja. Logotipi kartica su neizmenjeni originalni fajlovi, raspoređeni po propisanim primerima: u jednom redu na računaru i u tri centrirana reda na telefonu, provereno na deset širina ekrana. Footer prikazuje samo ono što je aktivno.

Mejlovi na srpskom, sa pravim pošiljaocem

Pregled svih mejlova koje sistem šalje pokazao je da su WooCommerce mejlovi išli na engleskom. Sada su svi na srpskom, u brendiranom omotaču koji se uklapa u ekran telefona, sa logom u PNG formatu jer Gmail i Outlook ne prikazuju SVG. Mejl „plaćanje potvrđeno“ ide samo uz potvrđenu transakciju. Objavljen izveštaj i poslat mejl nisu ista radnja: ako slanje ne uspe, izveštaj ostaje u nalogu kupca, a vlasnik ga vidi na listi za ponovno slanje.

Brzina, keš i SEO

  • Brzina na telefonu je bila jedan od glavnih ciljeva: WooCommerce stilovi se ne učitavaju gde nisu potrebni, dekorativni element koji je bio najveći na ekranu postao je inline SVG, a fontovi su sa sopstvenog servera, u podskupovima samo sa latinicom i srpskim slovima.
  • Keš sa pravilima za prodavnicu usluga. Plaćanje, nalog, paneli i potvrda plaćanja se nikad ne keširaju, a rok keša je usklađen sa sigurnosnim tokenima u formama.
  • Svesno protiv hiljada tankih stranica. Umesto masovno generisanih stranica po gradovima i grobljima, jedna kvalitetna mapa grobalja. Google ne voli tanak, ponovljen sadržaj, a kupcu ne treba hiljadu skoro istih strana.
  • Strukturirani podaci i GEO. Jedinstven schema graf (organizacija, usluga, česta pitanja, kontakt, mapa kao kolekcija) i tekstovi koji odmah daju konkretan odgovor, bez izmišljenih recenzija i statistike, da bi ih i AI pretraživači tačno citirali.
  • Privatno ostaje privatno. Počivališta, izveštaji i lokacije kupaca su izvan sitemap-a, javnog API prikaza i schema grafa.

Keš koji je „zapamtio“ izbor paketa

Posle prelaska na novi keš kupci su na plaćanju dobijali paket koji su izabrali ranije, ili praznu korpu. Keš je sačuvao preusmerenje koje u pozadini menja korpu. Rešenje je pravilo da se nijedno preusmerenje i nijedan zahtev koji menja stanje ne kešira, potvrđeno pravim sesijama: paket 2, pa 1, pa 1, pa 2.

Bezbednost

  • Pun broj kartice i sigurnosni kod se ne unose na sajtu.
  • Provera vlasništva i zaštita od lažnih zahteva za svaku izmenu podataka: počivalište, izveštaj, uslugu i posetu.
  • Uloge Vlasnik i Saradnik imaju samo potrebna prava, bez pristupa administraciji WordPress-a.
  • Sigurnosna zaglavlja, zaštita od spama i ograničenje broja zahteva na osetljivim formama; korisnička imena se ne otkrivaju kroz API.

Iz razvoja: tri priče

„Je l’ slika baš sa tog groba?“

Vlasnik ne može da obiđe svaku lokaciju. Zato aplikacija uz svaku fotografiju pokazuje raspoloživo vreme snimanja i udaljenost od groba, sa oznakom izvora podatka, i upozori kada fotografija deluje snimljena drugog dana ili daleko od groba. GPS je pomoć pri odluci, ne nepogrešiv dokaz, i odluka ostaje vlasniku. Vrednost je u tome da se sumnjiv ili nepotpun podatak vidi pre nego što izveštaj stigne kupcu.

Broj na mapi koji ne sme da pogreši zonu

Na telefonu su oznake Beograda i Pančeva preblizu. Uobičajeno rešenje, spojiti ih u jednu oznaku, dalo bi „1-2“ pored imena Beograda, a kupac bi to pročitao kao „Beograd je u dve zone“. Zato se spajaju samo gradovi iste zone, a različite zone se blago razmaknu, sa tankom linijom do stvarne lokacije. Ako za naziv nema mesta, skloni se naziv, nikad broj.

Ukras koji je zaposlio ceo procesor telefona

Za početnu stranu stigao je animirani ukras: grana sakure koja se talasa, sa laticama koje padaju. Podelili smo ga na lak deo (latice, u samoj strani) i težak deo (talasanje grane, učitava se posle prikaza i samo na većim ekranima). Latice su i dalje trošile ceo procesor sporijeg telefona. Uzrok je bilo jedno staro pravilo iz osnove teme, zbog koga pregledač u svakom kadru ponovo primenjuje ceo stilski fajl na svaki animirani element. Jedno usko pravilo spustilo je opterećenje praktično na nulu. Lekcija: animaciju meriti na pravoj strani, ne samo izolovano.

Kako smo proveravali

Automatski testovi u pregledaču na pet veličina ekrana, posebni testovi za tokove koji menjaju podatke (registracija, plaćanje, kontakt) i izolovani PHP testovi za svaku celinu: potpise i iznose plaćanja, ponude, obnove, panele, push i mejlove. Snimke ekrana od 320 do 1440 piksela otvaramo i pregledamo, a merenja proveravaju prelivanje, veličinu dodirnih površina i poravnanje. Svaka izmena na serveru ide uz rezervnu kopiju i proveru da je na server stigao baš onaj fajl koji smo poslali.

Rezultat

  • Ceo ciklus usluge u jednom sistemu: izbor lokacije, cena, plaćanje, raspored poseta, rad na terenu, odobrenje, foto-izveštaj kupcu i podsetnik za obnovu.
  • Vlasnik vodi posao sa telefona, bez administracije WordPress-a.
  • Bez zasebne SaaS pretplate za panel, push obaveštenja, red fotografija i saglasnost za kolačiće. Hosting, mape i naplata imaju svoje troškove; projekat nije sistem bez troškova, ali nema pretplata koje mu ne trebaju.
  • Sve na standardnom WordPress hostingu, bez build procesa, sa temom koju sledeći programer može da čita.
  • Googleov test brzine na telefonu: 99/100. Glavni sadržaj početne strane prikazuje se za 1,4 s, a raspored se skoro ne pomera dok se stranica učitava. Mereno u PageSpeed Insights 12. novembra 2026, na simuliranom telefonu i sporoj 4G mreži; pristupačnost 97, najbolje prakse 100, SEO 92. To je laboratorijski test: podataka stvarnih posetilaca za ovako nov sajt Google još nema.
  • Javno pušteno u rad 2. novembra 2026.

Šta još pratimo

Platforma je tek počela da radi, pa poslovne rezultate ne izmišljamo unapred. Posle prvih meseci rada dopisaćemo izvršene posete i foto-izveštaje, vreme od uplate do prve posete, brzinu iz stvarnih podataka posetilaca i udeo kupaca iz inostranstva. Stopu obnove godišnjih paketa moći ćemo da pokažemo tek kada prvi ciklusi dospeju za obnovu.

Tehnologije

SlojTehnologije
PlatformaWordPress, WooCommerce, ACF
TemaSopstvena tema: PHP, CSS sa tokenima, vanilla JavaScript, bez build koraka
PlaćanjeSopstveni WooCommerce payment gateway, HMAC-SHA256, potvrda uplate na serveru
MapeGoogle Maps JavaScript API i Places API; sopstvena SVG mapa Srbije sa granicama opština (OpenStreetMap)
AplikacijaPWA: manifest, service worker, IndexedDB, Web Push (VAPID, RFC 8291), REST API
Pozadinski posloviWooCommerce Action Scheduler za podsetnike i obnove
BrzinaLiteSpeed Cache, Cloudflare, sopstveni fontovi u podskupovima
SEOYoast SEO i sopstveni schema graf
ProverePlaywright, Lighthouse, PHP testovi
DizajnFigma

Hronologija

PeriodFaza
Jul 2026.Dizajn u Figmi, vizuelni identitet, tema, nalog kupca, počivališta, Google mape, zone i cene
Avgust 2026.Baza grobalja i red za odobravanje, izbor groblja sa pretragom, planirane posete i ponude, paketi sa novim identitetom
Septembar 2026.Model bez automatskog terećenja, razvoj sopstvenog plugina za kartično plaćanje
Oktobar 2026.Testiranje plaćanja, pravila za prihvatanje kartica, NZB Panel za vlasnika i saradnike, push obaveštenja, mejlovi na srpskom, novi keš i nova mapa grobalja
2. novembar 2026.Javno puštanje u rad

Imate uslužni posao koji treba da radi online?

Ako vaš posao nije „proizvod u korpu“, nego usluga sa lokacijom, rokovima i ljudima na terenu, sajt ne treba da se pretvara da je prodavnica. Rado ćemo pogledati kako vi radite i predložiti šta zaista treba da bude u sistemu.

Pozovite odmah