Shadow Style Shop — prodavnica majica sa konfiguratorom po meri
Prodavnica majica sa printom kojoj je trebalo više od kataloga: kupac mora da može da pošalje svoj dizajn, da ga vidi na majici pre nego što poruči, i da mu cena padne kada uzme više komada. Sve to u sopstvenom kodu, bez platforme i bez mesečne pretplate.
- Klijent
- Shadow Style Shop
- Delatnost
- Majice sa printom, DTF štampa
- Područje
- Cela Srbija
- Tip
- Web prodavnica sa konfiguratorom
- Tehnologije
- PHP 8.3 · SQLite · Fabric.js · Service Worker
- Sajt
- shadowstyleshop.rs
- Status
- Živ sajt, u aktivnom održavanju
U ovom tekstu
- Čime se Shadow Style Shop bavi
- Šta je trebalo rešiti
- Katalog i stranica proizvoda
- Konfigurator — majica po sopstvenom dizajnu
- Korpa, popust na količinu i naplata
- Admin panel — sve što stigne, na jednom mestu
- Tehnička izvedba
- Brzina, ponašanje van mreže i kolačići
- SEO i vidljivost
- Šta klijent na kraju ima
Čime se Shadow Style Shop bavi
Shadow Style Shop prodaje majice sa printom i izrađuje majice po dizajnu koji kupac sam pošalje. Štampa se radi DTF tehnikom na pamučnim majicama, a isporuka ide u celoj Srbiji — bez fizičke radnje, sve preko sajta i Instagrama.
Katalog je podeljen u sedam kolekcija: Anime, Cars & Motorcycle, Random, Brands, Rock & Metal, Gucci i Stranger Things. Anime je najveća sa nekoliko desetina printova, a ukupno ih je preko sto — brojka koja i dalje raste, jer se novi dizajni dodaju kroz admin panel.
Drugi deo posla je ono što nijedan gotov šablon ne rešava dobro: kupac ima svoju sliku, hoće je na majici, i pre porudžbine hoće da vidi kako to izgleda. Taj deo je i bio glavni razlog da se sajt radi od nule.
Šta je trebalo rešiti
Zahtev nije bio „napravi shop", nego četiri konkretne stvari koje moraju da rade zajedno:
- Katalog koji se lako širi — nove printove i cele kolekcije dodaje vlasnik, bez mene i bez dodirivanja koda.
- Majica po sopstvenom dizajnu — kupac otprema svoju sliku, pomera je i skalira po majici, bira boju majice i poziciju printa, i to za prednju i za zadnju stranu.
- Popust na količinu koji se ne može izigrati — od tri komada naviše cena po majici pada, ali cena se mora računati na serveru, ne u brauzeru.
- Jedno mesto za sve što stigne — porudžbine, poruke sa kontakt-forme i zahtevi za custom dizajn ne smeju da budu na tri različita mesta.
Uz to su išli uslovi koji za srpsku online prodavnicu nisu opcioni: reklamacije, pravo na odustajanje u roku od 14 dana, uslovi korišćenja i politika privatnosti — sve napisano i objavljeno, ne prekopirano sa tuđeg sajta.
Katalog i stranica proizvoda
Naslovna vodi u dva pravca: Pogledaj shop za one koji biraju iz kolekcije i Kreiraj majicu za one koji imaju svoju ideju. Ispod toga idu istaknuti proizvodi, pa kolekcije sa brojem dizajna u svakoj, pa objašnjenje custom procesa u četiri koraka.
Katalog na /shop filtrira se po kolekciji preko URL parametra, tako da svaka kolekcija ima svoju adresu koja se može podeliti i indeksirati. Svaki proizvod ima sopstvenu stranicu sa slug adresom, punom slikom printa, izborom veličine i količine, i jasno ispisanim uslovom za količinski popust.
Slike proizvoda prolaze kroz optimizaciju pri otpremanju: iz jedne otpremljene slike nastaju JPEG, WebP i AVIF verzija, a server bira format prema tome šta brauzer podržava. Za katalog sa preko sto proizvoda to je razlika između sajta koji se otvara odmah i sajta koji se čeka.
Konfigurator — majica po sopstvenom dizajnu
Srce sajta je stranica /custom. Kupac otprema svoju sliku, pomera je i menja joj veličinu direktno preko mockup-a majice, bira boju majice i poziciju printa — i to odvojeno za prednju i zadnju stranu.
Ispod haube je platno rađeno u Fabric.js sa samostalno hostovanom bibliotekom (bez CDN-a), a mockup se automatski bira prema odabranom artiklu. Kada kupac završi, obe strane se eksportuju kao slike i zajedno sa izborom veličina odlaze na server u jednoj poruci.
Na serveru zahtev dobija svoj referentni broj, snima se u bazu i istog trenutka stiže na mejl vlasniku — sa obe strane dizajna kao prilogom, da može da odgovori ponudom bez otvaranja panela. Klasična forma sa otpremanjem fajla ostala je kao rezerva ispod konfiguratora, za kupca kome je tako lakše.
Detalj koji se ne vidi, a pravi razliku: otpremanje ne veruje ekstenziji fajla nego proverava stvarni tip sadržaja, a slike se čuvaju van dohvata izvršavanja. Forma koja prima tuđe fajlove je najosetljivija tačka svake prodavnice i tako je i tretirana.
Korpa, popust na količinu i naplata
Popust na količinu je jednostavno pravilo — od tri majice naviše cena po komadu pada — ali je izveden tako da radi na dva nivoa. U korpi kupac odmah vidi koliko štedi i koliko mu još komada fali do popusta. Pri slanju porudžbine server ponovo računa celu cenu iz svoje baze i ignoriše sve što je stiglo sa klijenta, pa se u belešku porudžbine upisuje koji je popust primenjen i zašto.
To nije teorijska mera opreza: korpa koja veruje cenama iz brauzera je prodavnica u kojoj se cena menja iz konzole. Ovde se ta putanja ne postoji.
Porudžbina prolazi kroz korpu, naplatu i stranicu potvrde, upisuje se u bazu sa stavkama i statusom, i pojavljuje se u admin panelu. Plaćanje ide pouzećem — bez kartica na sajtu, što za ovaj tip prodavnice znači manje troška, manje obaveza i nijednu tuđu tajnu na serveru.
Admin panel — sve što stigne, na jednom mestu
Vlasnik ne dobija „CMS" nego panel koji radi tačno ono što mu treba: proizvodi i kolekcije, porudžbine sa stavkama i statusima, zahtevi iz konfiguratora sa pregledom obe strane dizajna, poruke sa kontakt-forme, newsletter i podešavanja kao što je cena dostave.
Poruke su najzanimljiviji deo. Panel je povezan sa poštanskim sandučetom prodavnice u oba smera — odgovor napisan u panelu odlazi kao pravi mejl i završava u poslatoj pošti, a dolazna pošta se uvozi nazad u prepisku. Vlasnik može da odgovori kupcu iz panela ili iz mejl aplikacije, prepiska je ista.
Ista logika važi i za konfigurator: zahtev iz panela i mejl koji stiže vlasniku su isti zapis, samo dva pogleda na njega.
Tehnička izvedba
Sajt je pisan u PHP-u 8.3, bez WordPress-a i bez ijednog dodatka koji bi trebalo održavati i ažurirati. Podaci stoje u SQLite bazi — proizvodi, kategorije, porudžbine i stavke, poruke, custom zahtevi, newsletter, podešavanja i SEO zapisi po strani.
Zašto SQLite, a ne MySQL: prodavnica ove veličine ima jednog pisca i mnogo čitalaca. SQLite tu daje isti rezultat uz jedan sistem manje koji može da padne, a ceo sadržaj sajta staje u jedan fajl koji se prekopira u sekundi. Ako obim jednog dana naraste, prelazak na MySQL je izmena sloja za pristup podacima, ne novi sajt.
Adrese su čiste — /shop, /custom, /product?slug=… — kroz sopstveni ruter u index.php. Verzije sa .php nastavkom trajno se preusmeravaju na čiste, ali samo kada ih traži pravi posetilac; interno preusmeravanje servera se izuzima, jer bi inače nastala beskonačna petlja koja ubije ceo sajt osim naslovne. Taj detalj je jednom već bio oborio sajt i od tada je rešen na nivou konfiguracije servera.
Brzina, ponašanje van mreže i kolačići
Slike su najteži deo prodavnice majica, pa su i najviše dobile pažnje: WebP i AVIF verzije za sve, izbor formata na serveru prema zaglavlju brauzera, i godišnji keš sa nepromenljivim otiskom u imenu fajla. Fontovi i stilovi se učitavaju tako da prvi ekran ne čeka ono što mu nije potrebno.
Sajt ima Service Worker i PWA manifest — može da se doda na početni ekran telefona i da preživi lošu vezu. Registracija radnika je namerno odložena posle učitavanja, da ne otima propusni opseg prvom prikazu.
Analitika je postavljena sa Consent Mode v2: dok posetilac ne pristane, mere se samo neophodne stvari. Baner nudi i odbijanje, a izbor se pamti i poštuje pri sledećoj poseti. To nije kozmetika — to je razlika između sajta koji poštuje odluku posetioca i sajta koji je ignoriše.
SEO i vidljivost
Svaka kolekcija, svaki proizvod i svaka informativna strana imaju svoj naslov, opis i kanonsku adresu — ne generisane po šablonu, nego zapisane u bazi po strani. Sajt nosi Organization i Product schema podatke, ima sitemap sa preko hiljadu adresa i verifikovan je u Google Search Console-u.
Sitne stvari koje se najčešće preskaču takođe su rešene: preusmerenja sa starih i alternativnih adresa (/uslovi, /politika-privatnosti), robots.txt koji ne blokira ono što treba da se indeksira, i pravila servera koja odbijaju pristup rezervnim kopijama fajlova — jer izvorni kod prodavnice koji se servira kao običan tekst je propust koji se ne primeti dok ne bude kasno.
Šta klijent na kraju ima
Prodavnicu koja je njegova. Nema mesečne pretplate platformi, nema provizije po prodaji, nema dodataka koji se raspadnu pri sledećem ažuriranju. Kod i baza stoje na serveru, mogu se prekopirati i preseliti.
Praktično, dan izgleda ovako: novi print se doda kroz panel i istog trenutka je u katalogu; zahtev iz konfiguratora stiže na mejl sa slikom dizajna i referentnim brojem; porudžbina se vidi u panelu sa svim stavkama; odgovor kupcu se piše tamo gde je zgodnije, a prepiska ostaje ista.
Sajt je i dalje u aktivnom održavanju — kolekcija Rock & Metal je dodata u avgustu 2026, zajedno sa proširenjem konfiguratora. Ono što se menja, menja se na živom sajtu, sa rezervnom kopijom pre svake izmene.
Sajt u slikama
Shadow Style Shop
Katalog od preko sto printova, konfigurator za sopstveni dizajn i isporuka u celoj Srbiji.
shadowstyleshop.rsČesto postavljana pitanja
Zašto custom PHP, a ne WooCommerce ili Shopify?
Može li vlasnik sam da dodaje proizvode?
Kako radi popust na količinu?
Da li sajt radi na telefonu?
Koliko traje izrada ovakve prodavnice?
Šta se dešava ako se prodavnica proširi?
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.