Predstavitvena spletna stran za Artech (Robert Atanasov s.p.), slovenskega obrtnika za kovinske in aluminijaste ograje, nadstreške, vrata in konstrukcije iz Marezig. Podjetje pokriva trg v Sloveniji, na Hrvaškem, v Italiji in Avstriji.
Obišči živo stran →
Stranka je potrebovala stran, ki ne bo le digitalna vizitka, ampak bo dejansko prinašala povpraševanja — z možnostjo, da potencialni naročnik priloži načrt ali fotografijo projekta. To je prineslo tri konkretne pasti:
Dodatna zahteva je bila vzdržnost: stranka želi enostavno, poceni gostovanje in predvidljive stroške, brez mesečnih naročnin na orodja tretjih oseb.
Odločil sem se za statično stran v čistem HTML/CSS/vanilla JavaScriptu, brez ogrodja. Pri obsegu nekaj predstavitvenih strani bi framework prinesel več režije (build, odvisnosti, vzdrževanje) kot koristi; čista izvedba je hitra, lahka za gostovanje in jo bo mogoče vzdrževati tudi čez leta.
Za obrazec sem napisal lasten PHP backend namesto naročnine na storitev kot je Formspree. Funkcija mail() pošlje povpraševanje na podjetjev naslov, stranka pa prejme samodejni potrditveni odgovor. To pomeni nič ponavljajočih se stroškov in poln nadzor nad podatki (pomembno tudi z vidika GDPR).
Strani sem strukturiral ločeno, a jih strežem na čistih URL-jih (/storitve, /galerija, /kontakt …) prek .htaccess. Vse poti do sredstev sem nastavil absolutno glede na koren, da delujejo ne glede na obliko URL-ja.
Za vizualni jezik sem uporabil temno industrijsko paleto z oranžnim poudarkom in tipografijo Space Grotesk / Manrope — resno, "težko-industrijsko", a sodobno.
Velike fotografije in PDF-je shranim na strežnik in v e-pošto vključim povezavo, namesto da bi datoteke pripel kot priponke — s tem se izognem omejitvam velikosti in temu, da bi pošto označilo za neželeno. Na backendu preverim končnico in dejanski MIME-tip, omejim velikost na 8 MB, vsako datoteko shranim pod varno, naključno generiranim imenom in očistim uporabniški vnos.
PHP mail() je blokirajoč klic — vsako pošiljanje doda zakasnitev. Zato uporabniku takoj vrnem odgovor in zaprem povezavo (fastcgi_finish_request()), samodejni potrditveni odgovor stranki pa se pošlje v ozadju. Uporabnik tako ne čaka na dve zaporedni pošiljanji.
Dodal sem skrito "honeypot" polje za odvračanje botov in iz glav e-pošte odstranil znake za prelom vrstic (zaščita pred header-injection). Vsako povpraševanje se kot varnostna kopija zabeleži v dnevnik nad korenom spletne mape (ni javno dostopen) — če pošiljanje e-pošte spodleti, lead vseeno ni izgubljen.
Nastavil sem politiko predpomnjenja v .htaccess: HTML/CSS/JS se pri strežniku vedno preverijo (no-cache, must-revalidate), slike se predpomnijo za dan, pisave za leto. Tako so popravki kode vidni takoj po objavi, statična sredstva pa ostanejo hitra.
git push na main sproži GitHub Actions, ki prek FTP objavi na gostovanje v približno dveh minutah.